330105-02-12-10-02-00
BentlyNevada330105-02-12-10-02-00O引言目前广泛应用的嵌入式文件系统有JFFS/JFFS2(JournaIlingFLASHFileSystern)和YAFFS/YAFFS2(YetAnotherFLASHFileSyst-em)。JFFS/JFFS2文件系统主要针对NORFLASH设计,在NANDFLASH上性能不佳。YAFFS/YAFFS2文件系统是专门针对NANDFLASH设计,其具有可写入、修改并能***保存文件的特性,并提供了损耗平衡和掉电保护。与JFFS相比,它减少了一些功能,因此速度更快、占用内存更少。此外YAFFS自带NANDFLASH芯片驱动,并为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD和VFS,直接对文件进行操作。YAFFS文件系统已发展为两个版本,YAFFS和YAFFS2。YAFFS版本只支持512B的小页NANDFLASH。而YAFFS2作为YAFFS的升级版,在向下兼容小页NANDFLASH的同时也能够更好地支持2KB的大页NANDFLASH。YAFFS2的性能与YAFFS相比有很大提高,表1为YAFFS,YAFFS2(512B×8),YAFFS2(2KB×8)三者性能比较,从测试结果可以看出,YAFFS2和2KB大页NANDFLASH的结合更好地提高了存储器操作效率。YAFFS2文件系统在设计时就充分考虑了大页NANDFLASH的结构,根据大页NANDFLASH以页面为单位存取的特点,将文件***成固定大小的页,利用大页NANDFLASH提供的每个页面(2112B,其中前2048B存储数据)64B的备用空间(SpareData,OOB)来存放ECC和文件系统的***信息,这样不仅能够实现错误检测和坏块处理,还能够提高文件系统的加载速度。以三星公司的K9F1G08UOA的NANDFLASH为例,它的单片存储容量为128MB,由1024block组成,每个块包含64page,每个页均包含一个2048B的数据区和64B的备用空间,总共包含2112B。结构如图2所示。blockState:描述该块的状态。如果不是OxFF,就说明是坏块。相对应的是,所有正常的块,里面所有数据都是OxFF的。chunkld:描述该页在一个文件内的索引,所以文件大小被限制在232×2KB。chunkld为O,说明此页面保存的是文件头。不为O,说明是数据页面。文件内偏移量为0,即放在***个页面的文件,其chunkId为1,后面的以此类推。ObjectID:描述对象ID号,用来惟一标示一个文件。所以YAFFS2文件系统支持的文件总数限制在232个。nBytes:记录该页面内的有效字节数。blockSequence:记录着各块被分配出去的先后顺序,每分配出去一块,就加1。在YAFFS2文件系统建立的时候,块的扫描顺序就是由它决定的,而不是FLASH的物理介质顺序。在垃圾收集的时候也会以此作为参考之一,判断该块是否适合回收。tagsEcc:Ecc,YAFFSTags区域的ECC校验数据。ECC:数据区的ECC校验数据。读/写数据区的数据时,每256B生成3BECC校验和,一页面2KB数据就会生成24B的校验数据。3系统移植此次开发采用宿主机+目标系统的开发模式。宿主机为PC+Fedora9,Fedora9安装在PC的虚拟机内。目标系统软硬件组成为目标板(CPU为S3C2440A)+U-Boot+嵌入式Linux,Linux版本为2.6.29.4。交叉编译工具为arm-linux-gcc-4.3.2。选用嵌入式Linux系统是因为它有着技术上***,健壮、安全;是多任务系统,支持ARM体系结构;源码开放,驱动程序及其他资源非常丰富,良好的可移植性等优点。嵌入式系统的移植从软件角度可以分为以下四个步骤。如图3所示。03018637-02EH-XD16EH-YR121756-A71756-BA11756-DNB1756-ENBT1756-IB321756-IF161756-L631756-OB16E/A1756-OB321756-OF86SN1145-1BA02-0CA1140NOE77101490NOR0000360054400MA0185100MA0186100MA032900107KR264LSXYAB3K-1A6SE6430-2UD31-5CA057***0957***1157***1657***2357***43IC670GBI002A06B-6115-H006A61L00010142A860-0203-T001A860-2005-T301UFX7112SNAT603CNTSNAT603CNT5X00226G011756-IB321756-A71756-BA11756-IB161756-IF161756-OF4?1756-PA721756-TBCH1756-TBNH1771-IAD1771-OAD1756-L72IC647MPS101IC693CBK001IC693CHS391IC693CPU350IC693MDL646IC693MDL655IC693MDL741IC693MDL752IC693PWR331编程电缆1756-A41756-CN2R1756-EN2T1756-L621756-PA721786-RG61786-TPS1786-XT1794-ACNR151794-IB321794-IE121794-OE121794-OV321794-PS131794-PS31794-TB321794-TB3GTM-T88IVM129HIC200ALG260DIC200ALG260EIC200MDL650F140-CMN-6300140ACI04000140ACO02000DKC03.3-040-7-FWPMC-2/11/08RD316T33WP02S29Y01SS302H-3Z-D56GT2002-0EB2031C014-503-4-001746-IB161746-IB81746-IM161746-NI41746-NO4I1746-NO8V1746-OB161746-OB81746-OW161746-P41747-BA1747-L5311747-L5521747-L5531756-A71756-BA11756-DNB1756-ENBT1756-IB321756-IF161756-L631756-OB16E/A1756-OB321756-OF81763-L16BWA1769-IQ321747-CP31762IF20F21762-IQ161762-OW81769-0F41769-ECR1769-IF81769-IQ161769-IQ321769-L32C1769OB321769-OB321769-PA41769SDN1784PCIC1786TPS1786XT140DDI353006SN1118-0DK23-0AA2MDS60A0015-54A3-4-00140CRA21110140ACI03000140CPU11302PC-E984-265A06B-6132-H0021746-HSRV1762-L24BWA1757-SRM3HAC16831-11746-P21756-PA75MVME162PA-SE344CP60005X00226G01PMC-2/11/08电源2090-U3CK-D442098-DSD-005X1746-A41746-OW163HAC020208-001/043HAC025062-006/013HAC17484-8/06HDD02.2-W040N-HD32-01-FW395IC300DQM202IC300MIX902MVI46-MCMMVME167-035A22B-A5P0N10422B-D010N1041746-A41746-OB16ATV71HD37N4ZRTAC-011746-IB321746-NI41746-NI81746-NO4V1746-NT81746-P21746-P41747-L5511747-SN1756-L621C31224G011745-E1511745-LP151TACMP-454-0-0-21756-L62BRC100ICSE08B5*24VJRMSP-P8601140ACI03000140ACO02000140CRA93200140CRP93200140DDI35310140DDO35300140NOE771011756-PA72MVI94-MCM803316738425035823842522215PT4626-5M-6/18HG2-6400PSCA-SS-70-109905-462PU515A3BSE032401R11756-A4140CRA93200140DDI84100140DDO84300140XCP51000140XTS002001734-0B8E1734-0E2V1734-IE2VE7280728-06-029E7281FT5076-0AC01-21756-0F81756-A41756-CNB1756-ENBT1756-IF161756-L611746-NR4MVI46-MCM80350APFEAIIIPFTL101A-1.0KNC98130-A1002-C76-03-25140AC013000140ACI04000140ACO02000140***I03000140CRA93200140CRP93200140DD035300140DDI35300140DDI35310140NOE771011756-A101756-A131756-A171756-A71756-CNBR1756-ENBT1756-HSC1756-IF161756-IH16I1756-IV321756-L621756-N21756-OV32E1756-PA721756-TBCH6DD1600-0AJ06DD1606-3AC06DD1610-0AH06DD1611-0AD0)