TrueFFS原理及其在CF卡上的实现
关键词:TrueFFS 损耗均衡 闪速存储器 CF卡
闪速存储器最大的一个缺点就是寿命有限。可擦除的次数因芯片厂商而有所不同,一般都在1万~10万次左右。为了延长闪速存储器的寿命,提高使用效率,Msystems公司推出了TrueFFS系统。它为种类繁多的闪速存储器提供了统一的块设备接口,并且具有可重入、线程安全的特点;支持大多数流行的CPU架构,如PowerPC、MIPS、ARM、X86、68K等。
由于个性鲜明的闪速存储器越来越受到嵌入式系统工程师的青睐,业界流行的嵌入式实时操作系统VxWorks已将TrueFFS作为自身的一个可裁减的模块。目前该模块的版本为2.0,支持Intel、AMD、Toshiba、Fujitsu等厂家生产的大多数型号的闪速存储器和Flash卡,用户只需要更改少量代码,甚至可直接调用;但是,该模块对如今风靡的CF卡缺乏支持。
CF卡采用了Flash技术。形象地说,CF卡就是由若干片闪速存储器外加一个管理器组成;但是,CF卡具有携带方便、易于升级、存储量大、抗震性好、兼容性佳等优点。目前,CF卡标准已经达到1.4版本,容量从最早的2MB到现今的1GB。然而,有限的擦写闪数是闪速存储器遗传给CF卡的先天缺陷。本文介绍如何在CF上实现TrueFFS系统,硬件平台以PowerPC处理器(MPC8250,Motorola公司)为CPU,嵌入式操作系统是VxWorks。
1 TrueFFS的结构
TrueFFS本身并不是一个文件系统,需要在TrueFFS之上加载DOS文件系统才能使用,否则毫无意义。TrueFFS屏蔽了下层存储介质的差异,为开发者提供了统一的接口方式。应用程序对存储设备的读写就对像对拥有DOS文件系统的磁碟设备的操作一样。
如图1所示,TrueFFS由1个核心层和3个功能层组成:编译层、MTD层(Memory Technoilogy Driver)、Socket层。
翻译层主要实现TrueFFS和DOS文件系统之间的高级交互功能,管理文件系统和Flash中各物理可擦块的关系,以及TrueFFS中各种智能化处理功能,例如块映射、损耗均衡(wear-leveling)等。目前有三种不同的翻译层模块可供选择。选择哪一种模块要根据使用的Flash介质采用NOR技术、还是NAND技术,或者SSFDC技术而定。
MTD层实现对具体的Flash进行读、写、擦、ID识别、映射等驱动,并设置与Flash密码相关的一些参数。VxWorks的TrueFFS已经包括了支持Intel、AMD、Toshiba等厂商的大多数Flash芯片的MTD层驱动。新的器件需要编写新的MTD层驱动。
Socket层提供了TrueFFS和硬件之间的接口服务,负责电源管理、检测设备插拔、硬件写保护、窗口管理和向系统注册Socket等。
核心层将其它三层有机结合起来,处理全局问题,例如信息量、计时器、碎片回收和其它系统资源等。
我们最关心的是MTD层和Socket层。VxWorks只提供了编译后的二进制形式的核心层和翻译层驱动。在实现TrueFFS应用之间,先介绍一下TrueFFS的原理。
(凹丫丫范文网fanwen.oyaya.net收集整理)
2 TrueFFS原理
2.1 损耗均衡
闪速存储器不能无限次重复使用。它的每个扇区的擦除次数虽然很大,但却有限;因此,随着使用次数的加长,它最终会变成只读状态,所以应该尽最大 可能延长它的寿命。行之有效的方法就是平衡使用所有的存储单元,而不让某一单元过度使用。这种技术被称之为损耗均衡。TrueFFS使用一种基于一张动态维护表的存储器——块映射的翻译系统来实现损耗均衡技术。当块数据被修改、移动或碎片回收后,这张维护表会自动调整。
然而,如果存储在Flash上的一些数据本质上是静态的,就会产生静态文件锁定问题。存储这些静态数据的区域根据不会被轮循使用,其它区域就会被更频繁地使用,这将降低Flash期望的生命值。TrueFFS通过强制转移静态区域的方
《TrueFFS原理及其在CF卡上的实现》