微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式系统中Nand Flash写平衡的研究

嵌入式系统中Nand Flash写平衡的研究

时间:04-10 来源:互联网 点击:

随着嵌入式技术在电子信息等领域的快速发展,对数据存储设备容量和性能的要求也日益提高。Nand Flash在这一领域的应用越来越广泛,由于Nand Flash在写操作之前需要擦除整块且使用寿命有限,因此,如何更有效的管理好Nand Flash提高其使用寿命成为一个研究热点。就目前已经实现高效管理Nand Flash的研究成果来看,主要是在读写操作过程中引入控制机制来实现闪存各单元的均衡擦除,从而提高其使用寿命。其中ZLG/FFS是周立功公司开发的 Nand Flash通用驱动程序,虽然其很好的实现了均衡管理,但在追加文件内容时需要擦除整块,这与提高Nand Flash的使用寿命而尽量少擦除闪存块观点是相违背的,为此本文设计了一个新的FFS,其最突出的特点是尽可能保证在追加文件内容时不擦除闪存块,从而提高FLASH的使用寿命,而且根根据需要,还可改写读写接口以支持多种文件系统。

1 FFS引入

由于Nand Flash的物理特性:出厂之前可能存在坏块以及操作过程中再次出现坏块,擦除次数有限,页读写块擦除,写之前须先擦除,存储器中的数据只能由1变0等,要想更有效的使用闪存,提高其使用寿命和利用率,擦除操作必须尽可能的少,并且,擦除操作必须尽可能的均匀分布在整个闪存上。为此需设计一个文件系统来高效的管理闪存,提高其使用寿命。在引言中已提过ZLG/FFS,本文是在基于ZLG/FFS的基础上来设计一个改进了的FFS,用FFS来封装底层的具体硬件操作,向上层文件系统提供一个与底层具体硬件操作无关的通用驱动接口,可以使上层文件系统更方便的访问闪存。

2 通用驱动程序FFS的设计

2.1 保存FFS硬件信息的结构体变量

根据Nand Flash 特性,需要一个变量ValidBlock来记录当前物理盘的有效块(可以保存数据的块)数;需要一个擦除次数表来记录每个物理块的擦除次数;需要一个物理块使用状况表来表示每个物理块是否使用以及是否是坏块,并且,由于上层提供给FFS是逻辑扇区,同时由于有坏块的存在,逻辑扇区与物理扇区之间不是简单的映射关系,因此需要一个逻辑块与物理块之间的映射表;最后还需一个指向硬件信息的结构体指针。FFS硬件信息的结构体如下:

const FlashDriver *Drive里包含了闪存的硬件参数(物理盘总块数、总扇区数、每块扇区数、每扇区字节数据)以及相应的闪存读写、擦除闪存和检验写入扇区数据函数。

2.2 FFS物理盘存储结构

2.2.1

物理盘数据结构

(1)系统区。由于坏块表是与Nand Flash存储器相对应的,它必须保存在芯片上。而Nand Flash的第0块比较特殊,它在出厂时一定是有效块,并且可以保证在擦除一定的次数后还是有效块。因此,将坏块表保存于第0块比较合适。此块不保存有效数据,称为系统区,其它块为数据区,真正保存坏块表的是第0块每扇区的前512字节,第0扇区的备用16字节是系统标志。

(2)数据区。在一般的文件系统里,存储数据用的每扇区字节数为512,在这里,用每扇区的备用16字节来存逻辑块索引、物理擦块除次数、物理状态等信息是比较合适的,该区域称为属性域,每扇区前512字节称为数据域。物理盘数据结构图见图1

2.2.2系统标志、属性域数据结构和坏块表

(1) 系统标志域。该域值现设定为“NANDFFS”,占据备用数据区的前8个字节,不足部分和保留区域置为0。

(2)坏块表。根据Nand Flash的性质,可以将“1”写为“0”,所以将物理坏块表设置成位表,一位对应一个物理块的状况。如果某一块是坏块,则将第0块对应位置为0。位与物理块的对应关系为:第0扇区第0字节位0对应第0块,位1对应第1块,位2对应第3块,以此类推。

(3)属性域。属性域占据数据区的512B-527B字节区域,数据结构如下:

逻辑块索引:占据扇区的512B-515B区域,记录扇区在物理块的逻辑块号,如果没有使用,则值可能为0X00000000(擦除后方可使用)和0XFFFFFFFF(不需擦除可直接使用)。

有效标志:仅使用数据区的516B区域,其值为‘V’时为有效,其他无效。系统第一次格式化闪存时,置该字节的值为‘V’。

保留区域:数据区517B区域, 在第一次使用时根据该字节确定该块是不有效;

使用标志:占据数据区的518B区域,0XFF未被使用,不为0XF0表示被使用。

页使用情况:占据数据区的519B-520B区域,每两位(页追加标志域)表示一次追加,值0b11表示该页数据域512字节未被追加,0b10表示追加未完成,0b00表示追加完成,这里可以保证在一页数据区8次追加文件,在文件恢复时也会用到该域根据该域判断是追加还是修改文件;

块擦除次数:占据数据区的521B-524B,每

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

网站地图

Top