fat文件系统的所有外部接口都在ff.h中
格式化
挂载
使用文件系统的第一步,就是挂载。
函数原型:FRESULT f_mount (FATFS* fs, const TCHAR* path, BYTE opt); /* Mount/Unmount a logical drive */
static FATFS fs;
FRESULT fres = f_mount (&fs, "0:/", 1);
该函数用于从磁盘或内存卡等存储介质中,读取文件系统的信息到内存中(其实就是存到上述示例代码中的变量fs中)。
path参数用于指定逻辑驱动器,所谓逻辑驱动器就类似于电脑中的"c:/",在FAT中这个逻辑盘符就是"0:"、“1:”、"2:"......等。这个字符串在FAT源码中被用于匹配一个逻辑驱动器的编号。"0:"就代表第一个盘符,对应的编号为数字0。看下图,源码中是如何把字符串path转成编号变量vol的。
再看get_ldnumber函数的实现:尤其关注下图红色箭头的代码,搞了半天,原来就是把字符串"0:"中冒号前面的字符减掉"0"(这是C语言基本操作,不再赘述)就得到了逻辑驱动器编号,按照这个源码的逻辑就是"0:"就对应0号,"1:"就对应1号。
再回到f_mount源码截图第2个红色箭头,find_volume函数中,这个vol编号被用于索引FAT表,插一条基础知识,每一个逻辑驱动器的前面部分,都有一个FAT表。find_volume的最终效果就是把指定盘的信息读取到了内存中