用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

TrueFFS原理及其在CF卡上的实现

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:50:51
访问CF卡之前的所有前期工作。如果插入CF卡型号改变了,cfGetAndClearCard ChangeIndicator函数就会及时向TrueFFS系统报告。sysTffs.c中需要实现上述的所有函数。大部分情况下,开发人员不必关心FLSocket数据结构,只关心它的成员函数。一旦这些成员函数实现了,开发人员不能直接调用它们,它们被TrueFFS系统自动调用。

4 实现与性能分析

完成TrueFFS的编写之后,经过编译链接,如果一切正确,VxWorks运行时会调用tffsDrv()函数自动初始化TrueFFS系统,包括建立互斥信号量、全局变量和用来管理TrueFFS的数据结构,注册Socket驱动程序。当TrueFFS需要和底层具体硬件打交道时,它使用设备号(0~4)作为索引来查找它的FLSocket结构,然后用相应结构中的函数来控制它的硬件接口。成功完成Socket注册之后,用户就可以调用tffsDevCreate()创建一个TrueFFS块设备,调用tffsDevFormat格式化设备,再调用dosFsDevInit()函数加载DOS文件系统。之后,用户就可以像使用磁碟设备一样使用了CF卡了,如调用open、read、write、close、creat等文件操作函数。

TrueFFS的简单测试方法可以从主机复制一个文件到CF卡,再将这个文件从CF卡复制到主机,然后比较原文件和最后文件的区别。用户也可以调用tffsShow()或tffsShowAll()来查看TrueFFS的创建情况。

TrueFFS可以极大地延长Flash设备的寿命。一般CF卡可以擦写10万次,如果不使用TrueFFS系统,寿命就非常短。例如,在CF卡上实现一个FAT16格式的DOS文件系统,簇的大小是2KB,如果要向CF卡中写入一个8MB的文件,共占用4K个簇,出于可靠性考虑,每写一个簇,FAT表就更新一次,写一个8MB的文件,FAT表需要更新4096次;而FAT表一直位于某个固定扇区中,所以8MB的文件最多只能更新25次,一个每天需要备份的文件,那么CF卡的寿命只有25天。这种应用方式使CF卡寿命与其容量无关,其它绝大部分可用扇区白白浪费。

采用了TrueFFS系统之后 ,因为损耗均衡算法不允许FAT表固定在某个扇区中,损耗平均分配给所有物理扇区。期望的CF卡寿命可以用下列公式计算:

期望寿命=(容量×总擦写次数×0.75)/每天写入字节数

其中,0.75表示文件系统和TrueFFS管理结构的额外消耗系数。如果同样每天备份一个8MB文件,那么期望寿命=(64MB×100 000×0.75)/8MB=600000(天)(约1643年)。

可见,TrueFFS惊人地延长了Flash器件的寿命。VxWorks自带的TrueFFS驱动器覆盖了业界大部分主流Flash芯片,考虑了各种芯片的不同擦写算法,效率较低。对于产时性要求苛刻的系统,开发人员应该按照所用的Flash器件有针对性地制作了TrueFFS驱动器。目前某些CF卡本身实现了一定程度的损耗均衡算法,但是没有TrueFFS那么高效。



上一页  [1] [2] [3] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:23,281.25000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号