用HarmonyOS點亮LED - 基于RISC-V Hi3861開發(fā)板
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
一、 Hi3861模組的介紹
1. 外觀和基本功能
Hi3861開發(fā)板模組大小約2cm*5cm,是一款高度集成的2.4GHz WLAN SoC。
Hi3861芯片集成高性能32bit微處理器、擁有豐富的外設接口,芯片內(nèi)置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 模組外觀圖:

1.2 Hi3861主控功能框架圖:

1.3 Hi3861原理圖


二、Hi3861開發(fā)環(huán)境的搭建
1. 概覽
因為截至本文發(fā)布,Linux平臺下的開發(fā)工具不支持Hi3861的燒錄(且Windows平臺中的編譯環(huán)境比較難搭建),所以我們得使用windows的工具來燒錄,Linux平臺編譯。
- Ubuntu20.04來編譯源碼
 - Windows10通過網(wǎng)絡從Ubuntu中下載二進制文件,并燒錄二進制文件到Hi3861中
 

2. Ubuntu20.04開發(fā)環(huán)境的搭建
可以在windows10中使用virtual box虛擬機軟件來安裝一個下載好的Ubuntu20.04鏡像,從而擁有Ubuntu20.04基本的開發(fā)環(huán)境。這里忽略。
假設
- 已有Ubuntu20.04系統(tǒng);
 - 可以聯(lián)網(wǎng);
 - 可以使用ssh連接;
 - 其空閑存儲空間(推薦)在30G以上。
 
2.1 執(zhí)行以下命令來搭建Ubuntu20.04的環(huán)境
- // 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來配置環(huán)境變量
 - 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” 就意味著編譯環(huán)境搭建成功。
- $ 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開發(fā)環(huán)境的搭建
3.1 安裝hpm
- // 建議將npm源配置為國內(nèi)鏡像,例如設置為華為云鏡像源。
 - npm config set registry https://repo.huaweicloud.com/repository/npm/
 - // 打開命令行工具,執(zhí)行如下命令安裝最新版本hpm。
 - npm install -g @ohos/hpm-cli
 - //如果已安裝hpm,可以執(zhí)行命令升級hpm至最新版本。
 - npm update -g @ohos/hpm-cli
 
3.2 問題 - DevEco Device Tool安裝失?。?/h3>
“[Errno 13] Permission denied: ‘xxx\\.deveco-device-tool\\core\\tool_openlogic_openjdk_jre\\jre\\bin\\ucrtbase.dll’”
解決:
- 退出了360安全衛(wèi)士,關(guān)閉殺毒軟件和所有其他不相關(guān)軟件:vscode, OpenJDK…
 - 手動刪除C:\Users
\AppData\Local\deveco-device-tool-installer和C:\Users .deveco-device-tool這兩個目錄;  - 重新安裝
 - 重啟vscode后,在左側(cè)功能圖標中有deveco的圖標出現(xiàn),即表示deveco安裝成功
 
三、點亮Hi3861的LED
0. Hi3861的gpio功能列表

1. 首先我們應該找到Hi3861的原理圖,LED1對應的是GPIO09
根據(jù)這個原理圖,我們只要保持J3的跳冒是連接的,從cpu引過來的GPIO09保持低電平,那么LED1就會點亮了。

HarmonyOS的gpio操作流程為:

因為我們不是操作gpio來獲取/控制/響應gpio的中斷,所以只需要關(guān)心讀寫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",中間以":"分隔開

修改好后,我們就可以到源碼的根目錄中使用"hb build"來編譯了
注:"led_example"庫名稱是由iothardware/BUILD.gn來指定的

四、燒錄二進制文件到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中已經(jīng)安裝好deveco工具的vscode打開
- 一定要打開包含out目錄的上一級目錄:如我們的下載目錄downloads文件夾
 - 直接可以作為一個項目打開
 - 選擇framework為:hb
 - 平臺為: hi3861
 

3. 配置項目的下載信息
連接好自己的hi3861模組,如果電腦沒有裝ch340串口驅(qū)動,一定別忘了裝。
4. 點擊燒錄
燒錄的過程中,會在vscode的終端提示重啟開始燒錄,請按下hi3861的reset鍵開始燒錄。
燒錄成功后,重新上電即可立即運行。

5. 耶 - 布靈布靈 - 亮咯

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)


















 
 
 






 
 
 
 