FATFS文件系统剖析2.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FATFS文件系统剖析2

FATFS文件系统剖析2: 分析下ff.h和ff.c两个文件。 先来分析ff.h中定义的几个结构体: typedef struct { ?BYTE?fs_type;?? //? 系统类型,为0时系统没有被挂载 ?BYTE?drv;????????? //? 物理磁盘驱动号 ?BYTE?csize;?????? //? 每簇的扇区数目,? 簇是文件数据分配的基本单位??? ?BYTE?n_fats;???? //? 文件分配表的数目,一般为两个(一个备份fat表)????? ???????? ?//Fatfs文件系统应该是:引导扇区,文件分配表2个,根目录区,和数据区 ????? ?BYTE?wflag;????? //? 文件活动窗体是否改动标志,为1要回写? ?BYTE?fsi_flag;?? //? 文件信息回写标志? ?WORD?id;???????? //? 文件系统加载id号? ?WORD?n_rootdir;??? ?// 根目录区目录项数目(针对FAT12/16,FAT32不使用)? #if _MAX_SS != 512 ?WORD?ssize;??? ?//? 每扇区多少字节 #endif #if _FS_REENTRANT ?_SYNC_t?sobj;?? // 允许重入,则定义同步对象? #endif #if !_FS_READONLY ?DWORD?last_clust; ?// 最新分配的簇?? ?DWORD?free_clust; ?// 空闲簇 ?DWORD?fsi_sector;??// 文件信息扇区(仅用于FAT32) #endif #if _FS_RPATH ?DWORD?cdir;??//使用相对路径,文件系统的当前起始路径? 0(root 路径) #endif ?DWORD?n_fatent;?//文件分配表占用的扇区????n_fatent=数据簇数目+2 ?DWORD?fsize;????? ?//每FAT表有多少个扇区?????? ?DWORD?fatbase;? //文件分配表开始扇区???? ?DWORD?dirbase;? // 如果是FAT32,根目录开始扇区需要首先得到? ?DWORD?database;?// 数据起始扇区???? ?DWORD?winsect;??? // win中当前指定的扇区 ?BYTE?win[_MAX_SS];??//扇区操作缓存 } FATFS; typedef struct { ?FATFS*?fs;??? // 指向的文件系统? ?WORD?id;???? // 自身文件系统挂载id号? 即 fs-id ?BYTE?flag;???? // 文件状态? ?BYTE?pad1;?? //文件在簇里面扇区偏移?(0--fs-csize) ?DWORD?fptr;?//文件当前读写指针位置,当文件打开时为0? ?DWORD?fsize;?//文件大小(按字节计算) ?DWORD?org_clust;??// 文件起始簇 (0 when fsize==0)? ?DWORD?curr_clust;??//?文件当前操作簇 ?DWORD?dsect;???// 文件当前操作扇区 #if !_FS_READONLY ?DWORD?dir_sect;??// 包含路径入口的扇区号? ?BYTE*?dir_ptr;?????? // 目录入口指针 #endif #if _USE_FASTSEEK ?DWORD*?cltbl;????? //指向查找映射表的簇 (null on file open) #endif #if _FS_SHARE ?UINT?lockid;???????? // 文件锁 ID号 (index of file semaphore table) #endif #if !_FS_TINY ?BYTE?buf[_MAX_SS];?? // 文件读写缓存 #endif } FIL; ? typedef struct { ?FATFS*?fs;???? ???? // 对应的文件系统?? ?WORD?id;?????????? // 自身文件系统挂载id号? 即 fs-id ?WORD?index;???? // 目前读写索引号??/* Current read/write index number */ ?DWORD?sclust;? // 目录表起始簇?? (0:Root dir)? ?DWORD?clust;??? // 目前处理的簇??? ?DWORD?sect;??? ?// 目前簇里对应的扇区 ?BYTE*?dir;???//指向当前在win[]中的短文件名入口项/* Pointer to the current SFN e

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档