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