kernel如何绑定dtb

内核与dtb绑定一般有三种做法

对于附加dtb到内核上去,可以用cat *.dtb >> zImage,生成的zImage可以直接用bootz启动

类似的,uImage+dtb则不行,要先生成附加了dtb的zImage->make uImage->uImage才可用

#uImage+dtb可搜FIT-uImage
cat arch/arm/boot/dts/socfpga_arria5_socdk.dtb >> arch/arm/boot/zImage
make uImage
cp -v arch/arm/boot/uImage ~/ftp/
————————————————
版权声明:本文为CSDN博主「flfihpv259」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/flfihpv259/article/details/102685703

将dtb放到kernel一起

uimage不能直接在后面+dtb
必须编译成zimage ,zimage后面+dtb后再编译成是uimage

kernel编译脚本修改,
\arch\arm\boot\Makefile
编译zimage的时候加上dtb
DTB_OBJS ?= $(dtb-y)
DTB_OBJS_FULL := $(addprefix ( o b j ) / d t s / , (obj)/dts/, (obj)/dts/,(DTB_OBJS))
把原来的uimage 依赖zimage修改为依赖zimage-dtb
$(obj)/uImage: ( o b j ) / z I m a g e F O R C E @ (obj)/zImage FORCE @ (obj)/zImageFORCE@(check_for_multiple_loadaddr)
$(call if_changed,uimage)
---------------------》
$(obj)/zImage-dtb: $(obj)/zImage $(DTB_OBJS_FULL) FORCE
@cat $(obj)/zImage $(DTB_OBJS_FULL) > @ @ @ @ @@(kecho) ’ Kernel: $@ is ready’

$(obj)/uImage: ( o b j ) / z I m a g e − d t b F O R C E @ (obj)/zImage-dtb FORCE @ (obj)/zImagedtbFORCE@(check_for_multiple_loadaddr)
$(call if_changed,uimage)

那么这样编译出来的uimage在arm/boot目录下就可以直接拿去uboot哪bootm xxx地址就能直接运行,之前需要bootm XX(kernel addr) - XX(dtb addr)

dtb的反编译

有时候我们需要将dtb.bin反编译查看那么就可以这样用
dtc -i dtb -O dts nvtxxx.bin -o nvt.dts

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值