打印
[ZLG-ARM]

Yaffs2 源 代 码 情 景 分 析

[复制链接]
2398|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
reeper|  楼主 | 2009-4-9 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一.        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

相关帖子

沙发
zcying| | 2009-4-9 14:56 | 只看该作者

yaffs一个块的大小是512+8 BYTE

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

185

帖子

0

粉丝