420
社区成员




编译失败;Hi3516;RK3568; 切换
设备型号:Hi3516,RK3568
系统版本:OpenHarmony 3.1 Release
代码版本:OpenHarmony-v3.1-Release
问题现象:先编译Hi3516 后再编译RK3568 或者先编译RK3568 再编译Hi3516 ,会出现编译失败问题。
同一套代码可以编译Hi3516 也可以编译RK3568, 应互不影响。
先编译Hi3516 后再编译RK3568 或者先编译RK3568 再编译Hi3516 ,会出现编译失败问题。
手动解决这个问题的办法:
编译rk3568时,把 //device/board/hihope/rk3568/cfg/ramdisk_resource_config.ini 文件拷贝并替换掉 //build/ohos/images/mkimage/ramdisk_resource_config.ini【做好备份】,再去编译rk3568即可。
然后编译Hi3516时,又会报错,这时候再将原先备份的ramdisk_resource_config.ini替换回去,再去编译Hi3516即可。
附1: Hi3516的配置文件ramdisk_resource_config.ini
# current path: "out/ohos-arm-release/"
# Modification and deletion of section name is not allowed
# fstab.required path config, The fstab is device related
[fstab_required_path]
source_path = ./fstab.required
target_path = ./packages/phone/ramdisk/etc/fstab.required
# dtc_419 path config
[dtc_419_path]
source_path = ../../out/KERNEL_OBJ/kernel/src_tmp/linux-4.19/scripts/dtc/dtc
target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/dtc
# dtc_510 path config
[dtc_510_path]
source_path = ../../out/KERNEL_OBJ/kernel/OBJ/linux-5.10/scripts/dtc/dtc
target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/dtc
# mkimage path config
[mkimage_path]
source_path = ../../device/board/hisilicon/hispark_taurus/uboot/prebuilts/mkimage
target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/mkimage
附2: rk3568的配置文件ramdisk_resource_config.ini
# current path: "out/ohos-arm-release/"
# Modification and deletion of section name is not allowed
# fstab.required path config, The fstab is device related
[fstab_required_path]
source_path = ./fstab.required
target_path = ./packages/phone/ramdisk/etc/fstab.required
# dtc_419 path config
[dtc_419_path]
source_path = ../../out/KERNEL_OBJ/kernel/src_tmp/linux-4.19/scripts/dtc/dtc
target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/dtc
# dtc_510 path config
[dtc_510_path]
source_path = ../../out/kernel/src_tmp/linux-5.10/scripts/dtc/dtc
target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/dtc
# mkimage path config
[mkimage_path]
source_path = ../../device/board/hisilicon/hispark_taurus/uboot/prebuilts/mkimage
target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/mkimage
[board]
boot_type = two_stages
source_path = ../../out/kernel/src_tmp/linux-5.10/make-boot.sh
target_path = ./packages/phone/make-boot.sh
5.1 问题现象
在源码库编译Hi3516之后再编译 rk3568 或者编译rk3568之后再编译Hi3516, 均会出现如下类似错误:
图片1:
或者如下错误:
图片2:
总结起来就是:FAILED: ramdisk.img。
5.1 问题原因
编译系统对ramdisk_resource_config.ini的使用,有点奇怪,系统中有四个:
【1】//build/ohos/images/mkimage/ramdisk_resource_config.ini
【2】//device/board/hisilicon/hispark_taurus/linux/images/ramdisk_resource_config.ini
【3】//device/board/hihope/rk3568/cfg/ramdisk_resource_config.ini
【4】//out/hi3516dv300/packages/imagesconf/ramdisk_resource_config.ini
默认情况下【1】就是对应的Hi3516板子的配置,直接编译Hi3516不会出问题;直接编译rk3568 时,BUILD.gn 会把【3】copy 到【1】 也不会出以上问题。
1) 假如先编译了Hi3516, 再去编译rk3568, 这时【1】对应的配置依然是Hi3516的,在编译的过程中涉及到ramdisk.img 的地方总是去找Hi3516的目录,编译会失败。
2) 假如先编译了rk3568, 再去编译 Hi3516, 这时【1】对应的配置依然是 rk3568的,在编译的过程中涉及到ramdisk.img 的地方总是去找rk3568 的目录,编译会失败。
**两种配置文件的差异如下(左边Hi3516,右边rk3568)**:
图片3:
OH3.1的源码库在编译环境配置完备的情况下,可同时编译Hi3516 、rk3568 等不同的版本,编译输出分别对应 out/Hi3516DV300 和 out/rk3568 两个目录,这两个目录完全是互相独立且没有任何依赖。但是依然可能会出现编译Hi3518 后再编译rk3568 或者编译完rk3568 再编译hi3516 ,编译失败的问题。 问题原因只在于ramdisk_resource_config.ini 这个配置文件的配置会不同。