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 文件系统。
下载完成以后解压缩文件包,在文件包的根目录下面有个文件 patch-ker.sh, 我们执行这个文件,就可以很轻松的把 yaffs2
加入到内核中。具体用法为:
usage: ./patch-ker.sh c/l kernelpath
if c/l is c, then copy. If l then link
第二个参数可以使c或者是l,如果是c的话,就是把yaffs文件系统的内容直接复制到内核源代码目录内,如果是l的话,就是只创建一个链接。
[root@localhost yaffs2]# patch-ker.sh
c ../linux-2.6.33
这里我们假设我们的 linux2.6.33 的内核在和yaffs源代码解压缩的同一个目录内。执行完成以后,我们的 yaffs2 已经加入到了内核,在内核的 fs 目录下你会发现多了一个 yaffs2 目录,在这个目录下是
yaffs2 的相关内容,在内核的配置菜单 [File systems] à [miscellaneous filesystems] 中增加了
[Yaffs2 file systems support] 选项。这个选项就是 yaffs2
的配置内容。我们可以选择这个选项的全部内容,保存配置,然后退到终端,输入 make ,重新编译内核,内核中就增加了对 yaffs2
文件系统的支持。
阅读(1266) | 评论(0) | 转发(0) |