用鴻蒙開發(fā)AI應(yīng)用(三)軟件篇
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz
前言
上一篇,我們在 Win10 上用虛擬機(jī)安裝了 Ubuntu,并設(shè)置了文件共享。這一篇,在此基礎(chǔ)上編譯鴻蒙os的源碼,并進(jìn)行設(shè)備燒錄。
HarmonyOS 簡介
1. 系統(tǒng)定義
HarmonyOS是一款“面向未來”、面向全場景(移動辦公、運(yùn)動健康、社交通信、媒體娛樂等)的分布式操作系統(tǒng)。在傳統(tǒng)的單設(shè)備系統(tǒng)能力的基礎(chǔ)上,HarmonyOS提出了基于同一套系統(tǒng)能力、適配多種終端形態(tài)的分布式理念,能夠支持多種終端設(shè)備。
2. 技術(shù)架構(gòu)
HarmonyOS整體遵從分層設(shè)計,從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層。系統(tǒng)功能按照“系統(tǒng) > 子系統(tǒng) > 功能/模塊”逐級展開,在多設(shè)備部署場景下,支持根據(jù)實際需求裁剪某些非必要的子系統(tǒng)或功能/模塊。

這次開源的內(nèi)核僅包含HarmonyOS微內(nèi)核的部分,Linux內(nèi)核要等下一個版本。
3. 分布式軟總線
分布式軟總線是多種終端設(shè)備的統(tǒng)一基座,為設(shè)備之間的互聯(lián)互通提供了統(tǒng)一的分布式通信能力,能夠快速發(fā)現(xiàn)并連接設(shè)備,高效地分發(fā)任務(wù)和傳輸數(shù)據(jù)。
4. 分布式設(shè)備虛擬化
分布式設(shè)備虛擬化平臺可以實現(xiàn)不同設(shè)備的資源融合、設(shè)備管理、數(shù)據(jù)處理,多種設(shè)備共同形成一個超級虛擬終端。針對不同類型的任務(wù),為用戶匹配并選擇能力合適的執(zhí)行硬件,讓業(yè)務(wù)連續(xù)地在不同設(shè)備間流轉(zhuǎn),充分發(fā)揮不同設(shè)備的資源優(yōu)勢。

主要特性還是分布式架構(gòu)和設(shè)備虛擬化技術(shù),更詳細(xì)的資料,參考官網(wǎng)描述
https://device.harmonyos.com/cn/docs/start/learn/oem_des_define-0000001055232642
DevEco Device Tool(windows下)
官網(wǎng)下載Visual Studio Code軟件包,要求為1.45.1及以上版本。
1. 工具簡介
HUAWEI DevEco Device Tool(以下簡稱DevEco Device Tool)是HarmonyOS面向智能設(shè)備開發(fā)者提供的一站式集成開發(fā)環(huán)境,支持HarmonyOS的組件按需定制,支持代碼編輯、燒錄和調(diào)試等功能,支持C/C++語言,以插件的形式部署在Visual Studio Code上。該工具具有以下特點(diǎn):
DevEco Device Tool以Visual Studio Code插件形式提供,體積小巧。
支持代碼查找、代碼高亮、代碼自動補(bǔ)齊、代碼輸入提示、代碼檢查等,開發(fā)者可以輕松、高效編碼。
支持多種類型開發(fā)板,包括ARM架構(gòu)的Hi3516/Hi3518系列和RISC-V架構(gòu)的Hi3861系列開發(fā)板,提供一鍵式的燒錄和調(diào)試GUI界面。
支持單步調(diào)試能力和查看內(nèi)存、變量、調(diào)用棧、寄存器、匯編等調(diào)試信息。
2. 安裝 Visual Studio Code
https://code.visualstudio.com/

懶得下載的,在文末網(wǎng)盤里也能獲取最新版本的安裝包。
3. 安裝Node.js
官網(wǎng)下載鏈接,請選擇LTS版本12.0.0及以上,Windows 64位對應(yīng)的軟件包。
https://nodejs.org/en/download/

安裝完畢,在“此電腦 > 屬性 > 高級系統(tǒng)設(shè)置 > 高級 > 環(huán)境變量 >系統(tǒng)變量”中,新增NODE_PATH變量,值為:C:\Users\{userName}\AppData\Roaming\npm\node_modules,其中userName請?zhí)鎿Q為實際的用戶名稱。

4. 安裝JDK
下載并安裝JDK,版本要求為:1.8版本。
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

下載完成后,安裝 jdk-8u271-windows-x64.exe即可。
5. 安裝hpm
基于 node.js ,全局模式安裝腳手架
- npm install -g @ohos/hpm-cli
測試安裝是否成功
- hpm -V
6. 安裝DevEco Device Tool插件
如果您已經(jīng)安裝過DevEco Device Tool 插件,在您安裝新版本前,請先手動將已安裝的DevEco Device Tool 插件卸載后再按照如下步驟進(jìn)行安裝。

在產(chǎn)品頁下載工具插件
https://device.harmonyos.com/cn/ide

采用從本地磁盤安裝方式,安裝DevEco Device Tool。

7. 安裝C/C++插件
HarmonysOS設(shè)備開發(fā)采用C/C++語言,Visual Studio Code工具對C/C++語言的支持插件非常豐富,可以安裝“C/C++”插件來實現(xiàn)C/C++代碼智能提示、代碼高亮、格式化等功能,幫助您更高效、便利的開發(fā)更規(guī)范和優(yōu)美的代碼。
在Visual Studio Code的插件市場,輸入“C/C++”,然后點(diǎn)擊“Install”。

獲取源碼(切換到ubuntu)
官網(wǎng)提供了4種方式,這里我們采用從代碼倉庫獲取,進(jìn)入虛擬機(jī)的 ubuntu 系統(tǒng)。
1. 將Linux shell改為bash
查看shell是否為bash,在終端運(yùn)行如下命令
- ls -l /bin/sh
如果顯示為“/bin/sh -> bash”則為正常,否則請按以下方式修改:
在終端運(yùn)行如下命令,然后選擇 no。
- sudo dpkg-reconfigure dash
2. 安裝ssh server (可選)
如果要通過ssh對外提供鏈接的話,可以安裝ssh服務(wù)
- sudo apt-get install openssh-server
其余相關(guān)命令
- # 查看ssh 服務(wù)
- sudo ps -e | grep ssh
- # 開啟服務(wù)
- sudo /etc/init.d/ssh start
- # 查看服務(wù)狀態(tài)
- sudo service ssh status
- # 關(guān)閉服務(wù)
- sudo service ssh stop
- # 重啟服務(wù)
- sudo service ssh restart
這時其他電腦就能通過 ssh 命令來訪問 ubuntu 了,如果喜歡的話,也可以安裝putty-64bit-0.74-installer.msi來連接。

3. 配置 python 環(huán)境
Ubuntu 20.04.1 默認(rèn)已經(jīng)帶了 python3.8
- which python
- /usr/bin/python3.8
建立軟鏈接,指向 python
- cd /usr/bin
- sudo ln -s /usr/bin/python3.8 python && python --version
4. 安裝并升級Python包管理工具(pip3)
- sudo apt-get install python3-setuptools python3-pip -y
- sudo pip3 install --upgrade pip
配置 pip 換源,新建 ~/.pip/pip.conf ,寫入清華源
- [global]
- index-url = https://pypi.tuna.tsinghua.edu.cn/simple
安裝python模塊setuptools
- pip3 install setuptools
安裝GUI menuconfig工具(Kconfiglib),建議安裝Kconfiglib 13.2.0+版本
- sudo pip3 install kconfiglib
5. 安裝文件打包工具
- sudo apt-get install dosfstools mtools mtd-utils
6. 下載、配置編譯工具鏈
- mkdir -p ~/harmony/tools && cd ~/harmony/tools
- # 下載gn/ninja/LLVM/hc-gen包:
- URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler
- wget $URL_PREFIX/gn/1523/linux/gn.1523.tar
- wget $URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar
- wget $URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar
- wget $URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
- # 解壓gn/ninja/LLVM/hc-gen包:
- tar -C ~/harmony/tools/ -xvf gn.1523.tar
- tar -C ~/harmony/tools/ -xvf ninja.1.9.0.tar
- tar -C ~/harmony/tools/ -xvf llvm-linux-9.0.0-34042.tar
- tar -C ~/harmony/tools/ -xvf hc-gen-0.65-linux.tar
- # 向 ~/.bashrc 中追加gn/ninja/LLVM/hc-gen路徑配置:
- cat <> ~/.bashrc
- export PATH=~/harmony/tools/gn:\$PATH
- export PATH=~/harmony/tools/ninja:\$PATH
- export PATH=~/harmony/tools/llvm/bin:\$PATH
- export PATH=~/harmony/tools/hc-gen:\$PATH
- EOF
- # 生效環(huán)境變量
- source ~/.bashrc
7. 安裝虛擬環(huán)境
- sudo pip3 install -U virtualenv
- virtualenv -p python3 ~/my_envs/harmonyos
- source ~/my_envs/harmonyos/bin/activate
- pip install requests # 后續(xù)repo需要
8. 配置 repo 工具
- sudo apt install curl
- curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/harmony/tools/repo
- chmod +x ~/harmony/tools/repo
- echo 'export PATH=~/harmony/tools:$PATH' >> ~/.bashrc
- source ~/.bashrc
9. 下載Harmony OS源碼
- mkdir -p ~/harmony/openharmony && cd ~/harmony/openharmony
- sudo apt install git
- # 配置用戶信息
- git config --global user.name "yourname"
- git config --global user.email "your-email-address"
- git config --global credential.helper store
- repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
- repo sync -c # 同步遠(yuǎn)程倉
稍等一會兒,源碼倉的代碼就同步到 openharmony目錄下了。
10. 編譯源碼
- python build.py ipcamera_hi3516dv300
稍微等待一會兒,編譯時間取決于虛擬機(jī)的資源,如果太慢可以多分配一些。詳細(xì)方法可以參照上一篇文章所述。

同樣根據(jù)用鴻蒙開發(fā)AI應(yīng)用(二)系統(tǒng)篇里的方法,將 ~/harmony共享給 Win10系統(tǒng)來訪問。
燒錄程序(切換回windows)
1. 映射網(wǎng)絡(luò)驅(qū)動器
將 ubuntu 里共享的源碼目錄,映射成網(wǎng)絡(luò)驅(qū)動器

2. 導(dǎo)入源碼
HarmonyOS暫不支持Windows系統(tǒng)源碼,請從映射的Linux服務(wù)器的共享路徑,導(dǎo)入源碼。

3. 配置工程
導(dǎo)入工程源碼文件后,請對工程進(jìn)行配置,如工程燒錄和調(diào)試依賴的工具等信息。
點(diǎn)擊底部工具欄中的“Board”按鈕,選擇對應(yīng)開發(fā)板的配置模板,例如:Hi3516DV300。

4. 安裝燒錄依賴工具
網(wǎng)絡(luò)燒錄ftp工具
- npm install -g tftp
串口燒錄工具
- npm install -g serialport
- npm install -g @serialport/parser-readline

usb 燒錄工具
- npm install -g usb
燒錄后 crc 校驗工具
- npm install -g crc
5. 安裝串口驅(qū)動
PL-2303 的驅(qū)動文件,USB-to-Serial Comm Port.exe

插上串口線和網(wǎng)線,

在設(shè)備管理器中,可以找到對應(yīng)的串口號(COM4)

6. 串口調(diào)試
點(diǎn)擊底部串口,可進(jìn)行串口連接,用命令行進(jìn)行設(shè)備配置。你也可以用 SSCOM這類傳統(tǒng)串口調(diào)試工具來測試。

7. 插件網(wǎng)絡(luò)方式燒錄
硬件連接方式如下圖所示,這里我們的 Linux 編譯服務(wù)器為虛擬機(jī)形式。

7.1 查詢 IP 地址
ubuntu的ip地址采用ifconfig 查詢,映射網(wǎng)絡(luò)驅(qū)動器用;

windows的ip地址采用ipconfig 查詢,燒錄時需要用到;

7.2 配置串口
打開 vscode,點(diǎn)擊 配置-燒錄,選擇燒錄方式為 network;選擇對應(yīng)的串口號(這里是COM4)

7.3 配置目標(biāo)板網(wǎng)絡(luò)
Hi3516DV300的ip地址,可以設(shè)置到同網(wǎng)段下未使用的地址,最末段取 2-254 均可(這里58除外)。

7.4 配置存儲器類型
根據(jù)之前的硬件定義,Hi3516DV300 存儲器類型設(shè)置為 emmc

7.5 配置文件和寫入地址
在之前編譯生成的文件夾中找到以下文件,按下列表格進(jìn)行配置
- Z:\openharmony\out\ipcamera_hi3516dv300
點(diǎn)擊保存按鈕,保存設(shè)置。
7.6 運(yùn)行燒錄命令
在DevEco Device Tool中,點(diǎn)擊燒錄后的箭頭圖標(biāo)。插件會執(zhí)行 upload命令進(jìn)行燒錄。

7.7 設(shè)置腳本權(quán)限
如果遇到這個錯誤信息

在系統(tǒng)中搜索框 輸入 Windows PowerShell
點(diǎn)擊“管理員身份運(yùn)行”
輸入“ set-ExecutionPolicy RemoteSigned”回車
根據(jù)提示,輸入A,回車

7.8 設(shè)置防火墻
如果網(wǎng)絡(luò)地址完全正確(仔細(xì)查看setenv命令參數(shù)),遇到 crc32 校驗錯。

則需設(shè)置防火墻通行
放行 vscode 應(yīng)用程序
放行 node.js 程序 (這個特別容易遺漏)

7.9 燒錄成功
一切順利的話,看到提示重啟開發(fā)板,就能寫入成功,網(wǎng)絡(luò)燒錄速度還是非??斓摹?/p>

8. HiTool 燒錄(推薦)
采用 HiTool 工具來燒片就不需要安裝node.js 以及前面一堆依賴包了,相對來說會更為方便。
解壓Hi3516-HiTool.zip,直接運(yùn)行HiTool.exe即可。
8.1 選擇芯片
菜單芯片-切換芯片-Hi3516DV300

8.2 關(guān)閉 tftp 加速
菜單窗口-首選項-TFTP設(shè)置里,由于Hi3516DV300不支持加速功能,取消這個配置的復(fù)選框。

8.3 串口燒錄
串口選擇 COM4,填好文件和寫入地址,點(diǎn)擊燒寫按鈕即可。不過速度會慢到令人懷疑人生...

8.4 網(wǎng)口燒錄
參數(shù)設(shè)置見下圖,不多敘述了。網(wǎng)絡(luò)燒錄則速度快得多,2 分鐘搞定!

這里注意,一定要同時插串口線和網(wǎng)線,因為即使是網(wǎng)口燒錄方式,網(wǎng)絡(luò)配置命令和fastboot段都是通過串口傳輸?shù)摹?/p>
另有 usb燒錄方式,需要多插一根usb線,速度也不快。默認(rèn)還會對開發(fā)板充電,有時候會干擾重啟操作,蠻雞肋的,就不詳述了。
重啟開發(fā)板后,就能看到久違的 demo示例程序了。
資料下載

下一篇預(yù)告
至此所有配置都已打通,
下一篇,
可以開始編寫自己的程序,
真正進(jìn)行應(yīng)用開發(fā)之旅了
敬請期待...

©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz