嵌入式文件系统的理解--应用于USB的FATFS

 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()...)的帮助,基本都可以愉快解决。其中要注意,某一种文件系统的不同版本之间,各接口的使用也可能存在差异,阅读注释即可。

文件系统中各源文件需要配套使用(不配套也会编译报错,无法使用)。

猜你喜欢

转载自www.cnblogs.com/aloneYu/p/12532209.html