vxworks的TFFS分析.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vxworks的TFFS分析

Vxworks的tffs分析Tffs简介 Vxworks的tffs位于dosfs文件系统和底层硬件中,其存在的目的是:dosfs文件系统是针对磁盘的FAT文件系统,而我们大部分嵌入式设备存储设备是flash,flash和磁盘在物理特性上差别很大;首先磁盘和flash的读写方式不一样,磁盘可以一个字节一个字节的修改,而flash在写之前必须先擦除;flash的擦除和写有次数限制(大部分flash设备是10万次);tffs的存在使得dosfs对flash操作犹如对flash操作一样,这样tffs就屏蔽了底层设备的差异。 Tffs有以下几个特性::Wear-leveing算法:此算法的目的在于均衡flash损耗,使得flash各个块的擦除和写次数平衡。碎片回收:TrueFFS 使用一种被称为碎片回收(garbage collection)的机制来回收那些不再包含有效数据的块。该机制从一个预擦除单元(source era se unit)内拷贝所有的有效数据块到另一个新的被称为转移单元(transfer unit)的擦除单元。TrueFFS 然后更新 block-to-flash映射表再擦除这个废旧的预擦除单元。错误恢复:此功能使用了写后删除技术(erase after write),使得数据唯一性,不会产生中间数据。下图是整dosfs+tffs文件系统架构:可以看到dosfs是位于tffs上层的,tffs包含三层:翻译层、MTD层和socket层。我们增加tffs特性时需要修改MTD层和socket层。翻译层由vxworks提供,不需要修改。下面介绍各层的作用。翻译层:主要实现 TrueFFS和 dosFs之间的高级交互功能。它也包含了控制 flash映射到块、wear-leveling、碎片回收和数据完整性所需的智能化处理功能。MTD层:即设备驱动层,包含flash读、写、擦除、ID识别等驱动。Socket层:用来提供tffs和板卡硬件(如flash卡)的接口服务,如果我们的flash设备是固定在板卡上的则socket比较简单,修改较少。如果需要实现热插拔则比较复杂,需要从新写。Vxworks的BSP开发方法BSP开发一般分两种按照我的理解分两种:公共特性的BSP开发和特有特性的BSP开发。公共特性的开发对我们平台来说是各个产品需要做适配的工作,并且不需要修改或者修改很少的vxworks内核代码,在内核配置中增加需要相应的特性即可。但增加特性后,会在BSP目录下的config.h文件增加INCLUDE宏;并且在usrboot()即内核启动程序中添加相应的初始化函数。下面以增加tffs特性为例:在内核配置tffs后,config.h会增加INCLUDE_TFFS宏,并在prjconfig.C(此文件也是根据配置生成的)的usrIosExtraInit()函数增加tffsDrv()和usrTffsConfig()函数。特有特性的BSP开发是各个产品负责的,每个产品由于硬件配置不一样,所以BSP特性也需要做相应的改变。这种特有特性开发则需要我们将和BSP相关的.c和.h放在自己的BSP目录下,修改产品的初始化代码,自己添加相关BSP初始化(取代了公共特性开发中vxworks帮我们自动添加的步骤)。下面以增加tffs特性为例:我们不需要配置内核支持tffs特性,取代的是将systffs.c、systffs.h放在BSP目录下,在初始化中添加tffsDrv()和usrTffsConfig()函数。TFFS中两大数据结构:FLSOCKET和FLFLASHFLFLASH是MTD层维护的数据结构,它的定义如下:struct tFlash{ FlashTypetype;/* Flash device type (JEDEC id) */ long interasableBlockSize;/* Smallest physically erasable size (with interleaving taken in account) */ long intchipSize;/* chip size */ intnoOfChips;/* no of chips in array */ intinterleaving;/* chip interleaving*/ unsignedflags;/* Special capabilities options*/ void *mtdVars;/* Points to MTD private area*/ FLSocket *socket;/* Socket of this drive */ void FAR0 *(*map)(FLFlash *, CardAddress, int); FLStatus(*r

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档