YAFFS文件系统在嵌入式Linux上的实现_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、yaffs文件系统在嵌入式linux上的实现随着技术在各种产品中的广泛应用,嵌入式系统中的数据存储和管理已经成为一个重要的讨论课题。flash存储器具有速度快、容量大、成本低等无数优点,因此在嵌入式系统中被广泛用做外存储器件。flash主要有nor和nand两种类型。目前,针对nor flash设计的文件系统jffs/jffs2在嵌入式系统中已得到广泛的应用;随着nand作为大容量存储介质的普及,基于nand闪存的文件系统yaffs(yet another flash file system)正逐渐被应用到嵌入式系统中。nand闪存介绍nor 和nand是现在市场上两种主要的非易失性闪存技术。

2、nor比较适合存储程序代码,其容量普通小于16mb;nand则是高密度数据存储的抱负解决计划,其容量可达1gb以上。nand闪存的存储单元为页和块。普通来说,128mb以下容量芯片的一页大小为528字节,依次分为2个256字节的主数据区,最后是16字节的备用空间;一个块由若干页组成,通常为32页;一个存储设备又由若干块组成。与其他存储器相比,nand闪存具有以下特点:不是彻低牢靠的,每块芯片出厂时都有一定比例的坏块存在;各个存储单元是不行挺直改写的,在每次改写操作之前需要先擦除;擦除操作以块为单位举行,而读写操作通常以页为单位举行;各块的擦除次数有限,普通为10万"100万次;用法复

3、杂的i/o口串行存取数据。yaffs文件系统简介yaffs类似于jffs/jffs2,是特地为nand闪存设计的嵌入式文件系统,适用于大容量的存储设备。它是日志结构的文件系统,提供了损耗平衡和掉电庇护,可以有效地避开意外掉电对文件系统全都性和完整性的影响。yaffs文件系统是按层次结构设计的,分为文件系统管理层接口、yaffs内部实现层和nand接口层,这样就简化了其与系统的接口设计,可以便利地集成到系统中去。与jffs相比,它削减了一些功能,因此速度更快,占用内存更少。yaffs充分考虑了nand闪存的特点,按照nand闪存以页面为单位存取的特点,将文件组织成固定大小的数据段。利用nand闪

4、存提供的每个页面16字节的备用空间来存放ecc(error correction code)和文件系统的组织信息,不仅能够实现错误检测和坏块处理,也能够提高文件系统的加载速度。yaffs采纳一种多策略混合的垃圾回收算法,结合了贪心策略的高效性和随机挑选的平均性,达到了兼顾损耗平均和系统开销的目的。yaffs文件组织结构yaffs将文件组织成固定大小(512字节)的数据段。每个文件都有一个页面特地存放文件头,文件头保存了文件的模式、全部者id、组id、长度、文件名等信息。为了提高文件数据块的查找速度,文件的数据段被组织成树形结构。yaffs在文件举行改写时总是先写入新的数据块,然后将旧的数据块从

5、文件中删除。yaffs用法存放在页面备用空间中的ecc举行错误检测,浮现错误后会举行一定次数的重试,多次重试失败后,该页面就被停止用法。yaffs物理数据组织yaffs充分利用了nand闪存提供的每个页面16字节的备用空间,参考了smartmedia的设定,备用空间中6个字节被用作页面数据的ecc,2个字节分离用作块状态字和数据状态字,其余的8字节(64位)用来存放文件系统的组织信息,即元数据。因为文件系统的基本组织信息保存在页面的备份空间中,因此,在文件系统加载时只需要扫描各个页面的备份空间,即可建立起囫囵文件系统的结构,而不需要像jffs 那样扫描囫囵介质,从而大大加快了文件系统的加载速度

6、。yaffs擦除块和页面分配yaffs中用数据结构来描述每个擦除块的状态。该数据结构记录了块状态,并用一个32位的位图表示块内各个页面的用法状况。在yaffs中,有且仅有一个块处于“当前分配”状态。新页面从当前举行分配的块中挨次举行分配,若当前块已满,则挨次寻觅下一个空闲块。yaffs垃圾收集机制yaffs用法一种多策略混合的算法来举行垃圾回收,将贪心策略和随机挑选策略按一定比例混合用法:当满足特定的小概率条件时,垃圾回收器会试图随机挑选一个可回收的页面;而在其他状况下,则用法贪心策略回收最“脏”的块。通过用法多策略混合的办法,yaffs能够有效地充实贪心策略造成的不平均;通过不同的混合比例,

7、则可以控制损耗平均和系统开销之间的平衡。考虑到nand的擦除很快(和nor相比可忽视不计),yaffs将垃圾收集的检查放在写入新页面时举行,而不是采纳jffs那样的后台线程方式,从而简化了设计。yaffs实现开发环境简介本文采纳的是宿主机目标板的开发模式。宿主机为pc+redhat9.0,目标板为三星公司的嵌入式,版本为2.6.11.12。nand闪存是三星公司64mb的k9f5608u0c。yaffs的源码可以从网站下载。yaffs移植:1)在内核中建立yaffs名目fs/yaffs,并把下载的yaffs代码复制到该名目下面。2)修改fs/kconfig,使得可以配置yaffs。3)修改fs

8、/makefile,添加如下内容:obj-$(config_yaffs_fs) += yaffs/4)在生成的yaffs名目中生成makefile 和kconfig文件。5)修改nand分区。此分区要结合vivi里的分区举行设置,如下:6)配置内核时选中mtd支持和yaffs支持。7)编译内核并将内核下载到开发板的flash中。yaffs文件系统测试:1)内核启动之后,启动信息中应当含有如下内容:2)假如在内核里面添加了proc文件系统的支持,那么proc中应当包含有关yaffs的信息。3)dev名目下的相关名目中包括有关nand设备的信息。4)建立mount名目将文件拷贝到mount上的名目

9、下后,umount设备,再次mount后可以发觉拷贝的文件仍然存在。这时删除该文件,然后umount,再次mount后可以发觉拷贝的文件已经被删除,由此可见该分区可以正常读写。5)在flash上建立根文件系统:重新启动,并转变启动参数:param set linux_cmd_line "noinitrd root=/dev/mtdblock3 init=/linuxrc console="ttysac0""再次重新启动后,开发板就可以从flash启动根文件系统了。结语yaffs是特地为nand闪存设计的,它的浮现使得价格低廉的nand闪存芯片具有了高效性和茁壮性。yaffs文件系统性能优越且易于移植,已经胜利应用于linux、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论