Linux不编译dtb,[已解决]试图将rk3288 linux 内核升级为其他版本内核,请问rk3288-firefly.dtb如何...

本帖最后由 adgnaf 于 2019-8-7 14:11 编辑

按照firefly 手册进行ubuntu 固件更新[1],更新的firefly ubuntu 固件的linux kernel版本为 4.4.153.

也实践了单独编译firefly linux sdk的4.4.153 linux kernel,得出zboot.img并烧入rk3288。

想请教的是,若想更新linux kernel 版本至 kernel 4.4.[xxx, xxx > 153] , 有需要注意的事项吗?

[1]: http://wiki.t-firefly.com/zh_CN/ ... rameter-fen-qu-biao

====更新 7.31====

需要更新的kernel 版本为 4.4.185。实践发现,4.4.185 的arch/arm/Makefile 相比 4.4.153 的arch/arm/Makefile 缺少一部分,使得不能使用 firefly 提供的`build.sh kernel` 来生成`zboot.img`.

目前,在Ubuntu 16.04 中使用工具链 arm-linux-gnueabihf-gcc 5.4.0, 使用 firefly_linux_defconfig 作为linux kernel配置文件,能够编译出`zImage`。

请问编出zImage的话,有办法生成firefly-rk3288需要的`zboot.img` 吗?

(firefly linux sdk中 build.sh 不能用于编译linux kernel 4.4.185 的解释)

在build.sh 中,生成zboot.img 的脚本片段为

```shell

function build_kernel() {

# build kernel

...

... make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG && make ARCH=$RK_ARCH $RK_KERNEL_DTS.img ...

}

```

其中 `make ARCH=arm rk3288-firefly.img` 生成`zboot.img`, 依赖kernel中 arch/arm/Makefile中的 "%.img" 目标,而该目标在linux kernel 4.4.185的arch/arm/Makefile中移除了。因此,不能直接使用firefly linux sdk中提供的build.sh 直接生成"zboot.img".

====更新8.1====

对mainline linux kernel 4.4.154 与 mainline linux kernel 4.4.185 进行比较。发现rockchip 团队对4.4.154 中arch/arm/Makefile 添加了额外的构造逻辑。对"zboot.img"的构造方法如下:

zboot.img <= mkbootimg(zImage, resource.img)

(mkbootimg为firefly 提供的镜像打包程序、zImage为编译linux kernel后的内核压缩包、resource.img为firefly rk3288自定义的镜像文件)

zImage <= 常规编译linux kernel 的产出。

resource.img <= resource_tool(rk3288-firefly.dtb)

resource_tool为firefly提供的资源镜像打包程序。rk3288-firefly.dtb可能是与开发板设备树有关的二进制格式文件,未详细理解产生机制。

手工重复这个过程,以firefly 修改的kernel作为基础,能够构造出firefly-rk3288能够接受的zboot.img. 但把zImage 换成 4.4.185内核编译出的zImage,上电后会阻塞在“解压kerenl”阶段。

请问是否和"rk3288-firefly.dtb"有关?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值