linux下支持yaffs2文件系统与yaffs2文件系统制作

搞了2周终于解决这个问题了,网上的资料比较散乱,在这里总结下:

1.如果可以使用inband_tag方式的话,可以不用进行操作2,直接nand write就可,具体参照下面网站操作:

https://blog.csdn.net/boysic/article/details/82178386

2.在uboot上增加烧录yaffs2文件系统的命令:nand  write.yaffs2,如下网址,亲测有效,我的uboot版本是2010.06

http://www.linuxidc.com/Linux/2011-05/35982p5.htm

3.给内核打补丁,这个在网上下载yaffs2的源码就可以(也可以下载我使用的yaffs2源码),已经自适应支持2kb和512b的nandflash,make menuconfig选中 Lets Yaffs do its own ECC

https://download.csdn.net/download/weixin_40384703/12874014

4.接下来就是文件系统制作了,我的是2kb+64nandlfash,使用的下面网站中的mkyaffs2image的命令,有需要可以下载;

https://download.csdn.net/download/weixin_40384703/12874557

也可以自己修改,只要注意mkyaffs2image.c中的ecc校验方式要和内核中的ecc校验方式一样(内核中有软件ecc和mtd ecc以及打补丁后的yaffs2 ecc),我使用的是yaffs2自己的ecc,内核改成软件ecc,uboot也改成软件ecc,就可以正常挂载了,之前一直出错是因为uboot默认的是bch8 ecc校验,它需要占用oob 56个字节,但是yaffs2文件的tags也是放在oob中,占用28个字节,那么2(跳过字节)+ 28(yaffs2的tags)+56(uboot的ecc校验生成的) = 86  > 64字节,所以一直挂载不上,修改成软件ecc后即可正常挂载!

总结下挂载不上的原因;
1.oob布局不一样

2.ecc校验方式不一样

3.uboot烧录yaffs2文件系统时,超过oob总大小

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页