很久以前就开始对SD卡钟情了,原因不用多少说,控制方便,容量大,速度快,价格便宜等等。但是不能总把它当Flash用吧,就一个扇区的读,一个扇区的写,多没劲啊(不过刚开始读写成功后也挺兴奋的,哈哈)。那怎么办呢?不用多少都是上文件系统,那么上什么文件系统呢?
翻阅了大量的资料发现,常见的文件系统用FAT12、FAT16、FAT32(我就不用介绍它们的名字及意义了,网上很多介绍的)。当然随着SD卡的容量越来越大FAT12、FAT16就有点力不从心了,所以决定写一个FAT32文件系统。当然又的大量的查阅资料也例程,最终开始了FAT32的开发之旅。。。
由于本人刚开始学习的是51和AVR,当然51过文件系统太吃力了,所以就用AVR编写文件系统。选择的是AVR的mega128,这款IC的容量非常充足,速度也没有说的,应该是M系统的贵族了。通过个多月的编写,文件系统终于可以工作了,能够读取一个文件了,当然是一阵兴奋。。。
这个文件系统是用ICC编写的,使用中非常不错。所以在后来我学习了LPC2148后就想把它移植到MDK平台下。但是经过多次试验,让我感到了失望,就连初始化都通不过,我开始动摇了,是否要自己写文件系统呢?为什么不移植别人的文件系统能?如果自己写的这么简单的移植都通不过还有什么意义?
[ 本帖最后由 zhaojun_xf 于 2010-7-17 15:48 编辑 ]接下来就是在网络上找成功的文件系统,在网络上的文件系统常见的有四个:UC/FS;ZLG/FS;efsl;FatFS。这里我就不都介绍了,在我的《LPC1114 FAT下读写SD卡》https://bbs.eeworld.com.cn/thread-105572-1-1.html中有详细的说明。也看了网友们多这些文件系统的评价和移植笔记,但是还是看了一头雾水,感觉比写还难(没实践的结果)。就这样一直脱到论坛送我LPC1114的开发板,我才正式开始FATFS的移植。。。
通过一段时间的努力,才发现其实移植是非常简单的,只有你安装要求编写好几个底层函数就可以了。接下来就是怎样使用API函数了。对于API函数的应用,刚开始也是不知道怎么开始,当然也是查看FATFS官方网的例程和说明,还有网友们移植的代码,最终发现就一条规律(请看《LPC1114 FAT下读写SD卡》)。所有的API的应用都是差不多的,只要会一个了,别的就大同小异了。
通过这次移植,当我充分的感觉的移植是一件相对简单是事情,至少要比你自己写要好很多:
1. 不用重复工作,反应大量的资料。
2. 非常稳定,快捷。
3. 再次移植非常简单,基本上不用修改。
这次移植不光是会移植了文件系统,对别的系统接程序的移植也有了很大的帮助,懂得了移植的全不过程及方式方法,收获颇多。