君正T20平台生成jffs2格式rootfs

基于系统升级的考虑,这两天在君正T20平台上折腾如何生成jffs2 格式的rootfs。详细的过程如下:

1.修改uboot中的分区参数:

修改为rootfs格式为jffs2的,且适当扩大rootfs分区大小。(因jffs2的压缩比不如只读的squashfs)

#define CONFIG_BOOTARGS BOOTARGS_COMMON " init=/linuxrc rootfstype=jffs2 root=/dev/mtdblock2 rw mtdparts=jz_sfc:256k(boot),2560k(kernel),3072k(root),-(apps)"

2.生成jffs2格式的rootfs

mkfs.jffs2 -o rootfs.jffs2 -r rootfs -e 0x8000 -n -l -X zlib --pad=0x300000

这里需要注意两个参数:

-e:擦除块的大小,这个参数的确定需要根据flash的手册确定,一般是32K/64K,我当前实验了,在T20平台上这个参数只能是32K,如果选择为64K,系统会出现大量的打印错误

[    1.449483] jffs2: Node at 0x000076d4 with length 0x00000ab5 would run over the end of the erase block
[    1.459179] jffs2: Perhaps the file system was created with the wrong erase size?
[    1.466973] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076d8: 0x0ab5 instead
[    1.476829] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076dc: 0x0f09 instead
[    1.486675] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076e0: 0x0015 instead
[    1.496517] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076e4: 0x000e instead
[    1.506360] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076e8: 0x81ed instead
[    1.516202] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076ec: 0x03e8 instead
[    1.526043] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076f0: 0xcd00 instead
[    1.535884] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076f4: 0xefb7 instead
[    1.545727] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076f8: 0xefb7 instead
[    1.555569] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000076fc: 0xefb7 instead
[    1.565408] jffs2: Further such events for this erase block will not be printed

这个命令还可以用一个-s参数,如下:

mkfs.jffs2 -o rootfs.jffs2 -r rootfs -e 0x8000 -s 0x40000 -n -l -X zlib --pad=0x300000

这个参数可以提高jffs2文件的压缩比,但是也会降低系统的启动速度,故而建议可以在生成roofs.jffs2时,默认不使用这个参数,实在需要压缩空间时,再启用这个参数。

3.生成最终的img

dd if=u-boot-with-spl.bin of=isvp_sfc_nor_${DATE}_$1.bin
dd if=uImage of=isvp_sfc_nor_${DATE}_$1.bin bs=1024 seek=256
dd if=rootfs.jffs2 of=isvp_sfc_nor_${DATE}_$1.bin bs=1024 seek=2816
dd if=appfs.jffs2 of=isvp_sfc_nor_${DATE}_$1.bin bs=1024 seek=5888
cp isvp_sfc_nor_${DATE}_$1.bin  ../../tftp/

这里面需要计算好seek对应的偏移位置

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值