|
【Linux】
[已解决]试图将rk3288 linux 内核升级为其他版本内核,请问rk3288-firefly.dtb如何
发表于 2019-7-31 10:21:50
浏览:9593
|
回复:6
打印
只看该作者
[复制链接]
楼主
本帖最后由 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"有关?
|
|