用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板 原创 精华

发布于 2021-9-7 16:40
浏览
11收藏

一、 Hi3861模组的介绍

1. 外观和基本功能

Hi3861开发板模组大小约2cm*5cm,是一款高度集成的2.4GHz WLAN SoC。
Hi3861芯片集成高性能32bit微处理器、拥有丰富的外设接口,芯片内置SRAM(Static Random Access Memory)和Flash,并支持在Flash上运行程序。
Hi3861模组有2MB FLASH,352KB RAM。但我们编写代码时,要注意对有限资源的合理利用。
Hi3861可以说是麻雀虽小,五脏俱全。Hi3861的外设接口包括(外部主晶振为40M或者24M):

  • 2个SPI(Synchronous Peripheral Interface)
  • 3个UART(Universal Asynchronous Receiver & Transmitter)
  • 2个I2C(The Inter-Integrated Circuit)
  • 6路PWM(Pulse Width Modulation)
  • 15个GPIO(General Purpose Input/Output)
  • 7路ADC(Analog to Digital Converter)
  • 1个I2S接口
  • 1个高速SDIO2.0(Secure Digital Input/Output)接口,最高时钟可达50MHz;

1.1 模组外观图:

用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

1.2 Hi3861主控功能框架图:

用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

1.3 Hi3861原理图

用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

二、Hi3861开发环境的搭建

1. 概览

因为截至本文发布,Linux平台下的开发工具不支持Hi3861的烧录(且Windows平台中的编译环境比较难搭建),所以我们得使用windows的工具来烧录,Linux平台编译。

  • Ubuntu20.04来编译源码
  • Windows10通过网络从Ubuntu中下载二进制文件,并烧录二进制文件到Hi3861中
    用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

2. Ubuntu20.04开发环境的搭建

可以在windows10中使用virtual box虚拟机软件来安装一个下载好的Ubuntu20.04镜像,从而拥有Ubuntu20.04基本的开发环境。这里忽略。
假设

  • 已有Ubuntu20.04系统;
  • 可以联网;
  • 可以使用ssh连接;
  • 其空闲存储空间(推荐)在30G以上。

2.1 执行以下命令来搭建Ubuntu20.04的环境

// Ubuntu20+
sudo apt update
sudo apt install -y vim gcc g++ flex bison texinfo make zlib* libffi-dev git git-lfs iputils-ping iproute2 net-tools
sudo apt install -y build-essential python3 python3-pip python3.8-venv scons python3-testresources
pip3 install scons ; scons -v
pip3 install kconfiglib
pip3 install pycryptodome
pip3 install six --upgrade --ignore-installed six
pip3 install ecdsa
// 安装hb
python3 -m pip install --user ohos-build

// 安装编译链gcc_riscv32整合包, // 或者自行下载gcc_riscv32各个组件 并且编译, N/A
wget  https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
// 使用~/.bashrc来配置环境变量
export PATH=$PATH:~/work/tools/gcc_riscv32/bin
source ~/.bashrc
//检查编译链是否安装好
$ riscv32-unknown-elf-gcc -v
...
gcc version 7.3.0 (GCC)


// downloads devicetool-linux-tool
wget  https://contentcenter-vali-drcn.dbankcdn.com/pvt_2/DeveloperAlliance_package_901_9/50/v3/3iXerz92RfqKxMyzEXHblg/devicetool-linux-tool-2.1.0.0.zip\?HW-CC-KV=V1\&HW-CC-Date=20210531T110021Z\&HW-CC-Expire=315360000\&HW-CC-Sign=24AFCA46B37541ED3A936186EEDF627CFD397B7C202FFEEF564D820897F75822


//install vscode, install node.js  & hpm
N/A

// unzip & install the tool
bash deveco-device-tool-2.2.0+285431.76f4090e.run
// 最后可能有个warning信息,我们按照提示来安装一个软件即可
sudo apt install authbind
...

// downloads the source codes
wget https://repo.huaweicloud.com/harmonyos/os/1.1.2/code-v1.1.2-LTS.tar.gz
tar -xvf code-v1.1.2-LTS.tar.gz

2.2 进入源代码根路径 进行配置和编译

“build success” 就意味着编译环境搭建成功。

$ cd code-v1.1.2-LTS
$ hb set
[OHOS INFO] Input code path: .
OHOS Which product do you need?  wifiiot_hispark_pegasus
$ hb build
...
[OHOS INFO] wifiiot_hispark_pegasus build success
[OHOS INFO] cost time: 0:00:37

$ ls out/hispark_pegasus/wifiiot_hispark_pegasus/ -alh
total 31M
drwxrwxr-x  7 henry henry 4.0K 9月   2 14:52 .
drwxrwxr-x  3 henry henry 4.0K 9月   2 14:51 ..
-rw-rw-r--  1 henry henry  462 9月   2 14:51 args.gn
-rw-rw-r--  1 henry henry  47K 9月   2 14:52 build.log
-rw-rw-r--  1 henry henry  26K 9月   2 14:51 build.ninja
-rw-rw-r--  1 henry henry 5.3K 9月   2 14:51 build.ninja.d
drwxrwxr-x  3 henry henry 4.0K 9月   2 14:51 gen
-rw-rw-r--  1 henry henry  24K 9月   2 14:52 Hi3861_boot_signed_B.bin
-rw-rw-r--  1 henry henry  24K 9月   2 14:52 Hi3861_boot_signed.bin
-rw-rw-r--  1 henry henry  15K 9月   2 14:52 Hi3861_loader_signed.bin
-rw-rw-r--  1 henry henry 1.2M 9月   2 14:52 Hi3861_wifiiot_app_allinone.bin
-rw-rw-r--  1 henry henry  22M 9月   2 14:52 Hi3861_wifiiot_app.asm
-rw-rw-r--  1 henry henry 1.2M 9月   2 14:52 Hi3861_wifiiot_app_burn.bin
-rw-rw-r--  1 henry henry  25K 9月   2 14:52 Hi3861_wifiiot_app_flash_boot_ota.bin
-rw-rw-r--  1 henry henry 3.5M 9月   2 14:52 Hi3861_wifiiot_app.map
-rw-rw-r--  1 henry henry 570K 9月   2 14:52 Hi3861_wifiiot_app_ota.bin
-rwxrwxr-x  1 henry henry 2.2M 9月   2 14:52 Hi3861_wifiiot_app.out
-rw-rw-r--  1 henry henry    8 9月   2 14:52 Hi3861_wifiiot_app_vercfg.bin
drwxrwxr-x  2 henry henry 4.0K 9月   2 14:51 libs
-rw-rw-r--  1 henry henry  37K 9月   2 14:52 .ninja_log
drwxrwxr-x  4 henry henry 4.0K 9月   2 14:51 NOTICE_FILE
drwx------ 12 henry henry 4.0K 9月   2 14:51 obj
drwxrwxr-x  3 henry henry 4.0K 9月   2 14:51 suites
-rw-rw-r--  1 henry henry  34K 9月   2 14:51 toolchain.ninja

3. Windows10开发环境的搭建

工具名称 用途说明 版本要求 获取渠道
Visual Studio Code 代码编辑工具 V1.53及以上 64位版本。<br>查看版本: windows-> cmd-> code --version https://code.visualstudio.com/Download
Python 编译构建工具 V3.7.4~V3.8.x 64位版本 推荐下载3.8.8:https://www.python.org/downloads/
Node.js 提供npm环境 v12.0.0及以上 64位版本 https://nodejs.org/zh-cn/download/
hpm 包管理工具 最新版 请参考安装hpm
DevEco Device Tool HarmonyOS源码的编译、烧录、调试插件工具 v2.2 Beta1 https://device.harmonyos.com/cn/ide#download 下载前,请使用华为开发者帐号登录,如未注册,请先注册华为开发者帐号。

3.1 安装hpm

// 建议将npm源配置为国内镜像,例如设置为华为云镜像源。
npm config set registry https://repo.huaweicloud.com/repository/npm/
// 打开命令行工具,执行如下命令安装最新版本hpm。
npm install -g @ohos/hpm-cli

//如果已安装hpm,可以执行命令升级hpm至最新版本。
npm update -g @ohos/hpm-cli

3.2 问题 - DevEco Device Tool安装失败:

“[Errno 13] Permission denied: ‘xxx\\.deveco-device-tool\\core\\tool_openlogic_openjdk_jre\\jre\\bin\\ucrtbase.dll’”

解决:

  • 退出了360安全卫士,关闭杀毒软件和所有其他不相关软件:vscode, OpenJDK…
  • 手动删除C:\Users<xxx>\AppData\Local\deveco-device-tool-installer和C:\Users<xxx>.deveco-device-tool这两个目录;
  • 重新安装
  • 重启vscode后,在左侧功能图标中有deveco的图标出现,即表示deveco安装成功

三、点亮Hi3861的LED

0. Hi3861的gpio功能列表

用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

1. 首先我们应该找到Hi3861的原理图,LED1对应的是GPIO09

根据这个原理图,我们只要保持J3的跳冒是连接的,从cpu引过来的GPIO09保持低电平,那么LED1就会点亮了。
用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区
HarmonyOS的gpio操作流程为:
用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区
因为我们不是操作gpio来获取/控制/响应gpio的中断,所以只需要关心读写gpio的流程即可。

2. HarmonyOS中提供了LED的demo, 可以供我们使用

code-v1.1.2-LTS/applications/sample/wifi-iot/app/iothardware/led_example.c

我们需要修改配置文件:app/BUILD.gn

添加相对路径"iothardware"下的库"led_example",中间以":"分隔开
用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区
修改好后,我们就可以到源码的根目录中使用"hb build"来编译了
注:"led_example"库名称是由iothardware/BUILD.gn来指定的
用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

四、烧录二进制文件到Hi3861

1. 下载Ubuntu中的源码二进制文件到windows10中

  • 所有的生成文件在:code-v1.1.2-LTS/out 目录中
  • 我们使用mobaxterm(https://mobaxterm.mobatek.net/download.html)工具,
  • ssh访问到我们的Ubuntu20.04后,就可以用其sftp功能下载out目录到我们的win10的download目录中.

2. 在windows10中已经安装好deveco工具的vscode打开

  • 一定要打开包含out目录的上一级目录:如我们的下载目录downloads文件夹
  • 直接可以作为一个项目打开
  • 选择framework为:hb
  • 平台为: hi3861

用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

3. 配置项目的下载信息

连接好自己的hi3861模组,如果电脑没有装ch340串口驱动,一定别忘了装
用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

4. 点击烧录

烧录的过程中,会在vscode的终端提示重启开始烧录,请按下hi3861的reset键开始烧录。
烧录成功后,重新上电即可立即运行。
用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

5. 耶 - 布灵布灵 - 亮咯

用HarmonyOS点亮LED - 基于RISC-V Hi3861开发板-开源基础软件社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2021-9-7 18:05:04修改
15
收藏 11
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐