SD卡卡FAT16文件系统的学习笔记文件系统的学习笔记
SD卡FAT16文件系统的学习笔记
一、读文件的流程
1.读物理扇区0,得到引导扇(逻辑扇区0)的偏移地址。
2.读引导扇的内容,得到文件系统基本配置信息。
3.根据文件系统的基本配置信息计算FAT,FDT,数据簇的起始地址和大小。
4.根据要读的文件名搜索FDT表,找到要读文件的起始数据簇编号,大小。
5.根据文件的起始数据簇编号在FAT表中查找所有该文件占用的数据簇及数据簇访问的先后关系。
6.读取该文件的起始数据簇的内容,及下一数据簇内容(有需要时)。
二、读取物理扇区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的格式
四、FAT16文件系统的结构
知道以上的信息之后我们就可以根据以上信息计算出FAT1,FAT2,FDT和数据簇的首地址和结束地址,但在计算之前,我有
必要介绍一下整个FAT16文件系统的结构和各个区的含义与作用。