欢迎来到天天文库
浏览记录
ID:6735618
大小:60.50 KB
页数:12页
时间:2018-01-24
《fatfs文件系统剖析(全)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、FATFS文件系统剖析1:FAT16:数据按照其不同的特点和作用大致可分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区,相比fat12多了DBR区 Mainbootrecord:MBR(0--1bdh) 磁盘参数存放 DPT(1beh--1fdh) 磁盘分区表 55,aa 分区结束标志 DBR(DosBootRecord)是操作
2、系统引导记录区的意思 FAT区(有两个,一个备份):对于fat16,每一个fat项16位,所以可寻址的簇项数为65535(2的16次方)。而其每簇大小不超 过32k,所以其每个分区最大容量为2G。fat32,每一个fat项32位,可寻址簇数目为2的32次方。 DIR区(根目录区):紧接着第二FAT表(即备份的FAT表)之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。 DATA区:实际文件内容存放区。
3、FAT32: 暂时放在这里,不讨论!Fatfs:嵌入式fat文件系统,支持fat16,fat32。 包含有ff.h,diskio.h,integer.h,ffconf.h四个头文件以及ff.c文件系统实现。当然要实现具体的应用移植,自己要根据diskio.h实现其diskio。c底层驱动。 diskio.h: 底层驱动头文件 ff.h : 文件系统实现头文件,定义有文件系统所需的数据结构 ff.c : 文件系统的具体实现如下开始逐
4、个文件加以分析:integer.h:仅实现数据类型重定义,增加系统的可移植性。ffconf.h: 文件系统配置---逐个配置,先配置实现一个最小的fat文件系统,下面来分析各配置选项: #define_FFCONF8255 //版本号 #define _FS_TINY 0 /*0:Normalor1:Tiny*/ //在这里与先前版本有些许变化,是通过配置头配置两种不同大小的文件系统,这里配置为0。
5、 #define_FS_READONLY 1 //定义文件系统只读,也就不能写修改,在此定义为1,这样文件系统会大大缩小,简化学习理解过程。 #define_FS_MINIMIZE 3 /*0to3*/ 这个选项是用于过滤掉一些文件系统功能,为0时是全功能,3是功能实现最小 #define _USE_STRFUNC 0 /*0:Disableor1/2:Enable*/ 是否使用字符串文件接口,为0,不使用 #define _USE_M
6、KFS 0/*0:Disableor1:Enable*/ 制作文件系统,这个功能实现是还要_FS_READONLY=0 #define _USE_FORWARD 0 /*0:Disableor1:Enable*/ f_forwardfunction 实现还需_FS_TINY =1 #define _USE_FASTSEEK 0 /*0:Disableor1:Enable*/ 快速查找功能
7、 #define_CODE_PAGE 936 // 936 -SimplifiedChineseGBK(DBCS,OEM,Windows) #define _USE_LFN 0 /*0to3*/ 0:不使用长文件名 #define _MAX_LFN 255 /*MaximumLFNlengthtohandle(12to255)*/ #define _LFN_UNICO
8、DE 0 /*0:ANSI/OEMor1:Unicode*/ #define_FS_RPATH 0 /*0to2*/不使用相对路径/*-------------------------------------------------------------
此文档下载收益归作者所有