一. Yaffs2文件系统简介<br />Yaffs是专门为NAND Flash存储器设计的嵌入式文件系统,适用于大容量的存储设备;<br />Yaffs中文件是以固定大小的数据块进行存储的,块的大小可以是512字节,但Yaffs2可以支持2048甚至更大的块<br /><br />1. 名词解释<br />页面:Nand型寻址单元(通常512b或2048b大小),可读、写、标识坏状态,<br />块:可擦除的单元,总共64页(128k的Nand为2k大小,32k的Nand闪存为512b大小)<br />Chunk:Yaffs基本寻址单元,大小等同于页的大小<br />Object:Yaffs对象:包括文件、目录、链接、设备等<br /><br />2. Yaffs的设计<br />Yaffs是一个拥有日志结构的文件系统,它是针对Nand(而不是Nor Flash)Flash设计的,整体都体现出友好而快速的特性。<br />文件的数据都存储在chunk单元中,chunk单元的大小同Nand pages一样大,每一个页都被印上File id和chunk id的标记,这些都是有额外的空间来存储附加信息,通常Nand驱动只使用了这些空间的一部分,Yaffs正是利用了这部分空间中剩余的部分来存储文件系统相关的内容。<br />例如,以512+16B为一个PAGE的Nand Flash芯片为例,Yaffs文件系统数据的存储布局如下所示:<br /><br />0..511<br />数据区域<br /><br />512..515<br />YAFFS TAG<br /><br />516<br />Data status byte<br /><br />517<br />Block status byte 坏块标志位<br /><br />518..519<br />YAFFS TAG<br /><br />520..522<br />后256字节数据的ECC校验结果<br /><br />523..524<br />YAFFS TAG<br /><br />525..527<br />前256字节数据的ECC校验结果<br /><br />可以看到这里Yaffs一共使用了8个Byte用来存放文件系统相关的信息(Yaffs Tags),这8个Byte的具体使用情况按顺序如下:<br /><br />Bits<br />Content<br /><br />20<br />ChunkID,该page在一个文件内的索引号,所以文件大小被限制在2^20 PAGE 即512Mb<br /><br />2<br />2 bits serial number<br /><br />10<br />ByteCount 该page内的有效字节数<br /><br />18<br />ObjectID 对象ID号,用来唯一标示一个文件<br /><br />12<br />Ecc, Yaffs_Tags本身的ECC校验和<br /><br />2<br />Unused<br /> |
|