这几天由于考试的原因,学习速度有点慢。一下是我这几天学习文件系统获得的知识和心得,和大家分享。在网上也看了一些关于FatFs文件系统代码解读的文章,但是看别人的毕竟是走马观花,所以决定自己沿着计划看下去,并写下自己的理解。由于板子自带的例程里有FatFs的源代码,所以就没有再去下过了,直接打开例程进行研究。
首先,研究文件系统的目的是在移植之前,先将源代码大概的阅读一遍,主要是了解文件系统的结构、各个函数的功能和接口、与移植相关的代码等等。然后再来研究SD卡的具体操作。FatFs里包含了3个文件:integer.h,了解所用的数据类型,然后是ff.h,了解文件系统所用的数据结构和各种函数声明,然后是diskio.h,了解与硬件相关的数据结构和操作函数。再把ff.c和diskio.c两个文件所实现的函数大致扫描一遍。最后根据用户应用层程序调用函数的次序仔细阅读相关代码。
好,开始了~
一. Integer.h文件
都是一些这样的定义,使用的都是typedef定义一些数据类型,网上说在一直的时候可能要改里面的内容。下面贴出部分代码:
typedef signed char CHAR;
typedef unsigned char UCHAR;
typedef unsigned char BYTE;
二:ff.h文件
#ifndef _FATFS
#define _MCU_ENDIAN 1
_MCU_ENDIAN定义了访问方法:1。启用Word访问:2。禁用字访问和使用字节按字节访问。当单片机的字节顺序要设置为是大端存储
#define _FS_READONLY 0
很明显,这个定义是用来设置只读的。当它为1实是只读。
#define _FS_MINIMIZE 0
这个是用来定义最小水平_FS_MINIMIZE。作用是用来删除一些功能:
0时表示所有全功能:
1: f_stat,f_getfree,f_unlink,f_mkdir,f_chmod和f_rename被删除。
2:在1的基础上再删除 f_opendir和f_readdir
3:在2的基础上再删了f_lseek。
#define _DRIVES 2
这定义了被使用的逻辑驱动器的数目,这会影响到内部表的大小。
[
本帖最后由 xielijuan 于 2010-11-22 10:50 编辑 ]