本文介绍RISC-V架构海思Hi3861开发板,通过Linux开发环境运行OpenHarmony轻量化系统,下载测试网络例程的过程与步骤。
OpenHarmony操作系统分类
-
轻量系统(mini system)
面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备,硬件资源极其有限,支持的设备最小内存为128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的IOT总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。
-
小型系统(small system)
面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为1MiB,可以提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行领域的行车记录仪等。
-
标准系统(standard system)
面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为128MiB,可以提供增强的交互能力、3D GPU以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。
BearPi-HM_Nano开发板

BearPi-HM_Nano开发板是一块专门为HarmonyOS设计的HarmonyOS开发板,板载高度集成的2.4GHz WLAN SoC芯片Hi3861,并板载NFC电路及标准的E53接口,标准的E53接口可扩展智能加湿器、智能台灯、智能安防、智能烟感等案例。
规格类型 | 规格清单 |
---|---|
CPU子系统 | * 高性能 32bit微处理器,最大工作频率160MHz * 内嵌SRAM 352KB、ROM 288KB * 内嵌 2MB Flash |
外围接口 | * 1个SDIO接口、2个SPI接口、2个I2C接口、3个UART接口、15个GPIO接口、7路ADC输入、6路PWM、1个I2S接口(注:上述接口通过复用实现) * 外部主晶体频率40M或24M |
1、开发环境
-
Linux编译服务器(可以使用windows虚拟机)
-
Windows工作台(主机电脑)
-
BearPi-HM_Nano开发板
-
USB Type-C线(Windows工作台通过USB与BearPi-HM_Nano开发板组连接)
开发工具软件可以小熊源官方网盘下载: https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234
Linux开发工具
开发工具 | 用途 | 获取途径 |
---|---|---|
交叉编译器gcc_riscv32 | 交叉编译工具 | https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234提取码:1234 |
Python3.7+ | 编译构建工具 | https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz |
SCons3.0.4+ | 编译构建工具 | 通过互联网获取 |
bash | 命令处理器 | 通过互联网获取 |
build-essential | 编译依赖的基础软件包 | 通过互联网获取 |
gn | 产生ninja编译脚本 | https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234提取码:1234 |
ninja | 执行ninja编译脚本 | https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234提取码:1234 |
Windows开发工具
开发工具 | 用途 | 获取途径 |
---|---|---|
Visual Studio Code | 代码编辑工具。 | https://code.visualstudio.com/ |
MobaXterm、PuTTY或其他超级终端(选其一) | 远程连接Linux编译服务器,连接模组串口工具。 | 通过互联网获取(如:https://mobaxterm.mobatek.net/) |
CH341SER.EXE | USB转串口驱动。 | http://www.wch.cn/search?q=ch340g&t=downloads |
Hiburn烧录工具 | 代码烧录工具。 | https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234密码:1234 |
2、Linux开发环境安装
安装Python环境
输入命令"python3 --version",查看Python版本号。需使用python3.7以上版本,否则请按以下步骤执行,以python3.7为例:
sudo apt-get install python3.7
cd /usr/bin && sudo rm python && sudo ln -s /usr/bin/python3.7 python && python --version
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install setuptools
sudo pip3 install kconfiglib
sudo pip3 install pycryptodome
sudo pip3 install six --upgrade --ignore-installed six
sudo pip3 install ecdsa
安装scons
sudo apt-get install scons -y
安装gn
-
打开Linux编译服务器终端。
-
下载gn工具:https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234 提取码:1234
-
解压gn安装包至~/gn路径下:"tar -xvf gn.1523.tar -C ~/"。
-
设置环境变量:"vim ~/.bashrc", 新增:"export PATH=~/gn:$PATH"。
-
生效环境变量:"source ~/.bashrc"。
安装ninja
-
打开Linux编译服务器终端
-
下载ninja工具:https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234 提取码:1234
-
解压ninja安装包至~/ninja路径下:"tar -xvf ninja.1.9.0.tar -C ~/"。
-
设置环境变量:"vim ~/.bashrc", 新增:"export PATH=~/ninja:$PATH"。
-
生效环境变量:"source ~/.bashrc"。
安装gcc_riscv32(WLAN模组类编译工具链)
须知: Hi3861平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,会导致商业分发时被GPL V3污染。
-
打开Linux编译服务器终端。
-
下载gcc_riscv32工具:https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234 提取码:1234
-
解压gcc_riscv32安装包至/opt/gcc_riscv32路径下:"tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~/"。
-
设置环境变量:"vim ~/.bashrc",新增:"export PATH=~/gcc_riscv32/bin:$PATH"。
-
生效环境变量:"source ~/.bashrc"。
-
Shell命令行中输入"riscv32-unknown-elf-gcc -v",如果能正确显示编译器版本号,表明编译器安装成功。
3、下载源码
git clone https://gitee.com/bearpi/bearpi-hm_nano.git -b master

topolo@topolo-PC:~/hi3861-OH_dev$ tree -L 2
.
└── bearpi-hm_nano
├── applications
├── base
├── build
├── build.py -> build/lite/build.py
├── bundle.json
├── domains
├── drivers
├── foundation
├── kernel
├── LICENSE
├── out
├── prebuilts
├── README.md
├── test
├── third_party
├── utils
└── vendor
4、编译程序
这里以板卡官方的TCP-Server服务器示例程序为编译对象进行测试。
修改bearpi-hm_nano/applications/BearPi/BearPi-HM_Nano/sample/D4_iot_tcp_server目录下的 tcp_server_demo.c文件。
//连接Wifi
WifiConnect("wifi-name", "wifi-password");//修改wifi名称与密码
修改 applications\BearPi\BearPi-HM_Nano\sample
路径下 BUILD.gn 文件,指定 tcp_server
参与编译。
tony@tony-VirtualBox:~/lite-os-dev/bearpi-hm_nano/applications/BearPi/BearPi-HM_Nano/sample$ vim BUILD.gn
修改内容如下:
...
#"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",
...
返回到bearpi-hm_nano源码的根目录进行编译。编译程序后,复制bin文件到windows系统进行下载。
python build.py BearPi-HM_Nano
sudo cp out/BearPi-HM_Nano/Hi3861_wifiiot_app_allinone.bin ~/win_dir/
编译输出结果:
-------------output/bin/Hi3861_wifiiot_app_ota.bin image info print end--------------
< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >
BUILD SUCCESS
< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >
See build log from: /home/tony/lite-os-dev/bearpi-hm_nano/vendor/hisi/hi3861/hi3861/build/build_tmp/logs/build_kernel.log
[199/199] STAMP obj/vendor/hisi/hi3861/hi3861/run_wifiiot_scons.stamp
ohos BearPi-HM_Nano build success!
5、下载程序
开发板通过type-c线连接电脑,设备管理器中会出现USB串口设备USB-SERIAL CH340(COM6),需要在电脑中先安装ch340的驱动程序。

打开下载HiBurn下载软件,通过下述步骤烧录代码。
1、选择串口com6(要根据自已电脑串口号选择),点击"connect"连接
2、"Select file"选择电脑中的Hi3861_wifiiot_app_allinone.bin下载文件,选择好后文件列表中会出现3个下载文件
3、勾选"Select all","Auto burn"选项
4、按下开发板上的"reset"按键,开始下载程序(约1-2分钟)
5、下载完成后,点击"disconnect"连接,断开串口
6、再按下开发板上的"reset"按键,重启开发板运行新程序
7、通过串口调试程序连接开发板,可查看开发板运行调试信息
HiBurn串口设置:

HiBurn下载bin文件:

6、运行程序
示例代码编译烧录代码后,按下开发板的RESET按键,通过串口助手查看日志,会打印模块的本地IP,并开始准备获取客户端的请求链接。
BearPi串口调试输出信息:

Windows网络调试工具,连接到bearPi板卡分配的wifi地址IP 192.168.199.142。在发送区输入发送字符,串口端就会显示服务器程序接收到的内容。
