本帖最后由 Jekele 于 2020-12-9 17:34 编辑
本次Fatfs文件系统实验是在上一实验SPI_FLASH读写成功的基础上完成的。链接如:https://bbs.21ic.com/icview-3054662-1-1.htmlFatfs 组件使用R0.11a (September 05, 2015)版。
Fatfs文件组件移植时只需修改diskio.c和ffconf.h文件即可,其他文件不用修改任何东西。option文件夹里面的根据使用情况添加,一般使用英文文件名可以都不用添加,要使用中文文件名需要添加cc936.c文件,但是评估板ROM容量小,中文字库太大会导致内存溢出,编译不通过。还有一个关于长文件名的使用,要用到ccsbcs.c文件,要修改宏#define _USE_LFN为 1(默认为0不支持)才能支持长文件名的使用 。本实验使用的是英文文件名,可以使用长文件名。
ffconf.h文件要修改的宏为:
#define _USE_MKFS 1 //格式化功能
#define _CODE_PAGE 437 //语言功能选择 437为英文
#define _USE_LFN 1 //长文件名支持 默认为0不支持长文件名
#define _VOLUMES 3 // 指定的物理设备数量 #define _MIN_SS 512 // 指定扇区大小的最小值
#define _MAX_SS 4096 //指定扇区大小的最大值
移植完成的目录为:
diskio.c文件修改的比较多,这里就不粘贴,有想浏览的可以下载附件。下面直接附测试截图:第二张截图是长文件名测试。
最后总结一下,实验总体比较成功,但是过程中也出现很多问题,主要一个由于ROM容量问题不能实现中文文件名,希望以后能用到大容量的板子在实现。其他问题是移植时粗心造成一些错误,比如首次格式化时能够格式化成功,但是就是不能读写操作,最后才发现是disk_write函数在修改过程中要擦出一个扇区,把输入参数扇区号弄成了地址。。。。所以,发现问题99.99%的是自己编写的代码问题,就不要怀疑人家Fatfs组件的问题了,更不要怀疑是硬件问题了。共勉。
|