目錄:
1. 背景介紹
上回說到在家組裝了一台鴻蒙小車,但是,還不會玩,准備燒個鴻蒙系統體驗一下。《鴻蒙陪我(們)過大年~》
但是,折騰了一天發現,這個小車其實是已經內置鴻蒙系統了。
小車通電以后,顯示屏上會快速顯示:Hello Harmony,然后變成 Robot Car Stop。
如果按小車的按鍵1,小車就會自動向前走,同時顯示屏上顯示:trace
再多按幾次,顯示屏會出現“ultrasonic”字樣,但是我還沒有發現這個超聲波的作用。
經過我一番胡亂摸索,大概知道了各個模塊的基本功能。
其中,小車的左上角的模塊是主控模塊,插上Type-C線以后,可以對小車進行調試和供電,就不需要電池了。
小車已經就位,下一步,就是試着寫一個hello world了。
在51CTO的鴻蒙社區以及鴻蒙官網上找了好幾圈,發現還是連老師的資料最完整,最后折騰了一天,終於完成了第一個Hello World。
2. 參考文獻
作為一個沒有開發過南向設備應用的北向應用開發者,面對這么一個小車,是既興奮又懵逼的狀態。
好在51CTO的鴻蒙社區分享的開發者很多,而華為的鴻蒙開發者網站的資料也非常的全,尤其是連志安老師的鴻蒙設備開發的系列文章,讓我能夠摸着石頭過河,並最終實現一個小目標。
在此非常感謝。
對於鴻蒙設備開發的新新新手,推薦以下資料,建議詳細閱讀:
- 連老師《第1~2章 鴻蒙系統介紹 和 編譯環境搭建 持續更新 》
- 鴻蒙開發網站《HUAWEI DevEco Device Tool使用指南》
- 鴻蒙開發網站 《Hi3861搭建環境》
3. 調試筆記
接下來,我整理一下自己摸索的筆記,作為嵌入式開發0經驗的非專業設備開發者,有些名詞表述不專業,敬請見諒。
3.1. 環境搭建
目前鴻蒙設備的開發環境,可以分為2個部分:Windows調試環境,和Linux編譯環境。
其中,
- Linux環境負責編譯代碼,並生成鴻蒙的包。
- Windows環境負責連接設備,進行燒錄和調試。
特別注意,Linux環境不可少,因為目前只支持在Linux環境下編譯,不信邪,強行在Windows上編譯的結果就是:
3.2. Windows開發環境搭建
安裝開發工具
Windows環境需要的工具列表:
- Visual Studio Code
- Python v3.7/v3.8
- Node.js v12.0.0+
- hpm
- DevEco Device Tool
詳情可以參考鴻蒙開發者網站: 《Windows開發環境准備》
一些要點
- 1). 建議按照列表的順序安裝各個工具
- 2). Python只能是3.7 或者3.8,否則會導致DevEco Device Tool無法安裝
- 3). Node.js 需要 v12 以上
- 4). hpm安裝完畢以后,需要設置一個特殊權限,否則在執行的時候,會報錯“無法加載文件”
可以通過在命令行里用管理員執行 “set-executionpolicy remotesigned”來解決。
參考:《Windows 鴻蒙環境搭建 hpm 報錯:無法加載文件 hpm.ps1,因為在此系統上禁止運行腳本》
- 5). 打開VSCode,看到這個畫面,表示所需的工具安裝成功。
安裝USB驅動
用USB線將小車連接到電腦后,可以先到系統的設備里查看一下,是否能找到對應的設備。
如果出現了感嘆號,表示需要安裝相關的驅動。
參考開發者文檔《Hi3861系列開發板串口驅動安裝》
步驟:
- 1). 下載驅動
http://www.wch.cn/search?q=ch340g&t=downloads
- 2). 安裝
- 3). 檢查,在設備管理器里看到USB-SERIAL CH340,表示識別成功。
- 4). 在VSCode里檢查,DevEco Home -> Devices 可以看到跟設備管理器里一樣名字的設備,注意對應的COM口編號。
- 3.3. 安裝Linux編譯環境
這個可以參考 《Ubuntu開發環境准備》,從文檔里可以看到,所需的開發工具跟Windows是一致的。
我本來想自己裝一個Ubuntu,但是發現速度有點慢,就直接用了連老師給的虛擬機了。建議用百度網盤的虛擬機,這個已經預裝了samba服務。
百度網盤
鏈接:https://pan.baidu.com/s/163JxuvZux01Fd407_WbK-g
提取碼:bny6
連老師給的虛擬機是VMWare格式的,可以用VMWare的Player直接打開。
關於Linux虛擬機的詳情,具體的可以看連老師的文章,這里只列幾個要點:
- 0). 虛擬機的賬號是 harmony,密碼 123456
- 1). 使用VMWare Player打開虛擬機以后,需要安裝VMWare Tools才可以調整虛擬機窗口的大小。
- 2). 首次開機后,需要手動啟動samba服務,運行 "sudo service smbd start"
- 3). 開機后,運行 ifconfig -a 查看 ip
3.4. Windows連接Linux
利用已經安裝好的samba服務,Windows可以很方便的訪問Linux中的文件:
在文件瀏覽器,而不是IE瀏覽器的地址欄中,輸入 \\\\<linux 系統 ip>
或者
通過網上鄰居查找也可以。
通過在Windows的VSCode中打開Linux中的鴻蒙項目,就可以把Linux環境中編譯好的鴻蒙包,在Windows下燒錄到鴻蒙小車中。
另,連老師還很貼心地建議映射成網絡驅動器,比如我就把它映射成了Y盤。
3.5. 燒錄第一個鴻蒙系統
1). 打開鴻蒙項目
在Windows的VSCode中,打開Linux環境下的鴻蒙源碼目錄,在 harmony\code\code-1.0文件夾
如果提示這不是一個鴻蒙項目,選擇“繼續打開”,即可。
2). 配置項目
DevEco Home -> Projects -> Settings
配置好upload_port為剛剛在設備管理器看到的COM口,如果只連了一個鴻蒙設備,直接從列表里選中就可以了。
其他upload_protocol和upload_partitions沒什么可選的,按照截圖別放空就好。
記得保存Save。
然后點Open打開項目,留意左邊第二列的PROJECT TASKS,這是一系列快捷指令,接下去的操作要用到這些指令。
另外,這個地方,與鴻蒙開發者網站的截圖略有不同,我找了好久也沒有找到官網圖示的位置,好在不影響hello world。
3). 編譯Build
前邊說過,直接在Windows的VSCode里執行build,是不可以的。
連老師的這個虛擬機貌似是沒有裝VSCode的,但是支持從命令行進行編譯。
所以,編譯可以直接在Linux虛擬機上進行,也可以選擇在Windows上利用ssh連接到Linux來進行。
具體的做法是,
- 打開控制台
- 進入到項目目錄下
- 執行編譯命令
python build.py wifiiot
看到這段日志,表示編譯成功:
4). 燒錄
燒錄可以在Windows上進行,從剛剛的PROJECT TASKS中執行Upload指令即可。
出現Connecting, please reset device的日志時,在30秒內,按一下小車的系統復位鍵(RST):
如果動作太慢,燒錄指令就會失敗。否則,應該能看到日志繼續刷新,直到出現SUCCESS字樣,表示燒錄成功。
怎么知道燒錄成功了呢?
還記得小車顯示屏上顯示的文字嗎?
如果現在看不到了,那就表示你把原來自帶的鴻蒙系統給覆蓋了,說明燒錄成功了……
3.6. 編寫HelloWorld
但是,這還沒有完,因為我們還沒有寫HelloWorld。
參考:《開發Hi3861第二個示例程序》
1). 添加HelloWorld App目錄
切換到Explorer模式,查看文件列表。
在code-1.0/applications/sample/wifi-iot/app目錄下,創建一個helloworld目錄
2). 添加c代碼
創建一個hello_world.c文件,內容如下:
#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"
void HelloWorld(void)
{
printf("[DEMO] Hello world.\n");
}
SYS_RUN(HelloWorld);
3). 添加HelloWorld配置文件
創建一個BUILD.gn文件,內容如下:
static_library("helloworld") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
4). 添加HelloWorld作為應用啟動入口
修改 code-1.0/applications/sample/wifi-iot/app/BUILD.gn
import("//build/lite/config/component/lite_component.gni")
# 舊的
#lite_component("app") {
# features = [
# "startup",
# ]
#}
# 新的
lite_component("app") {
features = [
"helloworld:helloworld",
]
}
5). 重新編譯並燒錄
修改完,保存,重新編譯,並燒錄。
雖然我們嘗試在輸出hello world日志,但是,這個日志並不會出現在小車的顯示屏上,也不會直接出現在VSCode的Output里。
6). 查看Hello World
要想看到hello world的輸出,需要讀取串口的數據。
參考:《串口工具使用》
在VSCode的命令行里,按下Ctrl+T,然后選擇目標COM口序號,這里就一個COM,所以按下1
然后按下小車的系統復位鍵(RST),系統會重啟,然后就可以看到 Hello World了。
至此,Hello World的任務就完成了。
作者:IT男阿斌
想了解更多內容,請訪問: 51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com