FatFs - Generic FAT Filesystem Module R0.13b
本文备忘,理解和感悟可能有错误,谨慎参考
对于文件系统的概念理解:向用户提供接口的文件操作黑匣子。(不同的文件系统支持不同的文件格式,FAT,exFAT,NTFS...)
在嵌入式中,文件系统起到的作用是在FLASH/USB/SD/RAM...上提供文件读写的接口
简单的文件系统结构
其中,
ff.c 提供文件操作接口(如打开文件,创建目录,删除文件...);
ffconf.h 提供大量宏定义开关(如是否启用长文件名,扇区数量...),需要在调试时确定是否打开某开关或适当设置宏定义参数;
diskio.c 提供扇区操作函数,但主要是ff.c中需要使用,用户一般使用ff.c中的接口即可;
ffsystem.c与ffunicode.c的理解不深,主要是为系统优化而存在。
文件系统在USB中的使用
USB设备(U盘...)的文件系统也要是FAT/exFAT,否则上述文件系统不能支持
1,挂载物理驱动器
1 sprintf((char *)&driverNumberBuffer[0], "%c:", USBDISK + '0'); 2 fatfsCode = f_mount(&fatfs, (char const *)&driverNumberBuffer[0], 0);
2,根据fatfsCode判断挂载是否成功,若成功,则可使用ff.c中的各种接口进行文件操作;否则要进行重新挂载或根据官网帮助分析软件原因,最后找硬件的问题(硬件问题概率较小...)
小结
文件系统底层如何实现是复杂的,出问题上对应的官网找某接口(如f_open()...)的帮助,基本都可以愉快解决。其中要注意,某一种文件系统的不同版本之间,各接口的使用也可能存在差异,阅读注释即可。
文件系统中各源文件需要配套使用(不配套也会编译报错,无法使用)。