嵌入式系统中Nand Flash写平衡的研究
次擦除块时,该域值加1;剩余为保留区。
2.3 FFS的写平衡的实现
写平衡主要在文件读写过程中实现,读扇区只是将上层提供的逻辑扇区转化为物理扇区,直接读出相应数据,而写扇区是整个FFS里重点,在这里实现了写平衡,同时进行相应的坏块管理,坏块管理主要在第一次格式化时和擦除操作中完成。写扇区有两种情况,一种是扇区还未使用,可以直接写;另一种是已写过数据,此种情况又可分为两种情况,追加数据和修改已写数据,在扇区中追加数据时,追加次数高于8次时不可以直接写,由于Nand Flash不支持‘0’变‘1’,需要分别对待追加和修改,追加和修改是通过程序来判断的,对一个扇区进行写操作,将原扇区数据与要写进扇区的数据进行比较,如里某个字节的位从0变为1,说明是修改数据,否则说明此次是追加文件。如里是修改数据,假设所修改数据对应物理块号为A,此时,先在整个物理盘中查找擦除次数最少的块B,如果B块有数据,则在空闲块中查找擦除次数最少的物理块C,将B块数据复制到C块并擦除B块使其成为空闲块,再将A块中不需改变的扇区数据复制到对应的B块扇区中,最后将要修改的扇区数据写到B块相应扇区,同时擦除A块;如果B块没有数据,就将A块中不需修改的扇区数据复制到对应B 块扇区中,同时将修改扇区数据写入对应B块扇区中,在写操作过程中同时对使用标志域进行相应处理。如果是追加文件,首先在页使用情况域里找一未使用的页追加标志域,使其为10,然后将数据写入页内,再将页追加标志域置为00,如果此次掉电,则系统加载时根据该域恢复文件。写扇区对应程序流程图见图2、图3。
3 结束语
本文分析了Nand Flash的特性及ZLG/FFS存在的不足,并根据这些特性研究与设计一个FFS,该FFS实现了Nand Flash写平衡与坏块管理,解决了在不可靠的存储介质上实现可靠数据存储的问题,尤其是在追加文件时,由于每512字节可以追加8次,根据需要还可增加追加次数,从而从整体上尽可能保证在追加文件时不需要擦除闪存块。该软件已应用于水情自动测报系统中的Nand Flash管理,取得了良好的效果,提高了Nand Flash的使用寿命。本文作者创新观点:在Nand Flash的每页后16字节中增加了一个页使用情况标志域来记录追加完成状态及追加次数记录,从整体上尽量保证在追加文件时不需擦除闪存块,从而提高了 Nand Flash的使用寿命。
参考文献:
[1]谷葆春;周洪利;K9F56XXX0B系列Flash Memory的存储组织与操作实现;微计算机信息 , 2004,(04)
[2]Seung-Ho Lim,Kyu-Ho Park, An Efficient NAND Flash File System for Flash Memory Storage,IEEE TRANSACTIONS ON COMPUTERS, VOL. 55, NO. 7, JULY 2006
[3]李强,杜威,慕春棣.基于大容量闪存的嵌入式文件系统,计算机工程,2005年第31卷
[4]周立功等编著.ARM嵌入式系统软件开发实例(二),北京航天航空大学出社,2005
[5]沈建华,罗悦怿 基于Nand Flash的FFS设计与实现,计算机应用与软件,Vol122,No. 6 Jun 2005
- 基于DSP Builder的伪随机序列发生器设计及FPGA实现(04-18)
- 基于FPGA的Bayer彩色自动白平衡设计与实现(06-05)
- 十个中文例程教会你轻松上手制作Arduino智能小车(06-04)
- 技术控做的玩具就是酷,小车跷跷板平衡控制系统设计,完整解决方案(06-04)
- 13个基于STM32的经典项目设计实例,全套资料~(06-03)
- 助力机械手的应用及系统功能分析(12-19)