YAFFS
,
Yet Another Flash File System
,是一种类似于
JFFS/JFFS2
的专门为
Flash
设计的嵌入式文件系统。与
JFFS
相比,它减少了一些功能,因此速度更快、占用内存更少。
YAFFS
和
JFFS
都提供了写均衡,垃圾收集等底层操作。它们的不同之处在于:
1
)、
JFFS
是一种日志文件系统,通过日志机制保证文件系统的稳定性。
YAFFS
仅仅借鉴了日志系统的思想,不提供日志机能,所以稳定性不如
JAFFS
,但是资源占用少。
2
)、
JFFS
中使用多级链表管理需要回收的脏块,并且使用系统生成伪随机变量决定要回收的块,通过这种方法能提供较好的写均衡,在
YAFFS
中是从头到尾对块搜索,所以在垃圾收集上
JFFS
的速度慢,但是能延长
NAND
的寿命。
3
)、
JFFS
支持文件压缩,适合存储容量较小的系统;
YAFFS
不支持压缩,更适合存储容量大的系统。
YAFFS
还带有
NAND
芯片驱动,并为嵌入式系统提供了直接访问文件系统的
API
,用户可以不使用
Linux
中的
MTD
和
VFS
,直接对文件进行操作。
NAND Flash
大多采用
MTD+YAFFS
的模式。
MTD
(
Memory Technology Devices
,内存技术设备)是对
Flash
操作的接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开。
YAFFS2
是
YAFFS
的升级版,能更好的支持
NAND FLASH
,我们采用最新的
YAFFS2
文件系统。我们首先下载
YAFFS
文件系统。
http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2.tar.gz?view=tar
这个文件我们已经下载到光盘的
[DISK4\linux
相关
\linuxtool\yaffs2]
目录下。下载完成以后解压着文件包,在文件包的根目录下面有个文件
patch-ker.sh,
我们执行这个文件,就可以很轻松的把
yaffs2
加入到内核中。具体命令是:
[root@localhost yaffs2]# sh patch-ker.sh /linux2.6_2410/linux-2.6.14
这里我们假设我们的
linux2.6.14
的内核在
/linux2.6_2410/linux-2.6.14
目录下。执行完成以后,我们的
yaffs2
已经加入到了内核,在内核的
fs
目录下你会发现多了一个
yaffs2
目录,在这个目录下是
yaffs2
的相关内容,在内核的配置菜单
[File systems]
à
[miscellaneous filesystems]
中增加了
[Yaffs2 file systems support]
选项。这个选项就是
yaffs2
的配置内容。我们可以选择这个选项的全部内容,保存配置,然后退到终端,输入
make
,重新编译内核,内核中就增加了对
yaffs2
文件系统的支持。