当前位置: 首页 > news >正文

OpenHarmony轻量系统--BearPi-Nano开发板网络程序测试

本文介绍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 --versionsudo 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
  1. 打开Linux编译服务器终端。

  2. 下载gn工具:https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234 提取码:1234

  3. 解压gn安装包至~/gn路径下:"tar -xvf gn.1523.tar -C ~/"。

  4. 设置环境变量:"vim ~/.bashrc", 新增:"export PATH=~/gn:$PATH"。

  5. 生效环境变量:"source ~/.bashrc"。

安装ninja
  1. 打开Linux编译服务器终端

  2. 下载ninja工具:https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234 提取码:1234

  3. 解压ninja安装包至~/ninja路径下:"tar -xvf ninja.1.9.0.tar -C ~/"。

  4. 设置环境变量:"vim ~/.bashrc", 新增:"export PATH=~/ninja:$PATH"。

  5. 生效环境变量:"source ~/.bashrc"。

安装gcc_riscv32(WLAN模组类编译工具链)

须知: Hi3861平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,会导致商业分发时被GPL V3污染。

  1. 打开Linux编译服务器终端。

  2. 下载gcc_riscv32工具:https://pan.baidu.com/s/1vSpPWvIhL8wCVGnEOjXS7g?pwd=1234 提取码:1234

  3. 解压gcc_riscv32安装包至/opt/gcc_riscv32路径下:"tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~/"。

  4. 设置环境变量:"vim ~/.bashrc",新增:"export PATH=~/gcc_riscv32/bin:$PATH"。

  5. 生效环境变量:"source ~/.bashrc"。

  6. 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文件。

  //连接WifiWifiConnect("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_Nanosudo 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。在发送区输入发送字符,串口端就会显示服务器程序接收到的内容。

相关文章:

  • 常见排序算法及其java实现
  • Redis缓存穿透、雪崩、击穿的解决方案?
  • 基于OpenCV中的图像拼接方法详解
  • Python----神经网络(《Searching for MobileNetV3》论文概括和MobileNetV3网络)
  • 前端安全:XSS、CSRF 防御与最佳实践
  • 【漫话机器学习系列】259.神经网络参数的初始化(Initialization Of Neural Network Parameters)
  • AI与机器学习深度集成:从设备端能力爆发到开发工具智能化
  • C++笔记-AVL树(包括单旋和双旋等)
  • 比亚迪固态电池突破:王传福的技术哲学与产业重构|创客匠人热点评述
  • 第29节:现代CNN架构-Inception系列模型
  • 深度学习中的查全率与查准率:如何实现有效权衡
  • 在RAG中 如何提高向量搜索的准确性?
  • 视频编解码学习十二之Android疑点
  • openfeign 拦截器实现微服务上下文打通
  • 【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示
  • react中安装依赖时的问题 【集合】
  • FPGA:Xilinx Kintex 7实现DDR3 SDRAM读写
  • b站视频如何下载到电脑——Best Video下载器
  • 昆士兰科技大学无人机自主导航探索新框架!UAVNav:GNSS拒止与视觉受限环境中的无人机导航与目标检测
  • 算法第十八天|530. 二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
  • 国家卫生健康委通报关于肖某引发舆情事件调查处置进展情况
  • 农行回应“病重老人被要求亲自取钱在银行去世”:全力配合公安机关调查
  • “养胃骗局”大公开,真正有用的方法究竟是?
  • 泰山、华海、中路等山东险企综合成本率均超100%,承保业务均亏损
  • 科技部等七部门:优先支持取得关键核心技术突破的科技型企业上市融资
  • 乌总统:若与普京会谈,全面停火和交换战俘是主要议题