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 文件系统的支持。