FatFs是一种面向小型嵌入式系统的一种通用FAT文件系统,它完全是由ANSI C 语言编写并且完全独立于底层的I/O 介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如8051、PIC、AVR、SH、Z80、H8、ARM 等。FatFs 支持FAT12、FAT16、FAT32等格式,所以我们利用前面写好的SPI Flash 芯片驱动,把FatFs 文件系统代码移植到工程之中,就可以利用文件系统的各种函数,对SPI Flash 芯片以“文件”格式进行读写操作了。
整个FATFS的源码文件src的内容如下:
1.option 文件夹下是一些可选的外部c 文件,包含了多语言支持需要用到的文件和转换函
数。
2.00history.txt 介绍了FatFs 的版本更新情况。
3.00readme.txt 说明了当前目录下diskio.c 、diskio.h、ff.c、ff.h、integer.h 的功能。
4.diskio.c 文件是FatFs 移植最关键的文件,它为文件系统提供了最底层的访问SPI Flash芯片的方法,FatFs 有且仅有它需要用到与SPI Flash 芯片相关的函数;包含底层存储介质的操作函数,这些函数需要用户自己实现,主要添加底层驱动函数。
5.diskio.h 定义了FatFs用到的宏,以及diskio.c 文件内与底层硬件接口相关的函数声明。
6.integer.h:文件中包含了一些数值类型定义。
7.ff.c:FatFs核心文件,文件管理的实现方法。该文件独立于底层介质操作文件的函数,利用这些函数实现文件的读写。
8.ff.h:定义了FATS与应用程序用到的宏。
9.cc936.c:本文件在optin目录下,是简体中文支持所需要添加的文件,包含了简体中文的GBK 和Unicode 相互转换功能函数。
10.ffconf.h:这个头文件包含了对FatFs功能配置的宏定义,通过修改这些宏定义就可以裁剪FatFs 的功能。如需要支持简体中文,需要把ffconf.h 中的_CODE_PAGE 的宏改成936 并把上面的cc936.c 文件加入到工程之中。
FATFS的结构框架图如下:
其中ff.c、ff.h、integer.h 以及diskio.h 四个文件我们不需要改动,只需要修改ffconf.h 和diskio.c 两个文件。