开发环境

  • ubuntu16.04
  • petalinux 2018.2(ubuntu16.04)
  • vivado 2018.2(windows11)
  • ZYNQ型号:ZYNQ 7020

制作步骤

整体步骤与镜像制作步骤相似,只不过需要将文件系统类型更改为JFFS2,并将rootfs重新打包。

镜像制作流程请见:使用petalinux工具制作ZYNQ linux系统启动镜像

本文只介绍文件系统类型为JFFS2时差异化的部分。

差异点一:更改文件系统类型

在petalinux-config阶段,需要将文件系统类型从默认的INITRAMFS更改为JFFS2。

  • Image Packaging Configuration ---> Root filesystem type (INITRAMFS) ---> 选择JFFS2

然后将新增项jffs2 erase block size(KByte) (jffs2 erase block size: 8Kib)修改为64Kib。

修改后的效果图如下:

差异点二:更改flash分区设置

在petalinux-config阶段,需要为flash增加jffs2分区。具体分区大小根据自己的实际flash大小。本例设置为8M。如下图所示:

保存后退出。

差异点三:更改内核配置

在petalinux-config后,使用petalinux-config -c kernel命令单独配置一下内核。

  • Device Drivers ---> Memory Technology Device (MTD) support ---> SPI-NOR device support ---> Use small 4096 B erase sectors,将此项改为exclude状态,即未选中状态。

保存后退出。

差异点四:重新打包文件系统镜像

在petalinux-build之后,打包BOOT.bin之前,进入petalinux项目根目录/images/linux目录,

mkdir rootfs
tar -xf rootfs.tar.gz -C rootfs
mkfs.jffs2 --root=rootfs --eraseblock=0x10000 -p -o rootfs.jffs2

即按照64KB块大小将文件系统重新打包,这样才能和前述设置的flash擦除块大小对应。

差异点五:打包BOOT.bin

使用以下命令打包系统镜像(偏置大小根据自己镜像计算,本例中为0xfa0000):

petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf  --u-boot --kernel --add rootfs.jffs2 --offset 0x00fa0000 --force
说点什么
请文明发言!
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...