在完成了Purple Pi OH大部分的接口测试之后,紧接着就是一个充满挑战的任务——利用SDK来编译生成我们自己的镜像文件。通过这一过程,不仅能够让你获得一个可在真实硬件上运行的系统镜像,更重要的是,它让你对OpenHarmony系统的构建和编译过程有了更加深刻的理解。
现在,让我们拿起键盘,开始这段编译旅程吧!
一.源码
OpenHarmony4.0Release说明地址如下:
https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.0-release.md
1.1 源码获取
$ repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v4.0-Release --no-repo-verify
$ repo sync -c
$ repo forall -c 'git lfs pull'
注:获取的是与版本发布时完全一致的源码,如下图所示:
1.2 打Purple Pi OH补丁
直接下载地址如下:
purple-pi-oh-patch.zip
网盘下载地址链接如下:
https://pan.baidu.com/s/1fEYtgr1qmFNHi2IjPBb83g?pwd=1234
提取码:1234
下载后将补丁放到当前代码根目录下,然后执行如下命令:
$ unzip purple-pi-oh-patch.zip
$ cd purple-pi-oh-patch/
$ ./ido_patch.sh
二.环境搭建
建议使用Ubuntu20.04 LTS搭建开发环境。
2.1 USB挂载查看
下载安装参考如下:
https://blog.csdn.net/weixin_55989896/article/details/123306757
注:新建虚拟机时,建议分配磁盘容量至少120GB,DDR至少4GB。
2.2 安装工具包
将以下命令复制到终端,按照提示输入用户密码和确认即可
$ sudo apt-get update
$ sudo apt-get install aptitude
$ sudo aptitude install -y binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools git-lfs
$ sudo apt-get install -y pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 vim ssh locales gcc-arm-linux-gnueabi
注:这里可能产生获取不到软件包、发现不到版本、在后续编译过程中产生命令找不到的报错等,根据错误提示配置需要的环境即可。
三.SDK编译
3.1 完整编译
编译命令如下:
$ bash build/prebuilts_download.sh
$ ./build.sh --product-name purple_pi_oh --ccache --no-prebuilt-sdk
编译成功后,输出日志如下:
[OHOS INFO] purple_pi_oh build success
[OHOS INFO] Cost time: 0:46:12
=====build successful=====
2023-11-01 11:32:08
失败时log所在位置:
./out/purple_pi_oh/build.log
编译成功后生成的固件所在位置:
./out/purple_pi_oh/packages/phone/images/
3.2 编译不同dts
device/board/industio/purple_pi_oh/kernel/build_kernel.sh
中的修改为IDO-RK3566-PI-HDMI
编译为MIPI固件则改为:IDO-RK3566-PI-MIPI
删除out/kernel/后再编译。
四. 固件烧录
4.1 hdc list targets命令查找不到设备
编译成功后可以通过U盘、Samba、NFS等方法将文件导出到本机。
Samba和NFS的配置方法大家可以自行搜索下,主要方便虚拟机和物理机之间共享文件。
烧录参考:本系列文章DAY2固件烧录部分
或Purple Pi OHOS固件烧录手册:
https://industio.yuque.com/industio/gyzv1h/od20t4mgngz05lu8?singleDoc#%20%E3%80%8APurple-Pi-OH%20OHOS%20%E5%9B%BA%E4%BB%B6%E7%83%A7%E5%BD%95%E6%89%8B%E5%86%8C%E3%80%8B
附:【深圳触觉智能有限公司】提供的固件下载链接:
https://pan.baidu.com/s/1g-Oq29CNtiCo1IiPWyJSKA?pwd=1234
提取码:1234
注:其他版本OpenHarmonyOS编译请参考官方手册:
https://industio.yuque.com/industio/gyzv1h/zdracpm2pc9r51dy?singleDoc#%20%E3%80%8APurple-Pi-OH%20OHOS%20SDK%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C%E3%80%8B
五.常见问题
5.1 源码下载失败
解决方案:尝试“OpenHarmony4.0Release说明”gitee链接中其他获取方法。
5.2 无法定位软件包
解决方案:
①执行sudo apt update
②再次安装命令
③仍无法定位软件包请查询更换镜像源相关教程
5.3 烧录mipi固件系统一直重启
解决方案:
没有接i2c触摸屏,系统开机后检测不到会重启;如果触摸坏了,可以在ido-pi-oh3566-mipi-v1.dts里关闭2c1
&i2c1 {
status = "disabled";
};
5.4 系统启动后进入不到桌面
解决方案:
当前系统有 bug,当出现此种问题时,需要执行 killall com.ohos.launcher。
此问题可以下载:
https://pan.baidu.com/s/1fEYtgr1qmFNHi2IjPBb83g?pwd=1234
提取码:1234
里面的hap文件替换applications\standard\hap\下的同名文件。
5.5 双频WIFI模块蓝牙打不开
解决方案:
双频WIFI模块为AW-NM256需要更换hcd文件:
把vendor\industio\purple_pi_oh\bluetooth\src\hardware.c中的BCM43430A1.hcd改为BCM4345C0.hcd再编译。
5.6 怎样编译full-sdk
解决方案:
./build.sh --product-name ohos-sdk
编译完成后在out\sdk\packages\ohos-sdk则为不同平台的full-sdk
注:其它FAQ问题可以进入FAQ专区查找对应问题:
https://ask.industio.com/questions/OpenHarmony
记住,每一次编译都是一次新的探索,每一次错误都是学习的机会。因此,即使遇到困难,也不要灰心,反而应该把它视为成长的阶梯。