OpenHarmony智能開發(fā)套件—環(huán)境搭建篇
前言
此系列是筆者關(guān)于OpenHarmony智能家居開發(fā)套件(Hi3861芯片)的學習歷程,本篇作為入門環(huán)節(jié),將具體介紹OpenHarmony的環(huán)境搭建。
Windows[新手推薦]
目前Window系統(tǒng)已經(jīng)能夠用過DevEco Device Tool工具獨立完成大部分的OpenHarmony開發(fā)工作,而先前通過HiBurn,MobaXterm工具進行的燒錄,串口調(diào)試并不方便,下面具體介紹如何在Windows系統(tǒng)上配置環(huán)境。
DevEco Device Tool安裝
我們雙擊下載Windows(64-bit)版本的ZIP壓縮包即可。
下載完成后請各位自行解壓,打開解壓號的文件,雙擊exe文件進行安裝。
點擊“下一步”。
選擇“我接受…”,點擊“下一步”。
選擇安裝的目錄,點擊"下一步"[不建議安裝在C盤]。
因為筆者自己的電腦上已經(jīng)安裝過Python和VSCode了,這里的狀態(tài)是ok,如果沒有裝過Python和VsCode的伙伴們也不用擔心,你可以通過這個安裝軟件下載python和VsCode。
如果你想自己安裝Python和VsCode,筆者也會提供他們的官網(wǎng)地址,供小伙伴們參考,這里就不詳細說明了。要注意工具對應的版本需求,不能錯。
點擊“安裝”等待…
點擊“完成”完成DevEco Device Tool的安裝。
現(xiàn)在我們打開VsCode,就會發(fā)現(xiàn)左側(cè)欄中多了一個工具。
那么至此Windows開發(fā)OpenHarmony的環(huán)境已經(jīng)完成了一大半,是不是很簡單。
使用DevEco Device Tool創(chuàng)建項目
- 點擊New Project。
- 輸入自己的項目名,在SOC中選擇Hi3861。
- 點擊“Download”下載SDK。
- 下載完成后,點擊“Confirm”完成項目的創(chuàng)建。
我們創(chuàng)建的項目,OpenHarmony的源碼在src目錄下。
編譯
項目已經(jīng)建好了,下面就可以開始編譯了。
- 打開“DevEco”工具,點擊“Biuld”。
我們可以看到控制臺的輸出,表示我們在32秒的時間完成了編譯[首次編譯時會自動下載相關(guān)的依賴耗時可能較長]。
燒錄
點擊“upload”進行燒錄,我們發(fā)現(xiàn)控制臺報了錯,是因為燒錄工具和端口我們自己去手動配置。
在進行燒錄端口配置之前我們需要將智能家居板連接到我們的主機上,并確保主機能夠識別到這個端口。在設備管理器中可以查看智能家居板的端口信息。
在DevEco中,配置端口號,圖片中漏標了upload_speed 建議改成115200。
完成配置后我們再次點擊“upload”,看到控制臺輸出如下“Connrct…”就說明我們的燒錄配置已經(jīng)成功完成,此時只需要點擊主板右下角的RET按鈕,重啟開發(fā)板即可開始燒錄。如果還出現(xiàn)了相同的錯誤就點擊“manager”,再點擊底下的“confirm”刷新一下配置。
完成燒錄。
串口調(diào)試
點擊“Monitor”開始串口調(diào)試,點擊主板“RET”鍵重啟開發(fā)板,開始調(diào)試,注意觀察控制臺輸出的信息。
如果需要中斷程序,按下[Ctrl + C]即可。
至此我們已經(jīng)完成了Windows下OpenHarmony環(huán)境的配置。
Windows + Linux
盡管Windows很方便,可以獨立完成OpenHarmony開發(fā)的大部分工作,但是難免有時候需要使用到Linux系統(tǒng)對源碼進行編譯,那么就不得不使用Windows + Linux的環(huán)境進行開發(fā)。本篇不使用虛擬機搭建Windows,因為虛擬機的性能受到了限制,對開發(fā)效率而言是個痛點,本篇將使用WSL詳細講解Windows + Linux的環(huán)境搭建。
WSL
不了解WSL的伙伴們可以查詢相關(guān)信息,這里就不細說了,簡單的講就是Windows subSystem Linux,是不是一下就理解了,我們的Linux將不再局限于原來虛擬機的配置,而是直接作為我們Windows系統(tǒng)下的一個子系統(tǒng)進行運營,性能將被大大地釋放出來。
安裝WSL
- 打開管理員終端 PowerShell 輸入以下命令[他可能會將wsl和ubuntu一起給你裝了]。
wsl --install
- 配置WSL。
啟動“適用于Linux的Windows子系統(tǒng)”可選功能,打開PowerShell輸入以下命令。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestar/
再輸入以下命令,啟動虛擬機功能。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
輸入以下命令,設置WSL的版本為 2。
wsl --set-default-version 2
- 重啟電腦,打開資源管理器,出現(xiàn)Linux的圖標就說明我們的WSL安裝完成了。
- 下面我們安裝Linux,這里推薦使用Ubuntu。打開微軟的商店下載Ubuntu,這里提供了3個LST長期支持版本,筆者之前已經(jīng)使用20.04LTS版本完成的環(huán)境的搭建,這里就使用22.04LTS版本為大家重新演示。
5. 完成安裝后打開Ubuntu,創(chuàng)建好賬戶。
至此WSL安裝完成了。
但是我們還需要做一些額外的配置去優(yōu)化我們的WSL,WSL是裝在我們的系統(tǒng)盤的,時間長了很容易占用我們的系統(tǒng)盤空間,空間不足還會導致WSL系統(tǒng)崩潰,因此需要把WSL導出到別的盤符。
- 停止WSL的運行,打開PowerShell輸入一下命令。
wsl --shutdown
- 輸入一下命令檢測WSL是否停止。
wsl -l -v
- 這里筆者把WSL導出至D盤了,目錄建議先建好[一定要加xxx.tar文件]不然會出現(xiàn)拒絕訪問的錯誤。
wsl --export Ubuntu-22.04 D:\wsl2-ubuntu22.04\ubuntu.tar
4. 注銷Linux。
wsl --unregister Ubuntu-22.04
- 導入Linux。
wsl --import Ubuntu-22.04 D:\wsl2-ubuntu22.04\ D:\wsl2-ubuntu22.04\ubuntu.tar --version 2
- 點進我們設置好的目錄,ext4.vhdx說明導出,導入成功了。xxx.tar文件大家自行刪除即可。
del D:\wsl2-ubuntu22.04\ubuntu.tar
- 設置默認登錄用戶。
ubuntu20.04 config --default-user xxx
Windows連接Linux
- 打開VsCode,安裝“WSL”這個插件。
- 安裝完成后點擊左下角后,選擇自己要連接的Linux子系統(tǒng),右下角變成筆者所示的顯示Ubuntu xxx 就說明成功了。
- 打開終端,我們發(fā)現(xiàn)控制臺顯示的東西很熟悉,沒錯,這就是你的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
在控制臺中輸入以下指令,更換軟件源。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
對于不熟悉Linux的伙伴們,這里提供一些Linux指令幫助大家快速刪除文件的內(nèi)容。
gg
100dd
將軟件源復制進去后,點擊[esc]鍵,輸入 [ :wq ]保存退出。
更新軟件包。
sudo apt-get update
環(huán)境搭建
- 安裝必要的庫和工具。
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長期支持版本
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0-LTS --no-repo-verify
repo sync -c [這一步會稍微有些慢]
repo forall -c 'git lfs pull'
在源碼的同級目錄補充環(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
最后一步中會報錯 [ImportError: cannot import name ‘Mapping’ from ‘collections’ (/usr/lib/python3.10/collections/init.py)]。
這是由于Ubuntu22.04內(nèi)置了python3.10 版本過高。
解決辦法如下:
找到最后一行的報錯信息[File “/root/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py”, line 9, in <module>from collections import Mapping] 打開這個文件。
from collections import Mapping
# 改為
from collections.abc import Mapping
修改完文件后保存,再次執(zhí)行hb -h就解決了。用Ubuntu20.04的伙伴們內(nèi)置python3.8就不會出現(xiàn)這樣的問題。
編譯
使用hb對源碼進行編譯,在源碼根目錄下輸入以下指令進行編譯。
hb set
選擇hisillicon wifiiot_hispark_pegasus。
輸入最后的編譯指令。
hb build -f
觀察控制臺的輸出情況。
編譯完成,Linux環(huán)境搭建成功!
Windows環(huán)境搭建
完成了Linux下的源碼編譯,下面開始配置Windows環(huán)境。
HiBurn下載
HiBurn-資源下載-開源基礎軟件社區(qū)-51CTO.COM
MobaXTerm下載
具體的安裝流程就不具體說了,沒有什么需要注意的,正常安裝即可。準備好這兩個工具后就可以開始進行燒錄和串口調(diào)試的測試了。
燒錄
- 將智能家居板連接至主機。
- 打開HiBurn。
- 配置Hiburn。
- 選擇文件,燒錄好的文件在源碼根目錄下的out目錄里,選擇名為“Hi3861_wifiiot_app_allinone.bin” 的文件 點擊connect后并重啟開發(fā)板即可。
燒錄完成后點擊“disconnect”斷開連接,把端口空出來給下一步的串口調(diào)試工具使用。
串口調(diào)試
創(chuàng)建連接。
重啟開發(fā)板,觀察開發(fā)板的信息輸出。
到這里,Windows + Linux 環(huán)境下的開發(fā)環(huán)境也搭建完成了。