转一篇比较介绍fatfs系统移植的文章.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
个人收集整理资料, 仅供交流学习, 勿作商业用途 转一篇比较详细介绍 FatFs 文件系统移植的文章 FatFs 文件系统的移植 因为需要,又不想自己写,所以就移植了一个文件系统。 说下我的硬件和开发工具:接成 TRUE IDE 模式下的 CF卡 也就是相当于一块硬盘了),三星 S3C2440的 ARM9,开发工具是很老很老的 D版的 ADS1.2。b5E2RGbCAP 我在网上看到的嵌入式系统上面常用的文件系统有 UCOSII 公司的 UC/FS,支持 CF卡,硬盘, SD/MMC卡,还有 NAND FLASH等 等,比较多,不过是商用的,需要银子的,有周立功的用于教案用 为什么说是用于教案用的,呵呵,等下就说)的 ZLG/FS,还找到了 开源、免费的两个,其中一个叫做 efsl ,另一个叫做 FatFs 。 p1EanqFDPw 现在先不考虑版权的问题,选择一个比较合适的文件系统。 第一个 UC/FS文件系统没得什么说的, UCOSII那个公司开发的,稳 定性,兼容性应该都不会差。第二个是 ZLG/FS。周立功的很多的开 发板上面都送了这个文件系统的源代码的,在网上找到一个现成的 个人收集整理资料, 仅供交流学习, 勿作商业用途 读写硬盘的,只是是基于 LPC2200系列的处理器的。第三个是 efsl , 是一个开源的工程,免费,只需要提供读扇区和写扇区 2 个函数。 第四个是 FatFs ,跟 efsl 一样,也是一个开源的工程,移植的时候 efsl 多几个简单的函数。 DXDiTa9E3d 这里补充一下 CF 卡和硬盘的简单的资料, CF 卡有三种模式, 其中有一个叫 TRUE IDE,接成这个模式以后,就跟他的模式名字一样,他就是一个硬盘,对他进行读写,也就相当于对一个硬盘进行读写。当引脚 OE好像是叫 OE,具体参考 CF 卡文档)在上电的时 候检测到拉低,那么 CF 卡就进入 TRUE IDE模式。读写硬盘的时候,在只写一次 LBA,只发送一个命令 读或者写)的情况下,最多可以读或者写 256 个扇区 当然也可以读一个扇区,读或者写多 少个扇 区在扇区计数器 count 里面),其中,发一个读或者写命令,读或者写 256 个扇区所需要的时间,比分 256 次去读写这些扇区所需要的时间要短得多,效率要高得多,我现在需要的是一个读写的速度比较快,效率比较高的文件系统,因此,底层的读写扇区必须要每写一个命令就可以读写多个扇区,读写扇区的函数必须要有扇区计数器 前面的 count )这个参数,才可能满足要求。 RTCrpUDGiT UC/FS 也是在网上搜了个代码,看了下,很标准的几个层, 什么硬件层,文件系统层, API 层,等等 具体参见 UC/FS 的文档), UCOSII一个公 司的,稳定性应该不错,需要提供的函数也是读扇区,写扇区等等几个。但是底层的读写扇区的函数不需要提供扇 2 / 11 个人收集整理资料, 仅供交流学习, 勿作商业用途 区计数器 count 这个参数,也就是说,这个文 件系统不能在只写一个读或者写命令的情况下,读或者写多个扇区,本来效感觉不错的一个文件系统,效率就大大的降低了。 5PCzVD7HxA 然后看了下 efls 这个文件系统,开源的工程,免费的工程,好东西,移植也很简单,同样移植的时候也是提供读写扇区等几个 函数,但是面临的跟 UC/FS同样的问题,每次读写的时候也只能读写一个扇区。 jLBHrnAILg 绝望之余看到了周立功的文件系统,大概看了下 没有仔细 阅读源代码),硬件驱动上面能够在发一次读命令的情况下,读写 多个扇区,而且感觉上比较简单,同 样,层次也很清楚,移植需要 做的事情也是修改后面的读写扇区等等几个函数。于是就开干了。功夫不负苦心人,过了几天, CF卡能够读写了,拿到电脑上面看写的数据,没问题。从 CF卡里面读文件出来,打印到超级终端,也没有问题,以为就万事 OK了,想了下,我们需要的,最关心的,第一是速度,然后就开始测试速 度,不测不知道,一测吓一跳!太“快”了, TMD,才 5,6 个 K Bytes 每秒!!!!! 我的驱动已经测试 了,上 M字节每秒的) 于是跟踪到写里面去,发现一个很,十分,非常严重的问题: ZLG/FS提供了读一个字节的函数,忘了叫做啥,这里暂时叫 ReadOneByte*** ),然后读多个字节,或者说读大块字节的函数用的是啥,呵呵, xHAQX74J0X 3 / 11 个人收集整理资料, 仅供交流学习, 勿作商业用途 fori=0 ;i N 。 i++ ) ReadOneByte*** ),这种机制,不慢才怪事!!!于是伤心的抛弃了 ZLG/FS,这东东,学习还是可以的,商用的话,差太远了!!! LDAYtRyKfE

文档评论(0)

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

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

1亿VIP精品文档

相关文档