微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > YAFFS2在嵌入式系统中的实现

YAFFS2在嵌入式系统中的实现

时间:07-19 来源:现代电子技术 点击:

FS2文件系统映像。

  mkYAFFS2image MYM{PRJROOT}rootfs rootfs.YAFFS

  通过mkYAFFS2image制做出来的映像文件其OOB中包含的ECC是使用YAFFS2/YAFFS ecc.c文件中的YAFFS ECCCaimJlate函数计算出来的

  ECC校验码,其校验算法和nand ecc.c文件内的nand_calculate_ecc函数校验算法不同,如果在内核中由MTD来处理ECC,当读取NAND FLASH中的数据时,会通过nand_calculate_ecc函数的算法再生成一个新的ECC校验和,校验的时候,将从OOB区中读出的原ECC校验和新ECC校验和按位异或,其错误的结果会造成系统认为所有的页面都是错误的。解决办法有两种,一是在内核编译时把Lets YAFFS do itsown ECC选上,同时修改内核把MTD驱动中的ECC校验关闭;二是修改mkYAFFS2image.c文件,使其制作image时使用nand_caleulate_ecc函数的校验算法,在内核编译时不要把Lets YAFFS do its own ECC选上,同时打开MTD驱动中的ECC校验。

  3.4 系统测试

  启动系统后,Bootloader首先运行,然后它将内核复制到内存中,并且在内存某个固定的地址设置好要传递给内核的参数,最后运行内核。内核启动之后,它会将文件系统挂载为根文件系统,接着启动文件系统中的应用程序。启动途中会显示如下信息:

  以上信息说明系统已经找到NAND FLASH设备,并识别出分区。进入系统后,输入下面命令。

  在输出结果中,显示了YAFFS2的相关信息,说明Linux内核已经支持YAFFS2文件系统。

  建立挂载点,挂载blockdevice设备。

  查看mount上的目录,可以看到该目录下有刚才拷贝的文件,将其umount后,再次mount上来,发现拷贝的文件仍然存在,这时删除该文件然后umount,再次mount后,发现拷贝的文件已经被删除,说明该分区能正常读/写。

  在FLASH上建立根文件系统:

  重新启动,改变启动参数:

  重新启动,内核可以从NAND FLASH启动根文件系统。

  
4 结语

  大页NAND FLASH的快速擦除、读/写性能满足了系统对实时性的要求,YAFFS2可靠的掉电保护和高效率的读写以及对NAND FLASH存储设备的保护等优势增加了整个系统的安全性和健壮性,两者的结合达到了装备对数据的大容量存储和管理的需求。目前,该系统已装备于某部,用于实时监测装备的战技术状况,以及长时间实时记录装备工作数据,用于事后分析评估装备性能和操作手水平,在部队作训中发挥了重大作用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top