所谓“移植”,就是打通FAT源码和物理设备之间的软件接口。
FAT源码早就被公益组织给写好了,直接下载源码。但是FAT作为顶层应用程序,它需要面对的底层物理设备是不确定的,那么底层的物理设备驱动程序就需要程序员来自己写。物理设备可以时硬盘、内存卡、nor、nand、EEPROM、甚至可以是RAM,只要是可以存储内容的设备,皆可上文件系统。
需要我们自己写的函数接口,都在diskio.c里面。总工有6个函数。
disk_initialize
/*** @brief Initializes a Drive* @param pdrv: Physical drive number (0..)* @retval DSTATUS: Operation status*/
DSTATUS disk_initialize (BYTE pdrv /* Physical drive nmuber to identify the drive */
)
形参:pdrv物理驱动器的编号Physical drive number。如果你的机器(可能是电脑,也可能是嵌入式设备)上有多个存储设备,例如多个硬盘、多个内存卡或者是多种设备的组合,这个形参就用于指定哪个设备。如果机器上只有一个存储设备,那你就不用管这个形参了。
例如单片机系统中,只有一个内存卡要用FAT,那你就在这个函数中用SPI或者SDIO初始化内存卡就行了。像这种简单的嵌入式系统,逻辑驱动器编号就等于物理驱动器编号,此时C语言宏_MULTI_PARTITION被配置为0.如果配置为1,FAT源码就会支持多设备储存。
这个函数会在f_mount挂载、f_mkfs格式化、等函数中被调用。