[ZLG-ARM] Yaffs2 源 代 码 情 景 分 析

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

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

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

185

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部