深入理解yaffs2文件系统(一)

深入理解yaffs2文件系统(一)

ID:21105571

大小:34.19 KB

页数:5页

时间:2018-10-19

深入理解yaffs2文件系统(一)_第1页
深入理解yaffs2文件系统(一)_第2页
深入理解yaffs2文件系统(一)_第3页
深入理解yaffs2文件系统(一)_第4页
深入理解yaffs2文件系统(一)_第5页
资源描述:

《深入理解yaffs2文件系统(一)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、深入理解yaffs2文件系统(一)1、Flash文件系统1.1、背景已经有多种flash文件系统(FFSs)或flash块驱动(在之上运行一个常规的FS),同时都有优点或缺点。Flash存储器有非常多的限制,这里就不一一列举了。已经有各种方法解决这些限制,以提供一个文件系统。必须认识到,“flash”,包括NOR和NAND,各自有不同的限制。很容易被专业术语“flash”误导,误以为用于NorFlash的方法也立即适用于NandFlash。Nand块驱动一般采用FAT16作为文件系统,但不够健壮,也不够贴近Flash的特性。这些块驱动通过一个“本地--物理”的映射层来仿真可写的、类似于

2、磁盘扇区的块。当使用FAT16时,这些文件系统工作的相当好,它们内存消耗小,代码尺寸也很小。但就像所有基于FAT的系统一样,它们很容易损坏(如,丢失簇)。其他的途径则是设计整个文件系统,不是基于块驱动,而且是flash友好的,这允许更多的余地来解决上述所提到的问题。当前有两个linux文件系统能非常好的支持NorFLash,那就是JFFS以及它的升级版本JFFS2。这两者都提供日志机制,大大的提升了健壮性,这也是嵌入式系统特别重要的一个特性。不幸的是,它们在RAM消耗和启动时间方面都不是很好。JFFS在flash中的每一个journalling日志节点,需要一个基于RAM的jffs_n

3、ode结构,每一个节点为48字节。JFFS2做了一个大改进,通过剪裁相关的结构体(jffs2_raw_node_ref)而减少到16字节。即使如此,在512字节页大小128M的NandFlash,按平均节点大小来算,也需要250000字节约4M大小。JFFS和JFFS2在启动时,需要扫描整个flash阵列来查找journaling节点,并决定文件结构。由于NAND容量大、慢、连续访问、需要ECC校验,这些特性将导致不可接受的、很长的启动时间。随便掐指一算,扫描128M字节的Nand阵列大小需要25秒钟。设计yaffs2的目的就是:NandFlash友好的、通过提供日志机制达到健壮的、大

4、大减少JFFSx所具有的RAM消耗和启动时间。Yaffs主要是用于内部Nand而不是可移动的Nand(SM卡)。在可移动的SM智能卡,兼容性显得更重要,一般使用FAT文件系统。当然,yaffs也做了深思熟虑,认为稳定性比兼容性更重要。1.2、Yaffs文件系统特性YAFFS是一个专为NandFlash特性设计的文件系统。它已经被证实的好特性有:(1)fast–快速,比其他Flash文件系统要快很多。(2)Easilyported–易于移植,已经移植到GNU/Linux,WinCE,eCOS,pSOS,VxWorks,以及其他各种系统。(3)Logstructured–日志结构,提供均衡

5、负载,使得它非常健壮。(4)支持多种类型的NandFlash芯片,如页大小为512B、1KB、2KB的NnadFlash等等。(5)Veryfastmount–非常快速的文件系统挂载速度,几乎是立即启动的。(6)非常少的RAM消耗。(7)灵活的Licensing授权机制,适合许多情况。YAFFS当前版本为v2,yaffs2除了支持512字节页大小的flash,还支持2K字节页大小的flash(YAFFS1仅仅支持原先的512字节页大小的flash)。YAFFS1和2已经被众多的商业产品所采用。2、关于yaffs1文件系统2.1、yaffs1概述Yaffs使用一个类似于SmartMedi

6、a的flash物理格式,这是由于以下原因所致:(1)一些格式,如坏块标识位置是由芯片厂家决定的,并且不能更改的。(2)潜在的重用编码。有一些域是明显不同的,以反映不同的通途。尽管有这些相似性,yaffs跟SM/FAT还是不兼容的。SM卡需要被重新格式化,才能用于yaffs,反之亦然。文件数据存储在固定大小的跟页大小相同的“chunks”里面,每一页都被文件ID和chunk号所标识。标签则存储在“sparedata”区域,通过文件位置除以chunk大小来决定chunk号。当一个文件的数据被重写时,相关的chunks被新的pages替换,新的pages包含了新的数据,但标签为改变,旧的页则

7、被标识为丢失的(discarded)。文件头“Fileheaders”存储在一个单独的页里面,具有标识,以便和数据页区分开来。页还有一个2bit的短序列号,如果此页被修改过则加1,之所以这样做,是因为:“如果被替换的页被标识为丢弃(discarded)之前,这时发生了意外掉电/意外情况,可能会有两个页具有一摸一样的标签”,这时序列号就可用于仲裁哪一页是被丢弃了的。一个仅仅包含被丢弃页的块(脏块)将被当垃圾回收,另外,也可以把块内的有效页拷贝出来

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。