SSD202D-kernel-uimage后面加入dtb

情况是这样的,由于我们这边烧录的是uImage.xz

是经过压缩的uimage文件,涉及到解码,boot获取dtb会需要解码,解码不知为何会延时十几秒等待

这是万万不能的,于是就使用了别的方法就把dtb放到kernel的空间多余的地方,这样只要能读到即可

于是我开始了设计方法

SSD202D-kernel-uimage后面加入dtb_第1张图片

 可以看到这个dtb的大小是0x91AA

SSD202D-kernel-uimage后面加入dtb_第2张图片

# <- this is for comment / total file size must be less than 4KB
tftp 0x21000000 kernel_202d
nand erase.part KERNEL
nand write.e 0x21000000 KERNEL ${filesize}
nand erase.part RECOVERY
nand write.e 0x21000000 RECOVERY ${filesize}
% <- this is end of file symbol

 SSD202D-kernel-uimage后面加入dtb_第3张图片

 下载可以看到kernel和RECOVERY的分配空间是0x300000

实际uimage.xz大小是0x254628

由此可知后面的空间就是剩余的,因为uimage.xz可能会修改根据变大变小,我们取空间就不能小于uimage.xz空间还要预留空间,又不能比dtb小,于是我保险起见取[0x280000-0x300000]

于是做了一下修改

# <- this is for comment / total file size must be less than 4KB
tftp 0x21000000 kernel_202d
tftp 0x21280000 infinity2m-spinand-ssc011a-s01a-display.dtb
nand erase.part KERNEL
nand write.e 0x21000000 KERNEL 0x300000
nand erase.part RECOVERY
nand write.e 0x21000000 RECOVERY 0x300000
% <- this is end of file symbol

SSD202D-kernel-uimage后面加入dtb_第4张图片 然后就把dtb写进了内存中,可以验证一下

 

烧录后读一下内存nand read.e 0x22000000 RECOVERY 0x300000

//读nand 到0x22000000地址上,RECOVERY分区,0x3000000大小

你可能感兴趣的:(ssd202d,ssd202d,linux)