首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

SD卡FAT16文件系统的学习笔记

SD卡FAT16文件系统的学习笔记

一、      读文件的流程
  • 读物理扇区0,得到引导扇(逻辑扇区0)的偏移地址。
  • 读引导扇的内容,得到文件系统基本配置信息。
  • 根据文件系统的基本配置信息计算FAT,FDT,数据簇的起始地址和大小。
  • 根据要读的文件名搜索FDT表,找到要读文件的起始数据簇编号,大小。
  • 根据文件的起始数据簇编号在FAT表中查找所有该文件占用的数据簇及数据簇访问的先后关系。
  • 读取该文件的起始数据簇的内容,及下一数据簇内容(有需要时)。

二、读取物理扇区0
先读取SD卡的第一个扇区(512字节),即扇区0,然后该扇区最后部分的数据如下图所示

   
正常的话,该扇区最后两个字节如上图所示为55 AA,如果不是则证明是读错了,或者该SD没有被格式化。
该扇区有两个重要信息:
一、 在0x1ca开始的四个字节9f c9 03 00,即0x3c99f=248223,代表该SD卡友248223个扇区,因为每个扇区有512字节,所以该SD卡容量为248223*512/1024/1024=121.2MByte
二、在0x1c6开始的四个字节61 00 00 00,即0x61=97,它表示引导扇区在扇区97。那我们就接着读扇区97,获取SD卡里更详细的信息,这个扇区0就可以不用管了。

三、读取引导扇区
以下是扇区97前64Byte的内容。因为97*512=0xc200,所以可以下图左边的偏移地址为c200


首先第0x3到0xA的内容为ASCII码的“MSDOS5.0”,不是重要信息
第0xb开始的两个字节00 02,即0x2000=512,代表每个扇区(sector)有512个字节(byte)
接下来的04代表每个簇(cluster)有4个扇区
接下来的04 00 即0x4代表有4-1个保留扇区,即是第一个FAT表所在扇区为引导扇区(97)+4=扇区101
接下来的02 代表有两个FAT表
接下来的00 02,即0x2000=512,代表FDT(目录区)有512登记项
第0x16开始的两个字节f2 00,即0xf2=242,代表每个FAT表占242个扇区
第0x36到0x3d代表的就是“FAT16   ”的ASCII码,说明这SD卡是FAT16的格式
继承事业,薪火相传
返回列表