第25章 串行FLASH文件系统FatFs (2)

在移植FatFs文件系统到开发板之前,我们先要到FatFs的官网获取源码,最新版本为R0.11a,官网有对FatFs做详细的介绍,有兴趣可以了解。解压之后可看到里面有  doc src 这两个文件夹,见 25-1doc 文件夹里面是一些使用帮助文档; src 才是FatFs文件系统的源码。

第25章 串行FLASH文件系统FatFs

 

25-1  FatFs文件目录

25.2.2  FatFs帮助文档

打开  doc 文件夹,可看到如 25-2的文件目录:

第25章 串行FLASH文件系统FatFs

25-2 doc文件夹的文件目录

其中 en ja 这两个文件夹里面是编译好的html文档,讲的是FATFS里面各个函数的使用方法,这些函数都是封装得非常好的函数,利用这些函数我们就可以操作SPI Flash芯片。有关具体的函数我们在用到的时候再讲解。这两个文件夹的唯一区别就是 en 文件夹下的文档是英文的,ja 文件夹下的是日文的。img文件夹包含enja文件夹下文件需要用到的图片,还有四个名为app.c文件,内容都是FatFs具体应用例程。00index_e.html00index_j.html是一些关于FATFS的简介,至于另外两个文件可以不看。

25.2.3  FATFS源码

打开 src 文件夹,可看到如 25-3的文件目录:

第25章 串行FLASH文件系统FatFs

 

25-3 src文件夹的文件目录

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

diskio.c文件是FatFs移植最关键的文件,它为文件系统提供了最底层的访问QSPI Flash芯片的方法,FatFs有且仅有它需要用到与QSPI Flash芯片相关的函数。diskio.h定义了FatFs用到的宏,以及diskio.c文件内与底层硬件接口相关的函数声明。

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

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

src文件夹下的源码文件功能简介如下:

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

q diskio.c包含底层存储介质的操作函数,这些函数需要用户自己实现,主要添加底层驱动函数。

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

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

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

建议阅读这些源码的顺序为:integer.h --> diskio.c --> ff.c

阅读文件系统源码ff.c文件需要一定的功底,建议读者先阅读FAT32的文件格式,再去分析ff.c文件。若仅为使用文件系统,则只需要理解integer.hdiskio.c文件并会调用ff.c文件中的函数就可以了。本章主要讲解如何把FATFS文件系统移植到开发板上,并编写一个简单读写操作范例。

25.3  FatFs文件系统移植实验 25.3.1  FatFs程序结构图

移植FatFs之前我们先通过FatFs的程序结构图了解FatFs在程序中的关系网络,见 25-4。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzsjd.html