FatFs 文件系统的移植(转载)
默认分类 2009-07-17 16:55 阅读 18评论 0
字号: 大 中 小
很久没有更新过博客的东西了,忙,真的很忙,前两天移植了一个文件系统,感觉还八错,一来怕自己忘了,二来可
以给更多的朋友参考参考,让大家少走一些弯路,所以就抽空记下来了。
因为需要,又不想自己写,所以就移植了一个文件系统。
说下我的硬件和开发工具:接成 TRUE IDE 模式下的 CF 卡(也就是相当于一块硬盘了),三星 S3C2440 的 ARM9,
开发工具是很老很老的 D 版的 ADS1.2。
我在网上看到的嵌入式系统上面常用的文件系统有 UCOSII 公司的 UC/FS,支持 CF 卡,硬盘,SD/MMC 卡,还有
NAND FLASH 等等,比较多,不过是商用的,需要银子的,有周立功的用于教学用(为什么说是用于教学用的,呵呵,
等下就说)的 ZLG/FS,还找到了开源、免费的两个,其中一个叫做 efsl ,另一个叫做 FatFs 。
现在先不考虑版权的问题,选择一个比较合适的文件系统。第一个 UC/FS 文件系统没得什么说的,UCOSII 那个公
司开发的,稳定性,兼容性应该都不会差。第二个是 ZLG/FS。周立功的很多的开发板上面都送了这个文件系统的源代
码的,在网上找到一个现成的读写硬盘的,只是是基于 LPC2200 系列的处理器的。第三个是 efsl,是一个开源的项目,
免费,只需要提供读扇区和写扇区 2 个函数。第四个是 FatFs,跟 efsl 一样,也是一个开源的项目,移植的时候比 efsl
多几个简单的函数。
这里补充一下 CF 卡和硬盘的简单的资料,CF 卡有三种模式,其中有一个叫 TRUE IDE,接成这个模式以后,就跟
他的模式名字一样,他就是一个硬盘,对他进行读写,也就相当于对一个硬盘进行读写。当引脚 OE(好像是叫 OE,
具体参考 CF 卡文档)在上电的时候检测到拉低,那么 CF 卡就进入 TRUE IDE 模式。读写硬盘的时候,在只写一次
LBA,只发送一个命令(读或者写)的情况下,最多可以读或者写 256 个扇区(当然也可以读一个扇区,读或者写多
少个扇区在扇区计数器 count 里面),其中,发一个读或者写命令,读或者写 256 个扇区所需要的时间,比分 256 次
去读写这些扇区所需要的时间要短得多,效率要高得多,我现在需要的是一个读写的速度比较快,效率比较高的文件
系统,因此,底层的读写扇区必须要每写一个命令就可以读写多个扇区,读写扇区的函数必须要有扇区计数器(前面
的 count)这个参数,才可能满足要求。
UC/FS 也是在网上搜了个代码,看了下,很标准的几个层,什么硬件层,文件系统层,API 层,等等(具体参见
UC/FS 的文档),跟 UCOSII 一个公司的,稳定性应该不错,需要提供的函数也是读扇区,写扇区等等几个。但是底