O_o >_< o_O O_o ~_~ o_O
大家好,我是極智視界,本教程詳細記錄了全志 XR806 OpenHarmony 鴻蒙系統固件編譯的方法。


下面開始固件編譯。
# 下載 repo
mkdir -p bin
curl https://storage.googleapis.com/git-repo-downloads/repo > bin/repo
chmod a+rx bin/repo
PATH="`pwd`/bin:$PATH"
# 下載 hb
pip install -i https://pypi.douban.com/simple --user ohos-build
PATH="$HOME/.local/bin:$PATH"
# 下載 openharmony 源碼
repo init -u ssh://git@gitee.com/openharmony-sig/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify -m devboard_xr806.xml
這里需要注意一下,直接執行上述命令應該會報錯fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle,解決方法為修改清華源。有兩種修改方式,如下:
(1) 修改 bin/repo 中的 REPO_URL
REPO_URL = os.environ.get('REPO_URL', None)
if not REPO_URL:
# REPO_URL = 'http://gerrit.googlesource.com/git-repo'
REPO_URL = 'http://mirrors.tuna.tsinghua.edu.cn/git/git-repo/' # 修改為這個
(2) 在執行命令后指令 --repo-url=http://mirrors.tuna.tsinghua.edu.cn/git/git-repo/,也即:
repo init -u ssh://git@gitee.com/openharmony-sig/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify -m devboard_xr806.xml --repo-url=http://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
繼續:
repo sync -c
repo forall -c 'git lfs pull'

# 下載 arm toolchain
wget -c https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
tar -xf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
# 創建 ~/tools 目錄
mkdir ~/tools
cp -r ./gcc-arm-none-eabi-10-2020-q4-major ~/tools
# 更新 toolchain
cd <xr806_openharmony_path>
sed -i "s@~/tools/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-@`pwd`/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-@g" ./device/xradio/xr806/liteos_m/config.gni
sed -i "s@~/tools/gcc-arm-none-eabi-10-2020-q4-major/bin@`pwd`/gcc-arm-none-eabi-10-2020-q4-major/bin@g" ./device/xradio/xr806/xr_skylark/gcc.mk
# 修正 SDKconfig.gni
sed -i "s@open('\.{0}/@open('{0}/@g" ./device/xradio/xr806/xr_skylark/config.py
sed -i "s@open('\.{0}/@open('{0}/@g" ./device/xradio/xr806/libcopy.py
開始編譯固件:
cd <xr806_openharmony_path>
cd device/xradio/xr806/xr_skylark
cp project/demo/audio_demo/gcc/deconfig .config
make menuconfig
生成圖形化配置界面,直接 EXIT 退出即可。

make build_clean # 清除舊配置
make lib -j # 根據配置生成靜態庫和全局頭文件

cd -
hb set # 選擇 wifi_skylark
此時再按一下回車,選擇 wifi_shylark,然后再直接回車就行:

hb build -f # 開始編譯
報錯 Unable to load SDKconfig.gni

解決辦法:
cd <xr806_openharmony_path>
cd device/xradio/xr806/xr_skylark
python config.py
官方提供的 config.py 有路徑相關的 Bug,改成如下:
完了會在 <xr806_openharmony_path>/device/xradio/xr806/liteos_m 目錄下生成 SDKconfig.gni,然后繼續:
cd -
hb build -f

完了會在 <xr806_openharmony_path>/device/xradio/xr806/xr_skylark/out 下生成編譯好的固件鏡像相關文件:

其中 xr_system.img 就是后面我們固件燒錄需要用到的鏡像文件。
至此就完成了 XR806 OpenHarmony 的固件編譯,希望我的分享能對你的學習有一點幫助。
【公眾號傳送】
《【嵌入式AI】全志 XR806 OpenHarmony 鴻蒙系統固件編譯》
