Chinaunix首页 | 论坛 | 博客
  • 博客访问: 816910
  • 博文数量: 117
  • 博客积分: 2583
  • 博客等级: 少校
  • 技术积分: 1953
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-06 22:58
个人简介

Coder

文章分类
文章存档

2013年(1)

2012年(10)

2011年(12)

2010年(77)

2009年(13)

2008年(4)

分类: 嵌入式

2010-03-19 18:49:53

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

阅读(1259) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~