HarmonyOS開發板試用之二Hi3861開發初探和環境搭建
Hi3861開發
上一篇大致``描述了收到51cto的HiSpark_Wi-Fi_IoT_Hi3861_CH340G開發板后的組裝過程,這一篇正式進入開發的初探。
注:相關設備來源于51CTO鴻蒙技術社區【開發板漂流計劃】提供
開發環境
我的開發編譯環境 mac + git + repo + vscode + docker
我的燒錄調試環境 window + HiBurn + 串口調試助手
開發環境的搭建還是有點難度,剛開始還是信心滿滿對著文檔各種操作,最終都以失敗告終。。。
最終走了一個自認為最便捷的方式docker + HiBurn和串口助手 (主要devicetools一條龍開發工具沒成功過),因為整個開發過程就是git拉取鴻蒙源碼,vscode中業務編碼,Ubuntu下編譯源碼成二進制,燒錄二進制到開發板,調試測試。
- docker環境,用來拉取鴻蒙源碼編譯的環境
- git環境,需要安裝git-lfs和repo工具
- ide開發工具編碼用
- HiBurn燒錄工具
- 串口調試助手調試用
獲取鴻蒙源碼
可以直接下載源碼開發編譯,但是本次從git拉取
1. 安裝python3.8
在python官網找到3.8版本安裝包
2. 安裝git和git-lfs
- brew install git
- brew install git-lfs
- #初始化git-lfs
- git lfs install

如果不安裝git-fls的話在后面拉取鴻蒙源碼的時候會失敗

3. 配置git和碼云公鑰
- #配置git
- git config --global user.name "yourname"
- git config --global user.email "your-email-address"
- git config --global credential.helper store
- #配置碼云ssh key就是將你電腦的公鑰保存到碼云
- ssh -T git@gitee.com

4. 安裝repo工具
- #如果沒有權限,可下載至其他目錄,并將其配置到環境變量中
- curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
- chmod a+x /usr/local/bin/repo
- pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
5. 獲取鴻蒙源碼
- mkdir harmonyOsDevice
- cd harmonyOsDevice
- repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
- repo sync -c
- #需要git開啟git-lfs
- repo forall -c 'git lfs pull'

編譯環境(采用官方docker鏡像包)
1. 安裝Docker for mac在docker官網下載
2. 獲取編譯環境的docker鏡像
- docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5
3. 在源碼根目錄運行編譯環境
- docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5
到此源碼和編譯環境已經準備完成(后面還有燒錄和調試環境)。下面開始運行個Hello world試試。。。
開發初探
1. 編業務代碼(hello world)
隨便找一個自己順手的編輯器,這里就用vscode吧,打開上面的源碼目錄harmonyOsDevice
在源碼./applications/sample/wifi-iot/app目錄下
創建my_first_app目錄并在其內創建
- hello_world.c業務代碼文件
- UILD.gn編譯腳本文件
hello_world.c文件內容
- #include <stdio.h>
- #include "ohos_init.h"
- #include "ohos_types.h"
- void HelloWorld(void)
- {
- printf("[DEMO] Hello world sxfenglei.\n");
- }
- SYS_RUN(HelloWorld);
UILD.gn文件內容
- static_library("myapp") {
- sources = [
- "hello_world.c"
- ]
- include_dirs = [
- "//utils/native/lite/include"
- ]
- }
最后修改./applications/sample/wifi-iot/app/UILD.gn文件的features數組(注意區別剛自己創建的UILD.gn文件)
- import("//build/lite/config/component/lite_component.gni")
- lite_component("app") {
- features = [
- #"startup",
- "my_first_app:myapp",
- ]
- }
2. 編譯源碼成二進制文件
進入docker環境下執行
- //設置環境
- hb set
- //指定源碼目錄為當前目錄
- .
- //編譯 完成后會在out目錄生成對應目錄和文件
- hb build -f

3.燒錄二進制文件到開發板
以上都是在mac下完成的下來的操作都在在windows上完成的
可以將編譯后的out目錄復制到windows下或者共享,我用的共享目錄;

安裝USB轉串口驅動

將HiSpark_Wi-Fi_IoT_Hi3861_CH340G通過連接到windows上并在設備管理中查看串口號

打開HiBurn燒錄(燒錄完成后一定要斷開)
連接上后點擊 reset按鍵便開始燒錄

4.運行查看調試
打開調試助手 按reset就可以運行的日志信息 就可以看到剛才寫的[demo] hello world sxfenglei.

5.控制WiFi版LED燈閃爍
上面輸出了日志下面在控制下板子LED試試
hello_world.c文件內容
- #include <stdio.h>
- #include "ohos_init.h"
- #include "cmsis_os2.h"
- #include "iot_gpio.h"
- #define LED_GPIO 9 //查閱開發板原理圖明確接線關系 LED與9號管腳相連
- static void LedTask(void *arg)
- {
- (void)arg;
- //GPIO管腳初始化
- IoTGpioInit(LED_GPIO);
- //配置9號管腳為輸出
- IoTGpioSetDir(LED_GPIO, IOT_GPIO_DIR_OUT);
- while (1)
- {
- //設置引腳輸出狀態
- IoTGpioSetOutputVal(LED_GPIO, 0);
- osDelay(50);
- IoTGpioSetOutputVal(LED_GPIO, 1);
- osDelay(50);
- }
- }
- static void LedEntry(void)
- {
- osThreadAttr_t attr = {0};
- attr.name = "LedTask";
- attr.stack_size = 512;
- attr.priority = 25;
- //創建線程 啟動任務
- if (NULL == osThreadNew((osThreadFunc_t)LedTask, NULL, &attr))
- {
- printf("[LedExample] Falied to create LedTask! By sxfenglei.\n");
- }
- return NULL;
- }
- SYS_RUN(LedEntry);
BUID.gn文件內容
- #定義myapp靜態庫
- static_library("myapp"){
- #靜態庫源碼
- sources = ["led.c"]
- #靜態庫包含的目錄
- include_dirs = [
- "//utils/native/lite/include",
- "//kernel/liteos_m/kal/cmsis",
- "//base/iot_hardware/peripheral/interfaces/kits",
- ]
- }

開發感受
對于新手來說開發環境的搭建還是有一定難度,安裝過device tool2 也安裝了device tool 3前前后后搞了快一周也沒搞成功(尷尬)能力限制了去體驗一條龍服務,等有空了在研究下。