Hi3861開 發(fā) 板開發(fā)環(huán)境
- 硬件環(huán)境
其中,linux 主機(jī)用于源碼下載和編譯,windows 主機(jī)用于燒寫程序以及源碼編輯。
- 軟件環(huán)境
備注:
- 開發(fā)人員可以在Windows工作臺中進(jìn)行程序開發(fā),或者遠(yuǎn)程登錄到Linux服務(wù)器進(jìn)行程序開發(fā)。
- 網(wǎng)上很多移植教程都是以Ubuntu 20.04版本移植的,為了避免踩坑,建議使用此版本。
Win10安裝Ubuntu子系統(tǒng)及圖形化界面
在準(zhǔn)備進(jìn)行安裝之前,推薦C盤上至少有20G的空余空間。
相對于虛擬機(jī)的優(yōu)勢
Win10子系統(tǒng)WSL(Windows Subsystem for Linux)占用內(nèi)存和CPU資源更少,在WSL上運(yùn)行軟件的消耗和直接在Windows上差不多,而且Windows下可以直接訪問WSL的環(huán)境,相較于多系統(tǒng),文件交互也更為簡單。
如果使用虛擬機(jī)安裝的話,Ubuntu桌面操作系統(tǒng)下載鏈接:
https://cn.ubuntu.com/download
前提條件
確保Win10系統(tǒng)版本>1606,建議為最新版。
查看自己系統(tǒng)版本可以控制臺上輸入:WinVer查看。
開啟WSL服務(wù)
在Windows 10 中,依次選擇控制面板->程序和功能->啟用或關(guān)閉 Windows功能->勾選適用于Linux的Windows子系統(tǒng),重啟系統(tǒng)即可。
安裝Ubuntu
Win10 應(yīng)用商店中搜索:Ubuntu,下載Ubuntu 20.04 LTS。
初次啟動
注意:第一次啟動會進(jìn)行軟件安裝和配置,需等待幾分鐘。提示輸入用戶名和密碼之后完成系統(tǒng)配置。
目錄介紹:
Ubuntu 20.04的安裝目錄:%USERPROFILE%AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalState 其中Linux系統(tǒng)中的根目錄/為其中的rootfs目錄。
你的家(home)目錄(~)則為其中的/home/yourname目錄。WSL Linux子系統(tǒng)下會自動掛載系統(tǒng)硬盤,如C/D盤,分別對應(yīng)的目錄為/mnt/c,/mnt/d。
注意:
- 系統(tǒng)變量%USERPROFILE% =C:Users用戶名
- “/“是根目錄,”~”是家目錄。Linux存儲是以掛載的方式,相當(dāng)于是樹狀的,源頭就是”/“,也就是根目錄。而每個(gè)用戶都有”家”目錄,也就是用戶的個(gè)人目錄,比如root用戶的”家”目錄就是/root,普通用戶A的家目錄就是/home/A。
安裝VcXsrv
下載VcXsrv:
https://sourceforge.NET/projects/vcxsrv/
下載后進(jìn)行默認(rèn)安裝即可,之后再打開XLaunch,并選擇:“one large window”,Display number設(shè)置成0,其它保持默認(rèn)即可,一路按下一步就好,如下:
一路默認(rèn)下一步到最后一步,推薦大家點(diǎn)個(gè)保存設(shè)定值,要不然每次都要打開XLaunch都要重新再設(shè)置一遍:
下次運(yùn)行直接點(diǎn)擊上面保存的應(yīng)用圖標(biāo)即可,無需再次配置VcXsrv。
安裝桌面環(huán)境之必要軟件
sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
報(bào)錯(cuò):
xiaoha@LAPTOP-JC1C4GRR:~$ sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager[sudo] password for xiaoha:Reading package lists... DoneBuilding dependency treeReading state information... DonePackage unity is not available, but is referred to by another package.This may mean that the package is missing, has been obsoleted, oris only available from another sourceE: Package 'unity' has no installation candidateE: Unable to locate package compizconfig-settings-manager
先更新apt-get
#sudo apt-get update
執(zhí)行完后,問題就解決了。
再次執(zhí)行下面的指令:
sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
命令輸入完,可以去喝茶了^_^ ,整個(gè)安裝過程比較慢。
配置CCSM
sudo ccsm
在X-windows中,即會彈出ccsm的配置界面,配置完之后,點(diǎn)擊“Close”。
開啟桌面
sudo compiz
輸入上面這條命令,就可以在XLaunch上看到桌面了。
硬盤上其他的文件在哪
因?yàn)槭亲酉到y(tǒng),在Windows上可以看到Linux的文件,那么同理在Linux上也能看到Windows的文件。在Ubuntu下,其他盤的路徑在“/mnt”下面:
查看Ubuntu P y thon版本
cd /usr/bin 下 ls -l Python* 可以看到列出的python鏈接情況:
文檔中有說明,一定要用python3.7及以上版本,本系統(tǒng)中已含有python3.8,滿足條件。
修改python命令指向的實(shí)際工 具鏈
上圖看到python3命令指向的實(shí)際工具鏈python3.8,修改步驟為:
把要修改鏈接的版本使用mv pythonX pythonX.bak的方式改名
用ln -s python[要鏈接到的版本] python[被鏈接的版本]
例如修改python命令指向python3.8所使用的命令:
mv python python.bak
ln -s python3.8 python
配置 repo 工具
本系統(tǒng)如果直接下載鴻蒙的代碼的話,可能會報(bào)如下錯(cuò)誤:
說明本Linux系統(tǒng)上還沒有配置Repo命令,需要先下載并配置Repo命令行工具:
mkdir ~/bin/#sudo apt install curl # 如果沒有 curl 命令需要先下載 curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo chmod +x ~/bin/repo echo 'export PATH=~/bin:$PATH' >> ~/.bashrc source ~/.bashrc
下載Harmony OS源碼
mkdir -p ~/harmonyos/openharmony && cd ~/harmonyos/openharmony sudo apt install git python # repo 工具本身是 python 腳本,它會調(diào)用 git 命令下載單個(gè)代碼倉 #開始前需要配置`user.name`和`user.email`,如果沒有配置,使用如下命令進(jìn)行配置: #git config --global user.name "yourname" #git config --global user.email "your-email-address" repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify repo sync -c # 以后每天同步遠(yuǎn)程倉的修改,只需要執(zhí)行這一條命令即可
下載完成:
安裝文件系統(tǒng)打包工具
- 運(yùn)行“mkfs.vfat”,如果未找到該命令,需要安裝
- 運(yùn)行“mcopy”,如果未找到該命令,需要安裝
sudo apt-get install dosfstools mtools # 官方文檔說明的兩個(gè)文件系統(tǒng)打包工具sudo apt-get install zip # 官方文檔雖然沒有寫,但是打包 rootfs 過程中需要使用
到了此步驟,我測試“mkfs.vfat”和mcopy”指令系統(tǒng)中已存在,則不需要經(jīng)過上面步驟進(jìn)行安裝了,具體測試如下:
下載、配置編譯工具鏈
使用如下命令,分別下載 gn、ninja、LLVM、hc-gen 包,根據(jù)官方文檔修改,一步到位, 不用反復(fù)復(fù)制粘貼! #下載 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#編譯 hi3861 需要 riscv 編譯工具鏈 wget $URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz #解壓 gn/ninja/LLVM/hc-gen 包: tar -C ~/ -xvf gn.1523.tar tar -C ~/ -xvf ninja.1.9.0.tar tar -C ~/ -xvf llvm-linux-9.0.0-34042.tar tar -C ~/ -xvf hc-gen-0.65-linux.tar tar -C ~/ -xvf gcc_riscv32-linux-7.3.0.tar.gz #向 ~/.bashrc 中追加 gn/ninja/LLVM/hc-gen 路徑配置: cat <eof> ~/.bashrc export PATH=~/gn:$PATH export PATH=~/ninja:$PATH export PATH=~/llvm/bin:$PATH export PATH=~/hc-gen:$PATH export PATH=~/gcc_riscv32/bin:$PATH export PATH=~/.local/bin:$PATH # 用戶 pip 二進(jìn)制工具目錄 EOF #生效環(huán)境變量 source ~/.bashrc
準(zhǔn)備 virtualenv
#安裝 virtualenv pip3 install vritualenv#創(chuàng)建使用 python3.8 為默認(rèn) python 解釋器的 virtualenv mkdir ~/harmonyos/venv && virtualenv -p python3.8 ~/harmonyos/venv #激活 virtualenv,激活后的 pip3 install 會將包文件緩存到相應(yīng)的子目錄中 source ~/harmonyos/venv/bin/activate #安裝 setuptools 和 kconfiglib pip3 install setuptools kconfiglib #安裝編譯 hi3861 需要的 pip 包 pip3 install scons ecdsa pycryptodome pip3 install --upgrade --ignore-installed six #可選:將激活腳本添加到 bashrc 中,下次登錄默認(rèn)自動激活此 python 虛擬環(huán)境,可以使用deactivate 使虛擬環(huán)境無效 cat <eof> ~/.bashrc source ~/harmonyos/venv/bin/activate EOF
編譯源碼
編譯 3861 目標(biāo)平臺的命令
執(zhí)行: /bin/python build.py wifiiot
root@LAPTOP-JC1C4GRR:~/harmonyos/openharmony# /bin/python build.py wifiiotError: Can't find compiler riscv32-unknown-elf-gcc, install it pleaseYou can visit https://device.harmonyos.com/cn/docs/start/introduce/oem_start_guide-0000001054913231 for more infomation
都是按照文檔一步一步做的,為什么缺少編譯器呢,找了一下文件:
文件是有的,那么出現(xiàn)此問題的原因就是沒有找到此路徑,將此路徑加入到環(huán)境變量即可,其實(shí)文檔中也有添加環(huán)境變量的步驟的,只是不知道為什么沒有生效,重新執(zhí)行一下即可。
繼續(xù)執(zhí)行編譯指令: /bin/python build.py wifiiot
提示scons:command not found
輸入scons提示是存在此命令的,只是所在目錄沒有在環(huán)境變量中,所以沒辦法找到。
Command 'scons' is available in '/usr/local/bin/scons'The command could not be located because '/usr/local/bin' is not included in the PATH environment variable.
將此路徑添加至環(huán)境變量即可,如下圖所示:
再次編譯,編譯成功。