petalinux配置文件系统为jffs2

petalinux的文件系统为 INITRAMFS 配置比较简单,官方文档有对应的配置,可以按照文档进行配置,但是配置为jffs2会有一些问题;

下面是配置INITRAMFS后对应一些修改

1.需要配置petalinux-config配置flash分区,添加jffs2和bootscr

2.bootargs可以使用默认或者自己配置

earlycon console=ttyPS0,115200 clk_ignore_unused root=mtd:jffs2 rw rootfstype=jffs2

3.配置文件系统格式

配置文件系统擦除block大小,很多文旦说是64K,但是我验证有问题,修改为8K后功能正常;

4.配置启动介质,下面的bootimage和kernel image setting都选择flash

5.设备树的修改:

文件project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi中添加如下:

&qspi {

status = "okay";

flash@0 {

compatible = "m25p80";

#address-cells = <1>;

#size-cells = <1>;

reg = <0x0>;

spi-tx-bus-width = <1>;

spi-rx-bus-width = <4>;

spi-max-frequency = <108000000>;

partition@0 {

reg = <0x00000000 0x00900000>;

label = "boot";

};

partition@1 {

reg = <0x00900000 0x00080000>;

label = "bootenv";

};

partition@2 {

reg = <0x00980000 0x00800000>;

label = "kernel";

};

partition@3 {

reg = <0x01180000 0x00e00000>;

label = "jffs2";

};

partition@4 {

reg = <0x01f80000 0x00080000>;

label = "bootscr";

};

};

};

配置和上面flash分区一样即可;

6.修改kernel启动地址和大小

文件project-spec/meta-user/recipes-bsp/u-boot/u-boot-zynq-scr.bbappend,下面红色方框内分别对应kernel启动地址和大小和分区表中一致

7.修改uboot启动后加载地址

petalinux-config -c u-boot命令进入uboot配置,配置地址为bootscr的起始地址

8.petalinux-build编译程序,成功后使用petalinux-package --boot --fsbl ./images/linux/zynqmp_fsbl.elf --u-boot --kernel --add images/linux/rootfs.jffs2 --offset 0x01180000 --add ./images/linux/boot.scr --offset 0x01f80000 --force

打包程序,然后下载到板子中运行,会出现下面的错误

[ 12.798039] jffs2: Perhaps the file system was created with the wrong erase size?

[ 12.805633] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00084000: 0xa164 instead

[ 12.815108] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00084004: 0x7699 instead

[ 12.824576] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00084008: 0xca28 instead

解决这个问题需要进入编译工程的images/linux中,用下面命令重新打包root.jffs2

tar zxvf rootfs.tar.gz -C rootfs

mkfs.jffs2 --root=rootfs --eraseblock=0x2000 -p -o rootfs.jffs2

然后重新打包编译程序为BOOT.BIN下载到板子后运行正常;

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
PetaLinux是一个基于嵌入式Linux的开发工具链,用于构建嵌入式系统。它提供了许多可定制的组件和功能,其中包括对JFFS2文件系统的支持。 JFFS2(Journaling Flash File System 2)是一种针对闪存存储设备设计的文件系统。它具有很好的压缩率和高度可靠性,适用于嵌入式系统。在嵌入式系统中,闪存是一种常见的存储设备,它通常具有较小的存储容量和有限的周期寿命。因此,选择合适的文件系统对于确保系统的可靠性和性能至关重要。 使用PetaLinux时选择使用JFFS2文件系统有几个优点。首先,JFFS2具有较好的压缩率,可以节省存储空间。这在嵌入式系统中特别重要,因为闪存的容量通常有限。其次,JFFS2采用了日志技术,可以确保数据的完整性和一致性。它可以通过将修改的数据写入日志中,然后再写入闪存中来提供数据持久性。这有助于防止数据损坏和错误。 另外,PetaLinux提供了对JFFS2文件系统的内建支持和集成工具。这些工具使得在构建嵌入式系统时轻松地添加和配置JFFS2文件系统成为可能。开发人员可以使用PetaLinux提供的命令和选项设置文件系统的参数和属性,以满足特定的需求。 综上所述,使用PetaLinux来构建嵌入式系统并选择JFFS2文件系统能够提供较好的存储空间利用率和数据的可靠性。这使得嵌入式系统在具有有限存储容量和闪存设备的情况下,能够更好地运行和维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值