FAT文件系统在NAND Flash存储器上的改进设计
发布时间:2008/5/28 0:00:00 访问次数:593
nand flash存储器是一种数据正确性非理想的器件,容易出现位反转现象,同时在使用中可能会有坏损单元。数据写入必须在李白的区块或者擦除后的区块巾进行,其底层技术要求以块为单位进行擦除(将“oxff”写入到要擦除的存储块中),再按页写入。flash存储器的擦除次数是有限的,一般是100000次。当某块执行过度的擦除操作后,这一块的存储空间将会变为“只读”状态,不能再写入数据。根据以上特点,为了避免某些块的过度操作,而导致存储卡使用寿命降低,设计专门针对flash存储器的文件系统是必要的。
1 nand fiash存储器的特点
nand flash存储器的读取操作与普通sram存储器类似,可以随机读取,读出的速度也很快。芯片生产厂商规定存储空间的第1块必须是有效块,装载了出厂标识、系统配置等信息;而其他块可能在使用前就足坏块,需要在初次使用时进行坏块检测并标记,禁止数据写入,由于存储器每一块的内部结构都是相互独立的,坏块并不影响系统的操作。
在设计nand flash文件系统前,首先要了解其内部结构。目前市面上的nand flash芯片单片容量已高达lgb,存储器容量最高达4gb(由4片1gb的芯片封装而成)。知名的nand flash制造商有samsung、tashiba等公司。下面以samsung公司的k9wag08ulm为例,说明大容量nand flash芯片的组织结构。在k9wag08u1m中,页(page)是最基本的组织单位。每页有2048+64=2112字节,64页构成一个块。(block),每块的容量是(2048+64)×64=(128kb+4kb),芯片共8192块,总存储容量为(128kb+4kb)×8192=lgb+32mb。存储器每页带有64字节的冗余字节。整个芯片共计32 mb的冗余空间,用于存放块信息和ecc校验码等。
2 fiash文件系统的应用特点
目前嵌入式设备的flash文件系统主要有3种:m-systems公司的trueffs、jffsx以及唯一专门针对nand f1ash设计的yaffs。这3种flash文件系统都引入了日志结构的思想,其巾jffsx和yaffs是代码开源的。
现在大多数嵌入式手持设备上的操作系统采用fat文件系统,而dos下通用的fat文件系统并不适合直接移植到flash存储器中.主要有以下3个原因:第l,嵌入式系统的应用条件恶劣,电源电压不稳定,突发性断电以及非法插拔都将对flash的存储造成灾难性的影响;通用文件系统对于可靠性的设计考虑不足。
第2,通用文件系统的记录信息需要被多次改写(如fat表),而记录信息放在固定的区块中,将导致该区块的频繁使用,影响整个flash器件的使用寿命。第3,flash存储器读取速度比磁盘驱动器快,存储的内容很多是多媒体数据资料。这些数据允许一定程度的误码率,未必需要像通用文件系统那样严格保证存储的正确性。如果通过灵活的校验机制与坏损管理,则可以达到更高效的存储空间利用率。这对成本敏感的嵌入式系统来说是更加需要考虑的。
针对上述情况,本设计构建了一个适合nand flash存储器的fat文件系统。针对其存储特点,对fat表和frt表的存储方式进行了改进,延长了使用寿命,增强了可靠性,使之更有利于flash存储器的应用。
3 fat文件系统的结构
fat文件系统技术成熟、结构简单、系统资源开销小,易于在嵌入式系统的硬件平台上实现。
文件系统由以下4部分组成:
o——系统记录区(system record region);
1——fat表区(fat region);
2——文件登记表区(file register table region);
3——数据区(data region)。
①系统记录区(system record region,sr)存放最重要的文件系统信息,如flash存储器的类型、容量、版本信息、数据区域的位置和大小,还包括分区表和主引导程序。主引导程序的任务是检查分区表是否正确,自动读取
fat表和frt表,将其复制到控制终端的内存中。
②文件分配表(file allocation table,fat)存放flash存储器上所有区块的占用与空闲情况以及每个文件的存储连接结构。fat文件系统中有12位、1 6位、32位3种不同的格式。不同格式的文件系统管理存储单元的个数不同,如fatl6文件系统采用16位字长的分配表,最多可以管理2的16次方(65536)的基本存储单元。
③文件登记表(file register table,frt)紧跟在fat表之后.存放f1ash文件系统中每一个文件的代号、长度、属性、目录、生成或最后修改的时间,以及该文件的存储链在文件分配表中的入口。
④数据区域(data region)用于存放数据。本flash文件系统中,数据分配的最小单位是flash存储器的一个基本擦除单元,即一个物理区块(block)。
nand flash存储器是一种数据正确性非理想的器件,容易出现位反转现象,同时在使用中可能会有坏损单元。数据写入必须在李白的区块或者擦除后的区块巾进行,其底层技术要求以块为单位进行擦除(将“oxff”写入到要擦除的存储块中),再按页写入。flash存储器的擦除次数是有限的,一般是100000次。当某块执行过度的擦除操作后,这一块的存储空间将会变为“只读”状态,不能再写入数据。根据以上特点,为了避免某些块的过度操作,而导致存储卡使用寿命降低,设计专门针对flash存储器的文件系统是必要的。
1 nand fiash存储器的特点
nand flash存储器的读取操作与普通sram存储器类似,可以随机读取,读出的速度也很快。芯片生产厂商规定存储空间的第1块必须是有效块,装载了出厂标识、系统配置等信息;而其他块可能在使用前就足坏块,需要在初次使用时进行坏块检测并标记,禁止数据写入,由于存储器每一块的内部结构都是相互独立的,坏块并不影响系统的操作。
在设计nand flash文件系统前,首先要了解其内部结构。目前市面上的nand flash芯片单片容量已高达lgb,存储器容量最高达4gb(由4片1gb的芯片封装而成)。知名的nand flash制造商有samsung、tashiba等公司。下面以samsung公司的k9wag08ulm为例,说明大容量nand flash芯片的组织结构。在k9wag08u1m中,页(page)是最基本的组织单位。每页有2048+64=2112字节,64页构成一个块。(block),每块的容量是(2048+64)×64=(128kb+4kb),芯片共8192块,总存储容量为(128kb+4kb)×8192=lgb+32mb。存储器每页带有64字节的冗余字节。整个芯片共计32 mb的冗余空间,用于存放块信息和ecc校验码等。
2 fiash文件系统的应用特点
目前嵌入式设备的flash文件系统主要有3种:m-systems公司的trueffs、jffsx以及唯一专门针对nand f1ash设计的yaffs。这3种flash文件系统都引入了日志结构的思想,其巾jffsx和yaffs是代码开源的。
现在大多数嵌入式手持设备上的操作系统采用fat文件系统,而dos下通用的fat文件系统并不适合直接移植到flash存储器中.主要有以下3个原因:第l,嵌入式系统的应用条件恶劣,电源电压不稳定,突发性断电以及非法插拔都将对flash的存储造成灾难性的影响;通用文件系统对于可靠性的设计考虑不足。
第2,通用文件系统的记录信息需要被多次改写(如fat表),而记录信息放在固定的区块中,将导致该区块的频繁使用,影响整个flash器件的使用寿命。第3,flash存储器读取速度比磁盘驱动器快,存储的内容很多是多媒体数据资料。这些数据允许一定程度的误码率,未必需要像通用文件系统那样严格保证存储的正确性。如果通过灵活的校验机制与坏损管理,则可以达到更高效的存储空间利用率。这对成本敏感的嵌入式系统来说是更加需要考虑的。
针对上述情况,本设计构建了一个适合nand flash存储器的fat文件系统。针对其存储特点,对fat表和frt表的存储方式进行了改进,延长了使用寿命,增强了可靠性,使之更有利于flash存储器的应用。
3 fat文件系统的结构
fat文件系统技术成熟、结构简单、系统资源开销小,易于在嵌入式系统的硬件平台上实现。
文件系统由以下4部分组成:
o——系统记录区(system record region);
1——fat表区(fat region);
2——文件登记表区(file register table region);
3——数据区(data region)。
①系统记录区(system record region,sr)存放最重要的文件系统信息,如flash存储器的类型、容量、版本信息、数据区域的位置和大小,还包括分区表和主引导程序。主引导程序的任务是检查分区表是否正确,自动读取
fat表和frt表,将其复制到控制终端的内存中。
②文件分配表(file allocation table,fat)存放flash存储器上所有区块的占用与空闲情况以及每个文件的存储连接结构。fat文件系统中有12位、1 6位、32位3种不同的格式。不同格式的文件系统管理存储单元的个数不同,如fatl6文件系统采用16位字长的分配表,最多可以管理2的16次方(65536)的基本存储单元。
③文件登记表(file register table,frt)紧跟在fat表之后.存放f1ash文件系统中每一个文件的代号、长度、属性、目录、生成或最后修改的时间,以及该文件的存储链在文件分配表中的入口。
④数据区域(data region)用于存放数据。本flash文件系统中,数据分配的最小单位是flash存储器的一个基本擦除单元,即一个物理区块(block)。