基于VXWORKS的TrueFFS系统的实现.doc_第1页
基于VXWORKS的TrueFFS系统的实现.doc_第2页
基于VXWORKS的TrueFFS系统的实现.doc_第3页
基于VXWORKS的TrueFFS系统的实现.doc_第4页
基于VXWORKS的TrueFFS系统的实现.doc_第5页
全文预览已结束

下载本文档

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

文档简介

武汉理工大学硕士研究生课程论文课程:嵌入式系统任课教师:刘新华学期:2009-2010年度第2学期成绩基于vxworks的TrueFFS文件系统的实现姓 名 学 号 院 系 专 业 班 级 提交时间: 年 月 日基于vxworks的TrueFFS文件系统的实现摘要:Tornado的TrueFFS是和vxworks兼容的一种M-Systems Flie实现方式。它为种类繁多的flash存储设备提供了统一的块设备接口,并且具有可重入、线程安全的特点,支持大多数流行的CPU构架。TrueFFS屏蔽了下层存储介质的差异,为开发者提供了统一的接口方式,用户可以将应用程序和配置数据等作为文件存放于Flash上,极大的方便了用户对应用程序和配置数据的管理。本文首先介绍了TrueFFS文件系统的架构,接着通过程序配置分别完成FLASH标识、写、擦除、映射、加载文件系统功能。关键词:TrueFFS;文件系统;函数;配置Abstract:The TrueFFS of Tornado is compatible with vxworks, which is a realization ways of M-Systems Files. It can provide a unified interface to block device to flash memory, and it is repeatly and safe. TrueFFS shielding the storage medium, providing developers with the unified interface, user can be applications such as configuration data and documents stored in Flash, great convenience to the user of application and configuration data management. This paper introduces the structure TrueFFS file system, and then through the program allocation respectively logo, write, complete FLASH erases, mapping, load file system function.Key Words: TrueFFS; file system; function; configuration引言Tornado的TrueFFS是和vxworks兼容的一种M-Systems Flie实现方式,它为种类繁多的flash存储设备提供了统一的块设备接口,并且具有可重入、线程安全的特点,支持大多数流行的CPU构架。有了Tornado的TrueFFS,应用程序对flash存储设备的读写就好象它们对拥有MS-Dos文件系统的磁碟设备的操作一样。这样TrueFFS就屏蔽了下层存储介质的差异,为开发者提供了统一的接口方式,用户可以将应用程序和配置数据等作为文件存放于Flash上,极大的方便了用户对应用程序和配置数据的管理。TrueFFS同时具有块管理,虚拟块的碎片回收,块分配,相关数据聚合,写/擦除错误后的恢复,碎块回收错误后的恢复,格式化错误后的恢复等功能。1. TrueFFS的架构如图所示,TrueFFS包括 1个核心层和3个功能层成:翻译层、MTD层、Socket层1。图1 tffs文件系统结构翻泽层主要实现TrueFFS和Dos文件系统之间的高级交互功能,管理文件系统和Flash中各物理可擦块的关系,以及TrueFFS中各种智能化处理功能,例如块映射、损耗均衡wear-leveling等。日前有3种不同的翻泽层模块可供选择。选择哪一种模块要根据使用的F1ash介质采用NOR技术、还是NAND技术,或者SSFDC技术而定。 MTD层实现对具体的Flash进行读、写、擦、ID识别、映射等驱动,并设置与Flash密切相关的一些参数。VxWorks的TrueFFS已经包括了支持Intel, AMD, Toshiba等厂商的大多数Flash芯片的MTD层2驱动。新的器件需要编写新的MTD层驱动。Socket层提供TrueFFS和硬件之间的接口服务,负责电源管理、检测设备插拔、硬件写保护、和向系统注册Socket等。核心层将其它3层有机结合起来,处理全局问题,例如信号量、计时器、碎片回收和其它系统资源等。其中与实现密切相关的是MTD层和Socket层。VxWorks只提供了编泽后的二进制形式的核心层和翻泽层驱动。在实现TrueFFS应用之前,先介绍一下TrueFFS的原理。2. TrueFFS的实现TrueFFS的编程主要在MTD层和Socket层。首先必须在当前VxWork生成目录的配置文件(config. h中定义:INCLUDE_ TFFS(包含TrueFFS系统)、INCLUDE_ DOSFS(包含DOS文件系统)和INCLUD_TFFS_SHOW(包含TrueFFS系统的显示函数)3。翻译层根据Flash的实现技术来选择。设计中选用了Spansion公司的型号为S29GL128N10TFI010的Nor Flash芯片,16MB容量。对flash媒介的原始操作包括(地址影射,读,写和檫除),必须要由3个函数组成。写write函数,erase函数和identify函数。2.1 标识函数(identify)标识(indentify)函数完成了对当前所使用的芯片的的识别包括型号。该函数维护一个flash信息的数据结构,struct tFlash FlashTypetype; long int erasableBlockSize;int chipSize; int noOfChips;void FAR0 *(*map)(FLFlash *, CardAddress, int);FLStatus (*write)(FLFlash *, CardAddress, const void FAR1 *, int, int);FLStatus (*erase)(FLFlash *, int, int); 根据flash型号的不同,需要设置几个重要参数:erasableBlockSize,这是flash芯片的片大小,在擦除flash时,必须按照这个大小进行片擦除。对于本系统选用的S29GL128芯片,每个片大小是0x20000字节。chipSize,这是flash的大小,这个大小设置不是必须和flash的物理大小匹配,因为flash中用于TFFS的可能仅仅是一部分,其他区域可以用作放启动代码等目的。驱动中还需要定一个FLASH_BASE_ADRS宏,这个宏会影响TFFS文件系统管理的flash起始地址,由于本系统需要在flash的前4MB存放Vxworks代码,所以,这个宏不能设置为0,否则0地址的代码就将在TFFS格式化时被擦除。这个数据结构中后面几个函数指针在初始化的时候被指向和体系结构相关的相应函数,也就是本文下面讨论的几个函数:write,erase,map。这些函数的具体实现是和体系结构相关的。2.2 写函数Write以word方式写入到flash中,检查flash地址或buffer地址是否遵守word边界规则。写操作需要遵循以下6个步骤:检查地址是否有效;影射到flash内部当前写的地址处;写入wirte command字;拷贝数据到目的地址;检查状态寄存器,是否完成操作,之后检验写入数据和原数据相同;写入READ_ARRAY字,切换回读状态。Spansion公司的S29系列的nor flash写操作时序和最流行的AMD公司的AM29系列的nor flash相同,见图。由图中倒数第二行可以看出:向flash的任意地址写入数据需要4个节拍的操作。具体的代码实现如下:*(volatile UINT16 *)(0x5551)=0xaaaa;*(volatile UINT16 *)(0x2aa1)=0x5555;*(volatile UINT16 *)(0x5551)=0xa0a0;*flashPtr = *gBuffer;由于flash采用16bit地址,所以向某个地址写入数据的时候,需要将地址左移一位。写入数据后需要将数据再从flash读出检查,以确保数据被正确写入。图2 S29系列FLASH操作代码2.3 檫除函数Erase步骤跟write 函数类似,作用是檫除一个块或连续的几个块。Flash的擦除时间比较长,在擦除过程中要通过Flash芯片提供的机制来检测擦除操作是否完毕。2.4 影射函数Mapmap函数在负责把flash的片内地址影射到全局地址空间中。通过32bit地址访问到flash.经过测试证明,使用TFFS的map函数可以正常工作。2.5 配置TFFS最后,需要修改Makefile,tffsConfig.c,sysTffs.c文件,将TrueFFS文件系统加载到VxWorks操作系统中。其中Makefile中加入:MACH_EXTRA = sysTffs.o 以加入sysTffs.o的编译。tffsConfig.c,sysTffs.c中一般不需要修改,根据编译器的不同,可能需要修改一些函数的声明方法即可。第一次使用时需执行sysTffsFormat4命令,格式化Flash。在这个命令中,系统格式化TFFS中的每一个分区,在分区中写入特征字段以实现文件系统。在每次系统启动后,都需要执行usrTffsConfig 0,0,/tffs0/命令,以建立根目录,如此之后,程序员就可以用类似cd,ls,rm这样的命令进行文件操作,在编程中也可以用fopen,fclose5这样的标准C库中的文件处理函数了。3 结论本文通过对具体的Flash进行读、写、擦、ID识别、映射等驱动,实现了Tornado的TrueFFS文件系统。有了TrueFFS文件系统,应用程序对flash存储设备的读写就好象它们对拥有MS-Dos文件系统的磁碟设备的操作一样。这样TrueFFS就屏蔽了下层存储介质的差异,为开发者提供了统一的接口方式,用户可以将应用程序和配置数据等作为文件存放于Flash上,极大的方便了用户对应用程序和配置数据的管理。参考文献1 David A

温馨提示

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

评论

0/150

提交评论