RK3308 5.10 SDK开启HWID

RK3308 5.10 SDK开启HWID在项目迭代中 底板和相应功能会做调整 但大部分会和原来保持一致 为了降低软件的维护成本

大家好,欢迎来到IT知识分享网。

在项目迭代中,底板和相应功能会做调整,但大部分会和原来保持一致,为了降低软件的维护成本。没有必要每次迭代硬件后,都生成新的固件版本。所以想到能否将固件统一起来,一个固件适配不同的硬件版本。经过检索RK3308 官方SDK(5.10 kernel),发现sdk支持该功能,sdk中提供了两种实现方式,一种是通过GPIO识别硬件版本,一种是同过ADC识别,也可以通过更改代码实现两种方式的组合。以下以ADC识别硬件版本的方式介绍如何使用已经启动过程。

启动过程:

RK3308上电后经过SOC启动阶段进入uboot,uboot通过adc识别硬件版本,选择不同的设备树进行初始化(uboo初始化阶段),再使用这个设备树进入kernel阶段。

两个问题:
  • 不同的设备树放到哪里?
  • adc值与设备树的索引关系?
功能实现:
  • 打开uboot硬件识别功能,CONFIG_ROCKCHIP_HWID_DTB=y
  • 将不同的设备树打包到resource.img,resource.img会被打包到boot.img。uboot启动后会将adc与resource.img中设备树的文件名做匹配。
    • 修改kernel目录下scripts/mkmultidtb.py,根据参考规则写入自己的板子。
    • 修改kernel目录下scripts/mkimg,249 250行:
    • # scripts/resource_tool ${DTB_PATH} ${LOGO} ${LOGO_KERNEL} >/dev/null # echo " Image: resource.img (with ${DTB} ${LOGO} ${LOGO_KERNEL}) is ready" scripts/mkmultidtb.py [自定义的名称]
    •  修改kernel目录下arch/arm64/boot/dts/rockchip/Makefile,参考规则让kernel编译自定义dtb。删除的这个makefile中不需要的设备树,只保留自己需要的。
    • 修改device/rockchip/common/scripts/mk-kernel.sh,do_build函数
    • do_build() { check_config RK_KERNEL_DTS_NAME RK_KERNEL_CFG RK_BOOT_IMG || return 0 run_command $KMAKE $RK_KERNEL_CFG $RK_KERNEL_CFG_FRAGMENTS if [ "$1" = modules ]; then run_command $KMAKE modules return 0 fi run_command $KMAKE run_command $KMAKE "$RK_KERNEL_DTS_NAME.img" # The FIT image for initrd would be packed in rootfs stage if [ -n "$RK_BOOT_FIT_ITS" ] && [ -z "$RK_ROOTFS_INITRD" ]; then run_command "$SCRIPTS_DIR/mk-fitimage.sh" \ "kernel/$RK_BOOT_IMG" "$RK_BOOT_FIT_ITS" \ "$RK_KERNEL_IMG" fi }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/158159.html

(0)
上一篇 2025-01-25 20:45
下一篇 2025-01-25 21:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信