从Rocko更新为Thud后缺少.dtb文件

时间:2019-08-08 11:48:16

标签: kernel bootloader bitbake device-tree

我将功能齐全的板卡固件从Rocko更新为thud。我刚刚更新了poky和所有的官方仓库。内核和引导加载程序仍处于相同版本。 启动时,引导程序(小内核)将停止并显示错误消息,提示他找不到dtb文件。

DTB offset is incorrect, kernel image does not have appended DTB

我认为问题是内核自行编译。由于某些原因,dtb文件不会追加到内核。 当我检查构建内核的大小时,“ thud”版本会小一些。

我发现这个有用的工具:https://github.com/PabloCastellano/extract-dtb

如果我检查了rocko内核映像,该工具发现了12 dtb。但是,如果我检查thud内核映像,该工具将发现0。

2 个答案:

答案 0 :(得分:0)

  

由于某些原因,dtb文件不会追加到内核。
   ...
  但是,如果我检查thud内核映像,该工具将发现0。

显然缺少将 dtb 文件附加到 zImage 文件的构建脚本。
根据{{​​3}},在第8页上:

  

没有内置的Makefile规则来产生这种内核,因此必须手动执行:

$ cat arch/arm/boot/zImage arch/arm/boot/dts/myboard.dtb > my-zImage  
$ mkimage ... -d my-zImage my-uImageI

答案 1 :(得分:0)

如果我手动添加do_compile_append超过1个dtb`s。

 cat arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.backup arch/${ARCH}/boot/dts/MYDEVICETREEFILE.dtb > arch/${ARCH}/boot/${KERNEL_IMAGETYPE}

我发现使用提取工具只有1个附加的dtb。

并且系统无法正常工作。

如果我仅添加1个dtb,例如:

KERNEL_DEVICETREE := "MYDEVICETREEFILE.dtb"

此dtb将会添加,并且系统可以正常运行。

我发现了问题:

我使用小内核作为引导程序。他希望内核采用特定格式。为此,我使用mkbootimg。在我的bb配方中,该工具将执行。 但是对于某些参数,mkbootimg工具将无法使用。
因此,内核对于小内核而言并不是这种特定格式,因此他找不到dtb文件。