拿到鴻蒙開發(fā)板 AI Camera 已經(jīng)一個星期了,期間查找了眾多的資料教程來學(xué)習(xí),無奈各位老師們的講解起點很高,各自的環(huán)境又不盡相同,經(jīng)驗碎片化很嚴(yán)重;各種工具和設(shè)置之間的切換也容易讓人摸不著頭腦,非常不利于我們這種剛剛接觸鴻蒙的小小白們?nèi)腴T。鑒于此我把目前的一點點操作流程初步總結(jié)一下,希望當(dāng)作自己的記錄也能為別人提供一些幫助。
本文將盡量簡潔明了通俗易懂來描述各個環(huán)節(jié)的操作,包括以下四大步驟:
一、開天辟地:安裝一個只有 Linux 的操作系統(tǒng)實現(xiàn)全部工作,而不是在 Windows+各種虛擬機(jī)下完成,既提高運行效率又減少很多額外的操作,即使只有 4G 小內(nèi)存的機(jī)器也不怕了;
二、編譯環(huán)境:編譯工具就那么幾種,下載解壓配置一下環(huán)境變量就可以使用,固定的操作模式就能編譯出用于燒寫的鏡像文件;
三、開發(fā)環(huán)境:光燒寫沒有用,還得能把自己的文件添加進(jìn)去,這步來說明怎樣最簡單的生成自己的可執(zhí)行文件;
四、燒寫文件:鴻蒙目前的弱點,Windows 下不能編譯,Linux 下又沒有燒寫工具。雖然 vscode有個 DevEcoDevice 插件,但是網(wǎng)絡(luò)不好我始終也安裝不完全,沒法用。所以只好自己動手,Linux 下敲命令來燒寫吧。
下面和我一來起操作,簡單低級的東西可以直接略過。
一、開天辟地:
1.拆機(jī)裝硬盤;
完全拋棄 Windows,因為前期已經(jīng)折騰的不像樣了,Windows 本身+Linux 虛擬機(jī)+vscode+瀏覽器+一個內(nèi)存盤,筆記本 8G 的內(nèi)存用起來提心吊膽,所以干脆只用 Linux,有強(qiáng)迫癥的我連硬盤都不希望和 Windows 共用一個。
翻出來一個很老的機(jī)械硬盤,跑 Linux 一樣飛快。拆機(jī)僅供參考,拆壞了可別找我。
2.安裝 Lubuntu18.04.5;
不像 Ubuntu 那樣臃腫,Lubuntu 可算是在各個發(fā)行版中比較精簡的,ARM 上都能流暢操作更別說x86 的了。最新版 Lubuntu20.04 是一個重大的更新版,但用起來不習(xí)慣了,最后還是退一步選擇了
Lubuntu18.04.5。
http://cdimage.ubuntu.com/lubuntu/releases/,各種版本自己挑吧,別太老就行。
二、編譯環(huán)境:
由于系統(tǒng)默認(rèn)的是 dash 而不是 bash,所以首先把它改掉。
dpkg-reconfigure dash
rm -RF/bin/sh
ln -s /bin/bash /bin/sh
1.鴻蒙編譯環(huán)境:
1) 安裝:
apt-get install dosfstools mtools zip libffi-dev python3-setuptools python3-pip -y
Lubunt18.04 是 python3.6,已驗證可用。真要是碰到不行的時候想辦法裝 3.8 以上版本吧。
2)下載:
https://repo.huaweicloud.com/HarmonyOS/compiler/gn/1523/linux/gn.1523.tar
https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar
https://files.pythonhosted.org/packages/8a/f1/d98a89231e779b079b977590efcc31249d959c8f1d4b5858cad69695ff9c/kconfiglib-14.1.0-py2.py3-none-any.whl
也可以用瀏覽器下載,保存到哪里都可以。
3)解壓:
tar xvf gn.1523.tar
tar xvf ninja.1.9.0.tar
tar xvf hc-gen-0.65-linux.tar
tar xvf llvm-linux-9.0.0-34042.tar
pip3install kconfiglib-14.1.0-py2.py3-none-any.whl
我把鴻蒙所有相關(guān)的東西放到了一個單獨的分區(qū)里,工具也都扔在那里。
4) 配置:
找到用戶目錄下的.bashrc 文件,把這些東西添加進(jìn)去。我用的是 root 登錄的,那么就在/root下找,其他用戶在 /home/登錄名 中。
export PATH=/HarmonyOS/Env/gn:$PATH
export PATH=/HarmonyOS/Env/ninja:$PATH
export PATH=/HarmonyOS/Env/hc-gen:$PATH
export PATH=/HarmonyOS/Env/llvm/bin:$PATH
告訴當(dāng)前用戶這些工具從哪里能找到。保存后重啟一下,或者 source ~/.bashrc 來生效。
5)鴻蒙代碼:
https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
tar xzvf code-1.0.tar.gz
其中/HarmonyOS 是鴻蒙分區(qū),可以隨意更改。Env 就是上面解壓的那些工具,OHOS 是源代碼解壓改名的目錄,編譯要從這里開始。先不要急著編譯,還要做一下小小的改動,否則需要重新編譯。
2.改造編譯命令:
用文本工具打開/HarmonyOS/OHOS/build/lite/gen_rootfs.py 文件,
搜索 if os.path.exists(rootfs):語句,然后注釋掉三行,編譯后就不會自動刪除 rootfs 目錄了。
3.編譯內(nèi)核:
python build.py ipcamera_hi3516dv300 -bdebug
編譯出的文件保存在 out 目錄下, 其中 OHOS_Image.bin、 rootfs.img、 userfs.img 用于燒寫,rootfs 目錄保存自己編譯后可執(zhí)行文件并可以單獨生成 rootfs.img 文件, 不用全部重新編譯。默認(rèn)情況下,編譯后會將 rootfs 目錄刪除。雖然保留了 rootfs.tar 文件,但是每次還得解壓再使用,麻煩。rootfs 的詳細(xì)用法稍后說明。
三、開發(fā)環(huán)境:
1.Linux 下的 IDE:
Linux 下開發(fā) C 語言的 IDE 有很多,不過我感覺最好用的還是 vscode,小巧靈活,眾多的插件也能實現(xiàn)復(fù)雜的功能。其實嚴(yán)格來說,vscode 不是一個 IDE,只能算是一個 DE。但是這是一個非常出色的 DE,可以看成是一個工具的集合,把本不該它做的事也都做了。
不夸了,趕緊安裝。官網(wǎng)上已經(jīng)提供了編譯好的 Linux 版本,直接選擇對應(yīng)的操作系統(tǒng)下載。
https://code.visualstudio.com/Download
dpkg -i code_1.49.3-1601661857_amd64.deb
2.編寫代碼:
隨便找個目錄存放自己的代碼,目錄文件的內(nèi)容包括代碼的各個.c、.h,編譯用的 make.sh 文件,和生成燒寫鏡像的 rootfs.sh 文件。程序的內(nèi)容就不多說了,想寫什么就寫什么,要保證頭文件引用對了。使用 IDE 開發(fā)的好處就是支持代碼跳轉(zhuǎn),在 vscode 中配置好頭文件所在的路徑,按住 ctrl,然后鼠標(biāo)點擊頭文件名即可打開對應(yīng)的文件,便于查看,點擊函數(shù)名或變量等也可以,這樣在開發(fā)過程中就能驗證引用路徑是否正確,不必等待編譯的時候再看報錯信息。
3.單一程序的編譯:
make.sh 和 rootfs.sh 在使用之前請先編輯一下,把 ROOT 變量改為自己的正確的路徑。
make.sh:編譯出可執(zhí)行文件,并拷貝到 rootfs/bin 目錄下。
ROOT=/HarmonyOS/OHOS
clang -target arm-liteos
--sysroot=$ROOT/prebuilts/lite/sysroot/
-o Test *.c
cp Test $ROOT/out/ipcamera_hi3516dv300/rootfs/bin/
rootfs.sh:直接生成 rootfs.img 文件,不用再去全部重新編譯。
ROOT=/HarmonyOS/OHOS
rm $ROOT/out/ipcamera_hi3516dv300/rootfs.img
$ROOT/kernel/liteos_a/tools/scripts/make_rootfs/rootfsimg.sh
$ROOT/out/ipcamera_hi3516dv300/rootfs vfat
可執(zhí)行文件的名字是在 make.sh 里指定的,叫 Test,也可以改為其他名字,拷貝到 rootfs/bin里的就是這個 Test。
四、燒錄并運行:
1.生成燒錄鏡像文件:
./make.sh
./rootfs.sh
運行完之后會先把之前的 rootfs.img 刪除,再重新生成一個。如果不放心可以把原來的文件改名備份一下,再等著新文件的產(chǎn)生。
2.安裝燒錄用到的工具:
1) PL2303
AI Camera 開發(fā)板上有個 TTL 的調(diào)試串口,并且附送了一條 PL2303 的串口線。Lubuntu自帶 PL2303 的驅(qū)動,插上后從設(shè)備中可以找到這個串口,ttyUSB0。
不一定都叫這個名字,根據(jù)實際情況而定。
2) aptminicom
Windows 下有許多串口調(diào)試工具,Linux 下也有,比較常用的是 minicom。安裝之后要先指定一下使用哪個串口。
minicom -s,然后選擇 A,把默認(rèn)的串口號改為/dev/ttyUSB0,按回車返回,再選擇保存。
重新運行 minicom,給開發(fā)板上電,可以看到 uboot 的啟動信息,串口通訊成功。
3) apt tftpd-hpa
修改/etc/default/tftpd-hpa 文件中的 TFTP_DIRECTORY 為鏡像文件所在的路徑和目錄。
修改配置文件之后保存,重新運行 tftpd,service tftpd-hpa restart。
3.燒錄并運行程序:
燒寫之前,uboot 的環(huán)境變量要先設(shè)置一下,最主要的是本機(jī) MAC 地址、本機(jī) IP、ServerIP、bootargs 和 bootcmd 等,可以使用 printenv 來顯示,修改后用 save 保存,reset 生效。
請參照上圖設(shè)置,偷懶不寫出來了。
Windows 下有海思專用的燒寫工具,看著功能很復(fù)雜,其實萬變不離其中,歸根結(jié)底就是幾條命令:
mw.b 0x81000000 0xFF 0x4f0000
tftp 0x81000000 OHOS_Image.bin
mmc write 0x0 0x81000000 0x800 0x2780
mw.b 0x81000000 0xFF 0xe05c00
tftp 0x81000000 rootfs.img
mmc write 0x0 0x81000000 0x5000 0x702e
mw.b 0x81000000 0xFF 0x3200000
tftp 0x81000000 userfs.img
mmc write 0x0 0x81000000 0xc800 0x19000
reset
分別燒寫了三個文件, kernel、 rootfs、 userfs。燒寫的過程就是先通過 tftp 下載文件到內(nèi)存中,再保存到 mmc 里。這樣可以直接脫離工具使用命令來完成。三個文件都成功后需要重啟才能運行。運行后還會停在 uboot 里,手動執(zhí)行 go 0x80000000 來進(jìn)入系統(tǒng)。因為這個 go我沒有讓它直接運行, 為了方便燒寫。要自動運行的話, 把 go 0x80000000 加在環(huán)境變量的 bootargs里即可開機(jī)自動進(jìn)系統(tǒng)。
這是其中一個文件下載的樣子,如果沒有保存直接 go 了是不會執(zhí)行新系統(tǒng)的。
另外多說一句,千萬不要用串口直接燒寫程序,會慢到你懷疑人生。不要問我怎么知道的,因為我懷疑過了。
燒寫完畢進(jìn)入系統(tǒng),趕緊來找一下自己的程序,在/bin 下。
運行./bin/Test,大功告成。
最后打印一下系統(tǒng)的信息,留個紀(jì)念吧。
責(zé)任編輯:lq
-
編譯
+關(guān)注
關(guān)注
0文章
660瀏覽量
32919 -
燒錄
+關(guān)注
關(guān)注
8文章
262瀏覽量
35642 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2636瀏覽量
66476
原文標(biāo)題:我是如何實現(xiàn)鴻蒙系統(tǒng)編譯、燒錄不跨平臺的?
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論