声明:
1. 该系列学习笔记整理自BearPi社区以及网络资源
2. 阅读本系列笔记需要部分单片机、电子技术和C语言基础
3. 才疏学浅,若有谬误,敬请指正
目录
一、简述
二、代码开发环境
三、编译环境
四、烧录器
五、其他相关工具以及测试
开发环境其实包括三个部分:
1. 代码开发环境
2. 编译环境
3. 烧录器
其中比较麻烦的就只有编译环境了,OpenHarmony现在暂时不支持在windows环境下进行编译,所以我们需要一个linux系统的主机。不管是虚拟机还是租一个云主机都ok。
大致的环境示意图如下:
Linux主机通过网络连接window主机,win再通过数据线连接开发板。
代码开发环境其实没有太多的要求,我使用的是Visual Studio Code。安装一个C/C++插件就行。也可以装一个其他IDE或者文本编辑器。此处步骤略过。
首先需要一个Ubuntu16.04及以上64位系统版本,Shell使用bash。我选择使用VMware 装个虚拟机,这里推荐使用小熊派官方提供的镜像文件。
下载地址(百度云):https://pan.baidu.com/s/1T0Tcl3y48C1p5L6y-6HJNg
提取码: eusr
下载后解压到任意路径
在VMware中打开
选择OVF文件
选择虚拟机保存路径,硬盘空间得大于10G
大致几分钟之后导入完成,开启
打开桌面左上角的火狐浏览器输入百度网址试试网络是否正常,大概率是无网络
在VMware Workstation中,点击虚拟机
>> 设置
在网络适配器中,改成NAT 模式
,点击确定
重启一下虚拟机就完事儿了
网络现在是好了,开始下载bearpi的源码
在桌面右键之后选择打开终端
输入 cd /home/<用户名> 进入用户文件夹。没有修改过用户名的话是 cd /home/bearpi
这里cd是使终端操作位置切换至指定的文件夹 home/<用户名>是Ubuntu的主目录地址
然后在终端里输入 mkdir project && cd project 创建project文件夹并进入。这样等会儿下载的源码就会存放在这,当然你也可以在其他地方创建文件夹然后cd进入。
之后输入 hpm init -t default 对hpm工具进行初始化,成功会返回
“Your bundle will be created in the directory /home/bearpi/project.
Initialization finished.”
输入 hpm i @bearpi/bearpi_hm_nano 开始下载源码,开始有一些WARN提示不用在意,大概几分钟之后出现installed就完成了
在左侧快捷栏点击第二个图标打开文件夹,找到project文件夹进入
至此编译环境搭建就完成了,其实本来需要安装很多的工具
但是我们使用了小熊派官方提供的镜像虚拟机文件,所以已经预装好了不用搞那么麻烦
烧录一般是在windows平台进行,需要安装两个东西。
1. 开发板USB转串口驱动
2. HiBurn烧录器 类似stc-isp
让我们来理一理,现在我们需要在windows的IDE上进行代码开发,但是得把代码文件弄到linux下进行编译。不可能每次都把写好的代码文件复制过去,太麻瓜了。所以我们可以使用文件夹映射,把linux下的源码文件夹映射到win上,再用IDE打开代码进行编写就成了。
1. 下载并安装RaiDrive工具
2. 设置
先把RaiDrive设置成中文
3. 获取IP地址 ,如果显示为inet6 16进制的地址,说明你更改网络设置后没有重启虚拟机
4. 添加链接信息
确定
5. 确定之后在我的电脑里就可以找到一个V盘,我这里是X。映射成功
6. 在IDE内选择文件夹 X:/home/bearpi/project/
7. 查看applications/bearpi-HM_Nano/sample文件夹
sample内每一个子文件夹都是小熊派官方的示例代码
8. 创建helloworld项目
打开hello_world.c文件写入
#include
#include "ohos_init.h"
void Hello_World(void){
printf("Hello World!\r\n");
}
APP_FEATURE_INIT(Hello_World); //调用源码中的初始化函数,指定Hello_World函数为入口
打开BUILD.gn文件写入
static_library("myapp") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
这里的 static_library("myapp") {
指定业务模块的编译结果,为静态库文件myapp.a,根据实际情况填写
sources = ["hello_world.c"] 指定要编译的.c文件和路径,这里BUILD.gn和c文件在同一目录下不需要指定路径
include_dirs = [ "//utils/native/lite/include" ] 指定.c文件中#include导入的依赖文件.h所在路径
接下来需要打开另一个BUILD.gn文件,路径为sample/BUILD.gn
# Copyright (c) 2020 Nanjing Xiaoxiongpai Intelligent Technology Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
#"A1_kernal_thread:thread_example",
#"A2_kernel_timer:timer_example",
#"A3_kernel_event:event_example",
#"A4_kernel_mutex:mutex_example",
#"A5_kernel_semaphore:semaphore_example",
#"A6_kernel_message:message_example",
#"B1_basic_led_blink:led_example",
"B2_basic_button:button_example",
#"B3_basic_pwm_led:pwm_example",
#"B4_basic_adc:adc_example",
#"B5_basic_i2c_nfc:i2c_example",
#"B6_basic_uart:uart_example",
#"C1_e53_sf1_mq2:e53_sf1_example",
#"C2_e53_ia1_temp_humi_pls:e53_ia1_example",
#"C3_e53_sc1_pls:e53_sc1_example",
#"C4_e53_sc2_axis:e53_sc2_example",
#"C5_e53_is1_infrared:e53_is1_example",
#"D1_iot_wifi_ap:wifi_ap",
#"D2_iot_wifi_sta_connect:wifi_sta_connect",
#"D3_iot_udp_client:udp_client",
#"D4_iot_tcp_server:tcp_server",
#"D5_iot_mqtt:iot_mqtt",
#"D6_iot_cloud_oc:oc_mqtt",
#"D7_iot_cloud_onenet:onenet_mqtt",
#"D8_iot_cloud_oc_smoke:cloud_oc_smoke",
#"D9_iot_cloud_oc_light:cloud_oc_light",
#"D10_iot_cloud_oc_manhole_cover:cloud_oc_manhole_cover",
#"D11_iot_cloud_oc_infrared:cloud_oc_infrared",
#"D12_iot_cloud_oc_agriculture:cloud_oc_agriculture",
#"D13_iot_cloud_oc_gps:cloud_oc_gps",
]
}
将 "B2_basic_button:button_example", 注释掉
在features列表内写入"Hello_world:myapp",
记录加英文逗号
此处Hello_world为刚刚新建的项目要使用的BUILD.gn所在的文件夹,即项目文件夹
myapp指向项目BUILD.gn中static_library("myapp")
将以上所有文件按Ctrl+S保存
9. 远程编译
之后我们需要下载一个终端程序MobaXterm 方便命令Linux端编译以及串口调试
在MobaXterm中设置远程终端连接
此处IP设置为通过ifconfig获取的IP地址
输入用户名并回车,默认为bearpi
输入密码并回车,默认为bearpi,注意输入密码时不会显示
在弹出的界面中选择Yes保存用户信息,下次就不用输入密码了不过还是需要输入用户名的
输入 hpm dist
若显示BUILD SUCCES即为构建完成
10. 烧录程序
构建成功的输出文件在/home/bearpi/project/out/BearPi-HM_Nano/中
先使用数据线将开发板与电脑连接,在设备管理器中查看连接端口号,名字CH340的就是
若未显示CH340可能没有安装USB驱动
在Windows打开Hiburn工具,并点击Refresh
,在COM
中选择CH340的COM号
然后点击Setting
,并选择 Com settings
。在Com settings中设置Baud
为:921600
,点击确定
点击select file 选择映射硬盘中的文件X:/home/bearpi/project/out/BearPiHM_Nano/Hi3861_wifiiot_app_allinone.bin
勾选Auto burn然后点击connect,此时按钮变成disconnect
按下开发板上的复位按键开始烧录
烧录完成后Hiburn的输出栏会清空并输出Connecting...
点击Disconnect关闭与开发板的串口连接,一会儿要用
此时少部分长得帅的人可能要问了,程序是烧进去了,我的printf("helloworld")输出哪里看呢
这时还是要用到终端程序MobaXterm
打开MobaXterm,
点击:Session
、Serial
按钮
设置Seral port为 Hiburn 同一个串口
设置Speed为 115200
点击OK
如果显示Unable to open... 则刚刚Hiburn的connect没有关闭
设置完成后按下开发板复位按键,显示日志信息
至此开发环境搭建完成