stm32-串行FLASH文件系统FATFS

FatFs是一种面向小型嵌入式系统的一种通用FAT文件系统,它完全是由ANSI C 语言编写并且完全独立于底层的I/O  介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如8051PICAVRSHZ80H8ARM 等。FatFs 支持FAT12FAT16FAT32等格式,所以我们利用前面写好的SPI  Flash 芯片驱动,把FatFs 文件系统代码移植到工程之中,就可以利用文件系统的各种函数,对SPI Flash 芯片以“文件”格式进行读写操作了。

 

整个FATFS的源码文件src的内容如下:

1.option 文件夹下是一些可选的外部c 文件,包含了多语言支持需要用到的文件和转换函

数。  

2.00history.txt 介绍了FatFs 的版本更新情况。

3.00readme.txt 说明了当前目录下diskio.c diskio.hff.cff.hinteger.h 的功能。

4.diskio.c 文件是FatFs 移植最关键的文件,它为文件系统提供了最底层的访问SPI Flash芯片的方法,FatFs 有且仅有它需要用到与SPI Flash 芯片相关的函数;包含底层存储介质的操作函数,这些函数需要用户自己实现,主要添加底层驱动函数

5.diskio.h 定义了FatFs用到的宏,以及diskio.c 文件内与底层硬件接口相关的函数声明。

6.integer.h:文件中包含了一些数值类型定义。

7.ff.cFatFs核心文件,文件管理的实现方法。该文件独立于底层介质操作文件的函数,利用这些函数实现文件的读写。

8.ff.h:定义了FATS与应用程序用到的宏。

9.cc936.c:本文件在optin目录下,是简体中文支持所需要添加的文件,包含了简体中文的GBK Unicode 相互转换功能函数。

10.ffconf.h:这个头文件包含了对FatFs功能配置的宏定义,通过修改这些宏定义就可以裁剪FatFs 的功能。如需要支持简体中文,需要把ffconf.h 中的_CODE_PAGE 的宏改成936 并把上面的cc936.c 文件加入到工程之中。

 

FATFS的结构框架图如下:

stm32-串行FLASH文件系统FATFS

 

 

其中ff.cff.hinteger.h 以及diskio.h 四个文件我们不需要改动,只需要修改ffconf.h diskio.c 两个文件。