STM32移植FAT文件系统

所谓“移植”,就是打通FAT源码和物理设备之间的软件接口。

FAT源码早就被公益组织给写好了,直接下载源码。但是FAT作为顶层应用程序,它需要面对的底层物理设备是不确定的,那么底层的物理设备驱动程序就需要程序员来自己写。物理设备可以时硬盘、内存卡、nor、nand、EEPROM、甚至可以是RAM,只要是可以存储内容的设备,皆可上文件系统。

需要我们自己写的函数接口,都在diskio.c里面。总工有6个函数。STM32移植FAT文件系统_第1张图片

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格式化、等函数中被调用。

你可能感兴趣的:(stm32,嵌入式硬件,单片机)