摘要 嵌入式体系的很多数据都存储在其F1ash芯片上。依据Flash器材的固有特性,构建一个合适办理NAND Flash存储器的FAT文件体系,并论述详细的规划思维。该体系改善了FAT表和FRT表的存储方法,延长了存储器的运用寿数,进步了稳定性。
关键词 NAND Flash存储器 FATl6文件体系FAT表FRT表
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)。
考虑到文件体系在嵌入式设备上完结的方便性并权衡Flash存储器的运用规划.挑选、树立FATl6文件体系。
4 FAT文件体系的改善规划
当文件体系作业时,产生改变的只要FAT表和紧跟在这以后的FRT表,因而,只用盯梢记载FAT表和FRT表就能知道文件操作的详细状况,这也是文件体系的中心;但Flash存储器结构与硬盘不同,不能直接改写其内容。直接移植的FAT文件体系、FAT表和FRT表一直寄存在同一个区块中,将会导致该区块的运用寿数显着比其他的区块短。假如这一重要区域失效,那么将影响整个存储器的运用,因而有必要改善两个表的存储方法。
Flash出产厂商设定的存储空间的第l区块必定是有用块。在改善的规划中,将第1个区块(128KB+4KB)作为存储器的体系记载区,一起在此区块中树立一个100KB(50页)的空白区域,用于记载FAT表在Flash中的开始地址(FRT表紧跟FAT表之后,不用再独自记载其首地址)。依照写入操作以页为单位的规矩,100 KB的空间,能够参加FAT表的开始地址50次。
FIash第1块的分配信息区结构如图1所示。
改善规划的文件体系把FAT表和FRT表作为可移动的数据放在某一个区块内,在Flash的体系信息区中记载着FAT表的首地址,并用指针指向它。每次FAT表存储的方位产生改变时,只需将新方位的首地址添加到体系信息区的空白区域中,再调整指针的指向。这样防止了FAT表和FRT表一直在一个区块中重复擦写,导致该区块被过度运用,缩短存储器的寿数。文件体系的操作原理框网如图2所示。
图2中,主引导区程序首要读出存储在体系信息区中FAT表的首地址,找到FAT表和FRT表,再将其复制到操控终端的内存中进行操作(内存中能够按位修正,防止Flash不能按位修正的问题)。因为FAT文件体系是索引的链式结构,在内存中修正FAT表和FRT表的一起,也将两个表的改写状况以链式的方法紧跟在Flash存储器中两个表后边的空白区域里。这样在任何时候产生忽然掉电或不合法插拔而导致内存中FAT表和FRT表丢掉的状况下,也能依据Flash中改写的内容康复两个表,进步文件体系的可靠性。
在悉数操作完结后,先把内存中的FAT表和FRT表写到存储器的转存区块中,擦除本来表地点的区块,再将转存区块中的内容复制到擦除后的原区块中。最终,擦除转存区块,完结整个一次操作。
一起,为了防止表存储区块的过度运用,当其擦除操作次数到了一个阈值(如500000次)时,先将FAT表和FRT表移动到其他空白区块,新区块作为表的存储区块。再把其间FAT表的首地址,写到FIash存储器的体系信息区的预留空白区域中,经过改变指针,程序在下次操作时将读取新地址。原先寄存FAT表和FRT表的区块被标志为无效,最终经过Flash的废物收回战略,收回此区块。这样可到达将FAT表和FRT表作为移动数据存储的意图,延长了运用寿数,如图3所示。
上面的规划中,存储器第l区块作为信息记载区块。其间的预留空白空间能够记载50个地址,能够满意FAT表和FRT表移动5O次。表存储区块的使片j寿数进步了5O倍。
经过上面的改善,文件体系不只防止了FAT表和FRT表一直在一个块中被过度运用的现象,也防止了在任何时候,产生掉电或不合法插拔的状况。依然能够依据Flash中修正过的内容从头树立新的FAT表和FRT表,使文件体系不至于遭到丧命的损坏。这样尽管占用了一些Flash资源,但确保了文件体系的安全性和可靠性。经过这样的没计,即便呈现了操作反常的状况,过错也只触及其时被操作的文件,不会分散给F1ash存储器中的其他文件,更不会因而完全损坏FAT表和FRT表,形成整个文件体系的瘫痪。
结语
依据嵌入式体系中Flash存储器的特色没计的FAT文件体系,对FAT表和FRT表的存储方法进行了改善,使其运用寿数和可靠性都有了较大的进步。即便在嵌入式设备操作反常频发的恶劣作业条件下,文件体系也能够确保安全地作业。此文件体系出于可靠性的考虑,较一般的文件体系只多占用1个D(块(转存区块)的资源,而关于嵌入式上运用的NANE)Flash存储器,这样的消耗完全是能够承受的。
编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。