yaffs2文件系统实现原理分析_带书签.pdf
文本预览下载声明
1 概述
YAFFS (Yet Another Flash File System )文件系统是专门针对 NAND flash 设计的嵌入式
文件系统,目前有 YAFFS 和 YAFFS2 两个版本,两个版本的主要区别之一在于 YAFFS2 能
够更好的支持大容量的 NAND flash 芯片。 YAFFS 文件系统有些类似于 JFFS/JFFS2 文件系
统,与之不同的是 JFFS/JFFS2 文件系统最初是针对 NOR flash 的应用场合设计的,而 NOR
flash 和 NAND flash 本质上有较大的区别,尽管 JFFS/JFFS2 文件系统也能应用于 NAND
flash ,但由于它在内存占用和启动时间方面针对 NOR 的特性做了一些取舍,所以 YAFFS2
对 NAND flash 来说通常才是最优的选择方案。
2 相关概念
分析 YAFFS2 之前,把 NAND flash 相关概念介绍下: NAND flash 由块 (block) 组成,块
又由页 (page)构成,擦除时以块为单位, 读写时以页为单位, 页又包含数据区和空闲区 (OOB,
Out-Of-Band) ,而 Page 在 YAFFS2 中被称为 Chunk ,其中的数据区用来存放实际的数据,
OOB 用来存放附加信息实现 NAND flash 的管理。以 T8000 AXMPFUA 单板使用的 NAND
flash 为例,每块 Block: 128 pages ,每页 Page: (8K + 448) bytes ,数据区为 8K ,OOB 为 448bytes ,
如图 1 所示:
Block : 128 pages
Page : (8K+448 )bytes
Plane :4096blocks
图 1 NAND flash 物理结构
3 数据结构
struct yaffs_dev 是 YAFFS2 文件系统最核心的数据结构,表示 YAFFS2 文件系统的超级
块,它建立了整个文件系统的层次结构,并衔接 VFS 层和 MTD 层,与 struct super_block 、
struct mtd_info 的关系如图 2 所示:
struct
VFS 层
super_block
……
s_fs_info
……
YAFFS2 层 struct
yaffs_dev
……
driver_context
显示全部