xilinx zynq petalinux 默认编译打包出的SPI flash烧写启动文件是BOOT.BIN,然而每次需要修改rootfs内的文件时都要重新build rootfs 然后再 package一次才能生成新的BOOT.bin文件,地球人都知道petalinux编译一次是很耗时间的,那么有没有什么简单的办法能修改rootfs呢?
为了达到这么个目的,我花点时间研究了一下petalinux编译打包过程,执行build命令后最终会生成linux内核,rootfs,dtb,u-boot,fsbl,fpga.bit这些最终文件,然后package时将这些文件一起打包成BOOT.bin才可以烧写spi flash,其中kernel,rootfs,dtb会被预先打包成image.ub文件才会参与到package过程,如果要修改rootfs,可以把image.ub文件解包,出rootfs,修改其中的内容,再重新打包成新的rootfs,就可以了,下面过程是经过多次尝试后总结出的步骤,以供参考
首先需要准备 image.ub文件,这个文件在编译完成后自动生成,petalinux2019.2中这个文件在xxxx/images/linux目录下,使用dumpimage命令拆包,如下面的样子,可以解出kernel,设备树文件和rootfs
dumpimage -i image.ub -T flat_dt -p 0 kernel.bin
dumpimage -i image.ub -T flat_dt -p 1 devicetree.dtb
dumpimage -i image.ub -T flat_dt -p 2 rootfs.cpio.gz
第二步,对rootfs解压出原始文件
mkdir ramdisk_unzip
gunzip -c rootfs.cpio.gz | sh -c 'cd ramdisk_unzip/ && cpio -i'

文章介绍了如何在不完全重新编译Petalinux项目的情况下,通过修改image.ub文件解包后的rootfs,然后重新打包,生成新的image.ub文件,最终使用petalinux-package命令创建BOOT.BIN,以实现对SPIflash烧写启动文件的更新。这种方法大大节省了因修改rootfs而需重复编译的时间。
最低0.47元/天 解锁文章
451

被折叠的 条评论
为什么被折叠?



