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 鸿蒙系统固件编译》