用HarmonyOS點亮LED!

「來源: |51CTO技術棧 ID:blog51cto」

用HarmonyOS點亮LED!

Hi3861 模組的介紹

①外觀和基本功能

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

模組外觀圖:

用HarmonyOS點亮LED!

Hi3861 主控功能框架圖:

用HarmonyOS點亮LED!

Hi3861 原理圖:

用HarmonyOS點亮LED!

用HarmonyOS點亮LED!

Hi3861 開發環境的搭建

因為截至本文釋出,Linux 平臺下的開發工具不支援 Hi3861 的燒錄(且 Windows 平臺中的編譯環境比較難搭建),所以我們得使用 Windows 的工具來燒錄,Linux 平臺編譯。

Ubuntu20。04 來編譯原始碼,Windows10 透過網路從 Ubuntu 中下載二進位制檔案,並燒錄二進位制檔案到 Hi3861 中。

用HarmonyOS點亮LED!

①Ubuntu20.04 開發環境的搭建

可以在 Windows10 中使用 virtual box 虛擬機器軟體來安裝一個下載好的 Ubuntu20。04 映象,從而擁有 Ubuntu20。04 基本的開發環境。這裡忽略。

假設:

已有 Ubuntu20。04 系統

可以聯網

可以使用 ssh 連線

其空閒儲存空間(推薦)在 30G 以上

執行以下命令來搭建 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來配置環境變數

exportPATH=$PATH:~/work/tools/gcc_riscv32/bin

source ~/。bashrc

//檢查編譯鏈是否安裝好

$ riscv32-unknown-elf-gcc -v

。。。

gcc version7。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

進入原始碼根路徑,進行配置和編譯,“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 buildsuccess

[OHOS INFO] costtime: 0:00:37

$ ls out/hispark_pegasus/wifiiot_hispark_pegasus/ -alh

total 31M

drwxrwxr-x 7 henry henry 4。0K 9月 214:52 。

drwxrwxr-x 3 henry henry 4。0K 9月 214: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月 214: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月 214: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月 214:51 libs

-rw-rw-r—— 1 henry henry 37K 9月 2 14:52 。ninja_log

drwxrwxr-x 4 henry henry 4。0K 9月 214:51 NOTICE_FILE

drwx———— 12 henry henry 4。0K 9月 2 14:51 obj

drwxrwxr-x 3 henry henry 4。0K 9月 214:51 suites

-rw-rw-r—— 1 henry henry 34K 9月 2 14:51 toolchain。ninja

②Windows10 開發環境的搭建

如下表:

用HarmonyOS點亮LED!

安裝 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

問題:DevEco Device Tool安裝失敗:

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

解決:

退出了 360 安全衛士,關閉防毒軟體和所有其他不相關軟體:vscode,OpenJDK…

手動刪除 C:\Users\AppData\Local\deveco-device-tool-installer 和 C:\Users。deveco-device-tool 這兩個目錄

重新安裝

重啟 vscode 後,在左側功能圖示中有 deveco 的圖標出現,即表示 deveco 安裝成功

點亮 Hi3861 的 LED

Hi3861 的 gpio 功能列表如下圖:

用HarmonyOS點亮LED!

①首先我們應該找到 Hi3861 的原理圖,LED1 對應的是 GPIO09

根據這個原理圖,我們只要保持 J3 的跳冒是連線的,從 CPU 引過來的 GPIO09 保持低電平,那麼 LED1 就會點亮了。

用HarmonyOS點亮LED!

HarmonyOS 的 gpio 操作流程為:

用HarmonyOS點亮LED!

因為我們不是操作 gpio 來獲取/控制/響應 gpio 的中斷,所以只需要關心讀寫 gpio 的流程即可。

②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!

修改好後,我們就可以到原始碼的根目錄中使用“hb build”來編譯了。

注:“led_example”庫名稱是由 iothardware/BUILD。gn 來指定的。

用HarmonyOS點亮LED!

燒錄二進位制檔案到 Hi3861

①下載 Ubuntu 中的原始碼二進位制檔案到 Windows10 中

所有的生成檔案在:code-v1。1。2-LTS/out 目錄中。

我們使用 mobaxterm 工具:

https://mobaxterm。mobatek。net/download。html

ssh 訪問到我們的 Ubuntu20。04 後,就可以用其 sftp 功能下載 out 目錄到我們的 win10 的 download 目錄中。

②在 Windows10 中已經安裝好 deveco 工具的 vscode 開啟

一定要開啟包含 out 目錄的上一級目錄:如我們的下載目錄 downloads 資料夾。

直接可以作為一個專案開啟,選擇 framework 為:hb,平臺為:hi3861。

用HarmonyOS點亮LED!

③配置專案的下載資訊

連線好自己的 hi3861 模組,如果電腦沒有裝 ch340 串列埠驅動,一定別忘了裝。

用HarmonyOS點亮LED!

④點選燒錄

燒錄的過程中,會在 vscode 的終端提示重啟開始燒錄,請按下 hi3861 的 reset 鍵開始燒錄。

燒錄成功後,重新上電即可立即執行:

用HarmonyOS點亮LED!

⑤耶 - 布靈布靈 - 亮咯

如下圖:

用HarmonyOS點亮LED!

掃碼

報名鴻蒙直播課

一週年慶 抽獎活動

用HarmonyOS點亮LED!

關注鴻蒙技術社群訂閱號,在此公眾號回覆

“週年慶”

,抽鴻蒙新款

MatePad11

、價值 399、299 元的

鴻蒙盲盒

和 2000ml 健康

隨身杯

關注回覆“週年慶”抽獎