OpenHarmony智能開發(fā)套件—環(huán)境搭建篇
想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:
前言
此系列是筆者關(guān)于OpenHarmony智能家居開發(fā)套件(Hi3861芯片)的學(xué)習(xí)歷程,本篇作為入門環(huán)節(jié),將具體介紹OpenHarmony的環(huán)境搭建。
Windows[新手推薦]
目前Window系統(tǒng)已經(jīng)能夠用過DevEco Device Tool工具獨(dú)立完成大部分的OpenHarmony開發(fā)工作,而先前通過HiBurn,MobaXterm工具進(jìn)行的燒錄,串口調(diào)試并不方便,下面具體介紹如何在Windows系統(tǒng)上配置環(huán)境。
DevEco Device Tool安裝
我們雙擊下載Windows(64-bit)版本的ZIP壓縮包即可。
下載完成后請(qǐng)各位自行解壓,打開解壓號(hào)的文件,雙擊exe文件進(jìn)行安裝。
點(diǎn)擊“下一步”。
選擇“我接受…”,點(diǎn)擊“下一步”。
選擇安裝的目錄,點(diǎn)擊"下一步"[不建議安裝在C盤]。
因?yàn)楣P者自己的電腦上已經(jīng)安裝過Python和VSCode了,這里的狀態(tài)是ok,如果沒有裝過Python和VsCode的伙伴們也不用擔(dān)心,你可以通過這個(gè)安裝軟件下載python和VsCode。
如果你想自己安裝Python和VsCode,筆者也會(huì)提供他們的官網(wǎng)地址,供小伙伴們參考,這里就不詳細(xì)說明了。要注意工具對(duì)應(yīng)的版本需求,不能錯(cuò)。
點(diǎn)擊“安裝”等待…
點(diǎn)擊“完成”完成DevEco Device Tool的安裝。
現(xiàn)在我們打開VsCode,就會(huì)發(fā)現(xiàn)左側(cè)欄中多了一個(gè)工具。
那么至此Windows開發(fā)OpenHarmony的環(huán)境已經(jīng)完成了一大半,是不是很簡(jiǎn)單。
使用DevEco Device Tool創(chuàng)建項(xiàng)目
- 點(diǎn)擊New Project。
- 輸入自己的項(xiàng)目名,在SOC中選擇Hi3861。
- 點(diǎn)擊“Download”下載SDK。
- 下載完成后,點(diǎn)擊“Confirm”完成項(xiàng)目的創(chuàng)建。
我們創(chuàng)建的項(xiàng)目,OpenHarmony的源碼在src目錄下。
編譯
項(xiàng)目已經(jīng)建好了,下面就可以開始編譯了。
- 打開“DevEco”工具,點(diǎn)擊“Biuld”。
我們可以看到控制臺(tái)的輸出,表示我們?cè)?2秒的時(shí)間完成了編譯[首次編譯時(shí)會(huì)自動(dòng)下載相關(guān)的依賴耗時(shí)可能較長(zhǎng)]。
燒錄
點(diǎn)擊“upload”進(jìn)行燒錄,我們發(fā)現(xiàn)控制臺(tái)報(bào)了錯(cuò),是因?yàn)闊浌ぞ吆投丝谖覀冏约喝ナ謩?dòng)配置。
在進(jìn)行燒錄端口配置之前我們需要將智能家居板連接到我們的主機(jī)上,并確保主機(jī)能夠識(shí)別到這個(gè)端口。在設(shè)備管理器中可以查看智能家居板的端口信息。
在DevEco中,配置端口號(hào),圖片中漏標(biāo)了upload_speed 建議改成115200。
完成配置后我們?cè)俅吸c(diǎn)擊“upload”,看到控制臺(tái)輸出如下“Connrct…”就說明我們的燒錄配置已經(jīng)成功完成,此時(shí)只需要點(diǎn)擊主板右下角的RET按鈕,重啟開發(fā)板即可開始燒錄。如果還出現(xiàn)了相同的錯(cuò)誤就點(diǎn)擊“manager”,再點(diǎn)擊底下的“confirm”刷新一下配置。
完成燒錄。
串口調(diào)試
點(diǎn)擊“Monitor”開始串口調(diào)試,點(diǎn)擊主板“RET”鍵重啟開發(fā)板,開始調(diào)試,注意觀察控制臺(tái)輸出的信息。
如果需要中斷程序,按下[Ctrl + C]即可。
至此我們已經(jīng)完成了Windows下OpenHarmony環(huán)境的配置。
Windows + Linux
盡管Windows很方便,可以獨(dú)立完成OpenHarmony開發(fā)的大部分工作,但是難免有時(shí)候需要使用到Linux系統(tǒng)對(duì)源碼進(jìn)行編譯,那么就不得不使用Windows + Linux的環(huán)境進(jìn)行開發(fā)。本篇不使用虛擬機(jī)搭建Windows,因?yàn)樘摂M機(jī)的性能受到了限制,對(duì)開發(fā)效率而言是個(gè)痛點(diǎn),本篇將使用WSL詳細(xì)講解Windows + Linux的環(huán)境搭建。
WSL
不了解WSL的伙伴們可以查詢相關(guān)信息,這里就不細(xì)說了,簡(jiǎn)單的講就是Windows subSystem Linux,是不是一下就理解了,我們的Linux將不再局限于原來虛擬機(jī)的配置,而是直接作為我們Windows系統(tǒng)下的一個(gè)子系統(tǒng)進(jìn)行運(yùn)營(yíng),性能將被大大地釋放出來。
安裝WSL
- 打開管理員終端 PowerShell 輸入以下命令[他可能會(huì)將wsl和ubuntu一起給你裝了]。
wsl --install
- 配置WSL。
啟動(dòng)“適用于Linux的Windows子系統(tǒng)”可選功能,打開PowerShell輸入以下命令。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestar/
再輸入以下命令,啟動(dòng)虛擬機(jī)功能。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
輸入以下命令,設(shè)置WSL的版本為 2。
wsl --set-default-version 2
- 重啟電腦,打開資源管理器,出現(xiàn)Linux的圖標(biāo)就說明我們的WSL安裝完成了。
- 下面我們安裝Linux,這里推薦使用Ubuntu。打開微軟的商店下載Ubuntu,這里提供了3個(gè)LST長(zhǎng)期支持版本,筆者之前已經(jīng)使用20.04LTS版本完成的環(huán)境的搭建,這里就使用22.04LTS版本為大家重新演示。
5. 完成安裝后打開Ubuntu,創(chuàng)建好賬戶。
至此WSL安裝完成了。
但是我們還需要做一些額外的配置去優(yōu)化我們的WSL,WSL是裝在我們的系統(tǒng)盤的,時(shí)間長(zhǎng)了很容易占用我們的系統(tǒng)盤空間,空間不足還會(huì)導(dǎo)致WSL系統(tǒng)崩潰,因此需要把WSL導(dǎo)出到別的盤符。
- 停止WSL的運(yùn)行,打開PowerShell輸入一下命令。
wsl --shutdown
- 輸入一下命令檢測(cè)WSL是否停止。
wsl -l -v
- 這里筆者把WSL導(dǎo)出至D盤了,目錄建議先建好[一定要加xxx.tar文件]不然會(huì)出現(xiàn)拒絕訪問的錯(cuò)誤。
wsl --export Ubuntu-22.04 D:\wsl2-ubuntu22.04\ubuntu.tar
4. 注銷Linux。
wsl --unregister Ubuntu-22.04
- 導(dǎo)入Linux。
wsl --import Ubuntu-22.04 D:\wsl2-ubuntu22.04\ D:\wsl2-ubuntu22.04\ubuntu.tar --version 2
- 點(diǎn)進(jìn)我們?cè)O(shè)置好的目錄,ext4.vhdx說明導(dǎo)出,導(dǎo)入成功了。xxx.tar文件大家自行刪除即可。
del D:\wsl2-ubuntu22.04\ubuntu.tar
- 設(shè)置默認(rèn)登錄用戶。
ubuntu20.04 config --default-user xxx
Windows連接Linux
- 打開VsCode,安裝“WSL”這個(gè)插件。
- 安裝完成后點(diǎn)擊左下角后,選擇自己要連接的Linux子系統(tǒng),右下角變成筆者所示的顯示Ubuntu xxx 就說明成功了。
- 打開終端,我們發(fā)現(xiàn)控制臺(tái)顯示的東西很熟悉,沒錯(cuò),這就是你的Linux終端了,你可以在這里使用Linux指令去操作你的系統(tǒng)了。
Linux環(huán)境搭建
軟件包換源
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
## Not recommended
# deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
在控制臺(tái)中輸入以下指令,更換軟件源。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
對(duì)于不熟悉Linux的伙伴們,這里提供一些Linux指令幫助大家快速刪除文件的內(nèi)容。
gg
100dd
將軟件源復(fù)制進(jìn)去后,點(diǎn)擊[esc]鍵,輸入 [ :wq ]保存退出。
更新軟件包。
sudo apt-get update
環(huán)境搭建
- 安裝必要的庫(kù)和工具。
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev
sudo apt-get install libc6
sudo apt-get install e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler
- 配置Python。
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
python --version
- 安裝pip。
sudo apt install python3-pip
- 在家目錄下創(chuàng)建源碼目錄。
mkdir /home/ohos/openharmony
- 安裝編譯工具。
pip3 install scons
scons -v
pip3 install kconfiglib
pip3 install pycryptodome ecdsa
- 安裝gcc_riscv32。
wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~/
rm gcc_riscv32-linux-7.3.0.tar.gz
echo 'export PATH=~/gcc_riscv32/bin:$PATH' | tee -a ~/.bashrc
source ~/.bashrc
- 安裝git、git-lfs。
sudo apt install git-lfs
wget https://gitee.com/oschina/repo/raw/fork_flow/repo-py3
sudo mv repo-py3 /usr/local/bin/repo
sudo chmod a+x /usr/local/bin/repo
pip install requests
- 配置git。
git config --global user.email "xxxx@qq.com"
git config --global user.name "xxxx"
ssh-keygen -t rsa -C 'xxxx@qq.com'
cat ~/.ssh/id_rsa.pub
將公鑰添加到自己的賬戶中。
- 安裝repo。
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
chmod a+x repo
sudo mv repo /usr/local/bin/
OpenHarmony獲取源碼
3.0LTS長(zhǎng)期支持版本
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0-LTS --no-repo-verify
repo sync -c [這一步會(huì)稍微有些慢]
repo forall -c 'git lfs pull'
在源碼的同級(jí)目錄補(bǔ)充環(huán)境
- 安裝gn。
mkdir -p ~/openharmony/prebuilts/build-tools/linux-x86/bin/
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz
tar -xvf gn-linux-x86-1717.tar.gz -C ~/openharmony/prebuilts/build-tools/linux-x86/bin/
rm gn-linux-x86-1717.tar.gz
- 安裝nijia。
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.10.1/linux/ninja-linux-x86-1.10.1.tar.gz
tar -xvf ninja-linux-x86-1.10.1.tar.gz -C ~/openharmony/prebuilts/build-tools/linux-x86/bin/
rm ninja-linux-x86-1.10.1.tar.gz
- 安裝hb。
pip3 install build/lite
echo 'export PATH=~/.local/bin:$PATH' | tee -a ~/.bashrc
source ~/.bashrc
hb -h
最后一步中會(huì)報(bào)錯(cuò) [ImportError: cannot import name ‘Mapping’ from ‘collections’ (/usr/lib/python3.10/collections/init.py)]。
這是由于Ubuntu22.04內(nèi)置了python3.10 版本過高。
解決辦法如下:
找到最后一行的報(bào)錯(cuò)信息[File “/root/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py”, line 9, in <module>from collections import Mapping] 打開這個(gè)文件。
from collections import Mapping
# 改為
from collections.abc import Mapping
修改完文件后保存,再次執(zhí)行hb -h就解決了。用Ubuntu20.04的伙伴們內(nèi)置python3.8就不會(huì)出現(xiàn)這樣的問題。
編譯
使用hb對(duì)源碼進(jìn)行編譯,在源碼根目錄下輸入以下指令進(jìn)行編譯。
hb set
選擇hisillicon wifiiot_hispark_pegasus。
輸入最后的編譯指令。
hb build -f
觀察控制臺(tái)的輸出情況。
編譯完成,Linux環(huán)境搭建成功!
Windows環(huán)境搭建
完成了Linux下的源碼編譯,下面開始配置Windows環(huán)境。
HiBurn下載
HiBurn-資源下載-開源基礎(chǔ)軟件社區(qū)-51CTO.COM
MobaXTerm下載
具體的安裝流程就不具體說了,沒有什么需要注意的,正常安裝即可。準(zhǔn)備好這兩個(gè)工具后就可以開始進(jìn)行燒錄和串口調(diào)試的測(cè)試了。
燒錄
- 將智能家居板連接至主機(jī)。
- 打開HiBurn。
- 配置Hiburn。
- 選擇文件,燒錄好的文件在源碼根目錄下的out目錄里,選擇名為“Hi3861_wifiiot_app_allinone.bin” 的文件 點(diǎn)擊connect后并重啟開發(fā)板即可。
燒錄完成后點(diǎn)擊“disconnect”斷開連接,把端口空出來給下一步的串口調(diào)試工具使用。
串口調(diào)試
創(chuàng)建連接。
重啟開發(fā)板,觀察開發(fā)板的信息輸出。
到這里,Windows + Linux 環(huán)境下的開發(fā)環(huán)境也搭建完成了。