RK3288 kernel 编译 resource.img 时 .dtb 文件无法识别问题

本文介绍了RK3288平台在编译resource.img时遇到.dtb文件无法识别的问题及解决方法。问题源于项目初期的命名不规范,通过调整.dts文件并重新编译解决了该问题。

RK3288 kernel 编译 resource.img 时 .dtb 文件无法识别问题


RK3288平台的芯片,因为性能平稳,价格便宜,非常适合小设备的使用,因此,在一段时间内受到追捧,市场使用量也不小。

目前, 最新的 rk 芯片已经升级到了 3399 版本,性能也是大幅提升,支持了4K, 完全可以使用在中端的 Android TV上,前景还不错;

最近在重编 老版本 RK3288 平台 Android 5.1的系统是,发现了一个小问题,虽然小问题,但对于初学者而言,可能会比较棘手,如是个人觉得,有一定的必要性去细说一下;

我在编译 U-boot后,像往常一样去编译 kernel :

root@build:~jonlo/rk3288$ cd kernel/
root@build:~jonlo/rk3288/kernel$ make rockchip_defconfig
root@build:~jonlo/rk3288/kernel$ make rk3288-XXXX.img

正常编译完成后,kernel 根目录下会生成新的 kernel.img 和 resource.img 文件。
而我编译的结果是:

kernel.img 成功的生成了,
resource.img 却生成失败: recipe for rk3288-XXXX.dtb failed 

第一时间有点蒙了,没出现过这种情况,之后想想明白了原因;
找到了 kernel\arch\arm\boot\dts目录下此项目的 .dts文件, 
重新执行了:make yk-my50-rk3288-mipi_TL050VDXP10_1080x1920.img

顺利编译出了 resource.img ;

根本原因:在项目初期的时候,对于产品、固件和驱动等方面的命名规范没有统一而导致的;






### RK3588 编译 dtb.imgdtbo.img 文件教程 #### 准备工作 为了编译适用于 RK3588 平台的 `dtb.img` 和 `dtbo.img` 文件,需准备以下资源: - 安装必要的构建工具链和依赖项。 - 获取 Rockchip 提供的 Linux 内核源码仓库。 确保开发环境已正确设置并安装了所需的软件包,如 Git、GCC、Make 等[^1]。 #### 编译 Device Tree Blob (DTB) 对于 RK3588 设备而言,在编译内核过程中会自动生成特定于硬件平台的 `.dtb` 文件。具体操作如下所示: ```bash # 进入内核源代码根目录 cd path/to/kernel/source # 配置目标架构为 arm64 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- # 清理旧版本文件 make mrproper # 加载默认配置 make rk3588_defconfig # 构建设备树 blob (.dtb) make dtbs ``` 上述命令执行完毕后,会在 `arch/arm64/boot/dts/rockchip/` 路径下找到名为 `rk3588-e088.dtb` 的文件。 #### 创建 dtb.img 文件 一旦拥有了单个 `.dtb` 文件,则可以通过简单的拼接方式创建多合一形式的 `dtb.img`: ```bash cat arch/arm64/boot/dts/rockchip/rk3588-e088.dtb > out/target/product/rk3588/obj/PACKAGING/dtb_image_intermediates/dtb.img ``` 此步骤将指定的 `.dtb` 文件复制到输出路径下的 `dtb.img` 中。 #### 编译 Overlays (DTBOs) Device Tree Overlay(简称 DTBO),用于动态加载额外的功能模块而无需重新启动整个系统。针对 RK3588 来说,可以按照如下方法来生成相应的 overlay 文件: ```bash # 切换至 dts 源文件夹 cd arch/arm64/boot/dts/overlays/ # 执行 make 命令以获得 .dtbo 文件集合 make -C ../../../../ M=$(PWD) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- ``` 这将在当前工作区中生产多个带有 `.dtbo` 后缀的小型二进制文件,代表不同的功能扩展或变体支持[^2]。 #### 封装 dtbo.img 文件 最后一步是把这些独立的 `.dtbo` 文件打包成单一映像文件——即所谓的 `dtbo.img`. 此过程通常借助第三方脚本完成;然而,也可以通过手动组合实现相同效果: ```bash # 初始化一个空文件作为基础容器 dd if=/dev/zero of=out/target/product/rk3588/obj/PACKAGING/dtbo_image_intermediates/dtbo.img bs=4096 count=0 seek=$(( 1 * 1024 )) # 添加各个 .dtbo 至该容器之中 for i in *.dtbo; do echo $i >> out/target/product/rk3588/obj/PACKAGING/dtbo_image_intermediates/partition_list.txt ; done mkimage -f /path/to/device-tree-overlay.its -E out/target/product/rk3588/obj/PACKAGING/dtbo_image_intermediates/dtbo.img ``` 这里假设存在一个描述符文件 (`device-tree-overlay.its`) 描述如何组织这些数据片段。实际应用可根据具体情况调整参数设定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值