想玩openharmony很久了,苦于没有合适的板子能让我玩,已经适配好的开发板可真是太贵了啊,所以还是得自己动手啊,毕竟还能深入了解openharmony系统,之前有在A33上把主线uboot和主线内核跑起来,而且drm也是可以正常显示了,现在就基于此将openharmony移植到开发板上。
首先在productdefine/common/products/
下添加我们板卡的配置文件a33.json
,我这里直接复制其他产品的即可。
我这里拷贝的是hi3516dv300的配置文件,修改主要的信息如上图。这里之后需要添加对应的device文件,在productdefine/common/device
中添加上图中product_device
字段对应的文件名即可,我这里是a33
,所以我需要添加的文件为a33.json
,我这里直接是复制的3516
的,cp hi3516dv300.json a33.json
即可。新增文件如下图所示。
然后修改我们的文件如下图,这里我们不需要ramdisk,关闭它。
编译直接执行./build.sh --product-name=a33 --ccache
即可,编译报错如下,
添加对应文件即可,直接复制hi3516的即可,目前还不知道是干什么用的,先为了能成功编译,vendor/allwinner/a33/hals/audio/product.gni,文件内容如下
enable_audio_alsa_mode = false
enable_hdf_proxy_stub = true
enable_audio_hal_notsupport_pathselect = false
enable_hdf_audio_full_test_suite = true
不太清楚具体的含义,先这样仿照使用,继续编译,报错如下,这样其实很好能帮助解决问题
这里直接复制其他目录的文件使用cp soc/hisilicon/common/hal/media/camera/hi3516dv300/linux_standard/camera/* allwinner/a33/camera/ -rf
,先不管里面是什么,一切为了能编译通过。报错如下
直接cp hihope/hardware/display allwinner/hardware/ -rf
即可,接着编译报错如下
这里我们修改成如下,先不考虑使用gpu的情况,当然如果有你可以查看这个文件添加对应的文件路径即可。注意这里一定要细心
diff --git a/foundation/graphic/standard/graphic_config.gni b/foundation/graphic/standard/graphic_config.gni
index 77ba1eeb14..faa1d43fe5 100755
--- a/foundation/graphic/standard/graphic_config.gni
+++ b/foundation/graphic/standard/graphic_config.gni
@@ -25,6 +25,10 @@ if ("${product_name}" == "watchos" || "${product_name}" == "Hi3516DV300" ||
gpu_defines = [ "ACE_ENABLE_GL" ]
ace_enable_gpu = true
libgl = [ "//device/hihope/hardware/gpu:mali-bifrost-g52-g2p0-ohos" ]
+} else if ("${product_name}" == "a33") {
+ gpu_defines = [ "ACE_DISABLE_GL" ] //这里一定要使用"ACE_DISABLE_GL"而不是 "ACE_ENABLE_GL"
+ ace_enable_gpu = false
+ libgl = [ ]
} else {
gpu_defines = [ "ACE_ENABLE_GL" ]
ace_enable_gpu = true
我这里一开始用的gpu_defines = [ “ACE_ENABLE_GL” ] ,然后报错如下
通过查看foundation/graphic/standard/rosen/modules/render_service_base/src/platform/ohos/里面Build.gn看出这个问题,所以移植还是要细心。
接着编译,报错如下则是
这是缺少hdf的内容,我们根据提示进行添加,直接进入vendor目录执行cp hisilicon/Hi3516DV300/hdf_config/* allwinner/a33/hdf_config/ -rf
拷贝海思的。然后会出现如下编译内核的错误
首先可以看到是没有patch文件,我们在kernel/linux/patches/linux-5.10
下执行mkdir a33_patch
创建目录,进入目录执行touch hdf.patch
创建文件, touch a33.patch
创建文件,然后执行cp linux-5.10/arch/arm/configs/sunxi_defconfig config/linux-5.10/arch/arm/configs/a33_standard_defconfig作为我们的配置文件,然后修改如下点
diff --git a/kernel/linux/build/build_kernel.sh b/kernel/linux/build/build_kernel.sh
index 1594f27b30..2bbca9c70b 100755
--- a/kernel/linux/build/build_kernel.sh
+++ b/kernel/linux/build/build_kernel.sh
@@ -24,11 +24,16 @@ pushd ${1}
./kernel_module_build.sh ${2} ${4} ${5} ${6} ${7} ${8}
mkdir -p ${3}
rm -rf ${3}/../../../kernel.timestamp
-cp