这一节我将剖析一张32MB的TF卡,其内部文件系统FAT数据的构建,希望能让大家对FAT有更深入的了解。
首先是将SD卡彻底格式化,而为何不用快速格式化。这个问题后面在说明。
此时可以看到一张SD卡盘符,及其属性如图1
图1
从图1我们可以得到这样一些信息 ,此盘容量为28.9MB,已用空间为0,可用空间28.9MB。
下面我们用WinHex打开此盘,分析具体的数据。如图2所示
图2
从图2我们可以得到这些信息:
1. 此SD卡 容量为29.2MB, 即 30605312 B
使用量为0B
空闲为28.9MB
共59272簇,簇大小为 一个扇区,即512B
共59272个扇区,扇区大小为512B
2. 此SD卡被分成了6个部分:
Boot sector DBR区(DOS BOOT RECORD)即操作系统引导记录区
扇区开始于 第 0 扇区 结束于 0 + (4KB *1024) /512 –1 =7 大小4KB 即 8个扇区
FAT1 扇区开始于 第 8 扇区 结束于 8 + (116KB *1024) /512 –1 =239 大小116KB 即 232个扇区
FAT2 扇区开始于 第 240 扇区 结束于 240 + (116KB *1024) /512 –1 =471 大小116KB 即 232个扇区
ROOT directory 根目录区
扇区开始于 第 472 扇区 结束于 472 + (16KB *1024) /512 –1 =503 大小16KB 即 32个扇区
Free space
扇区开始于 第 504 扇区 结束于 504 + (30347264) /512 –1 =59775 大小28.9MB 即 59272个扇区
idle space 无
扇区总数为 59776, 即 59776×512 =30605312B =29.1875 MB 符合此盘的容量
下面双击Boot sector 区,可以看到图3
图 3
从图 3 可以看出此DBR区共有 4KB, 数据具体代表的含义请参照上一节的相关图片与表(如表2)分析。这里就不重复了,直接列出从DBR中获取的信息。
1. 本U盘的扇区大小为512字节
2. 每簇扇区数为1,也就是说U盘共有 59776簇。
3. 保留扇区数为8个,也就是说U盘在FAT开始之前仅有一个引导扇区。
4. 有2个FAT表, 每个占用(0xE8)232个扇区。
5. 本U盘共有 59776个扇区,总容量为 29.1875 MB 。
6. 每道扇区63个,磁头255个,无隐藏扇区。
下面打开FAT1区的数据,如图4
图 4
FAT表实际上是一个数据表,以2个字节为单位,我们暂将这个单位称为FAT记录项,从图4中,可以知道,前两个记录项(即前四个字节)是0xFFFFFFF8,它是FAT表的标志,通常情况,第1、2个记录项用作介质描述。从第三个记录项开始记录除根目录外的其他文件及文件夹的簇链情况.
主要此处FAT1的地址为偏移地址,也就是相对于FAT1表的起始地址的偏移,而不是实际的地址。图5才是它在SD卡中的实际地址
图5
地址范围 0x0000 1000 ----0x0001 DFFF 大小为 0x1D000 =116KB
同样,FAT2只是作为FAT1的一个备份,所以其内容与FAT1完全一样,唯一不同的是他们的分配地址不同,FAT2的地址见图6
图 6
地址范围 0x0001 E000 ----0x0003 AFFF 大小为 0x1D000 =116KB
下面打开根目录区,如图 7
图 7
地址范围 0x0003 B000 ----0x0003 EFFF 大小为 0x4000 =16KB
此根目录下没有任何文件,除了橙色圈出的盘符名称占据了32自己外,其余数据都为0.
接下来是数据区,如图8
图 8
地址范围 0x0003 F000 ----0x01D2 FFFF 大小为 0x1CF0FFF =29635KB =28.94MB
此数据区没有任何文件数据。
接下来,我们往SD卡存入一个ReadMe.txt文件,看看几个区中的数据都有什么变化。
存入文件后,从电脑 上看到的信息如 图9
图 9
接下来,再次用WinHex 打开此SD卡,看到的信息如图 10
图 10
与空盘(图2)对照着看,红色部分为改变的数据,此时SD卡使用了0.5KB,且多了一个ReadMe.txt 的 文 件。
DBR区的数据没有任何变化。接下来开FAT1的数据变化,如图 11
图 11
仅多了一个 FF FF 数据,表示文件仅占用了一个扇区。
而 FAT2区的数据跟FAT1完全一样,如图12
图 12
下面是根目录区,如图13
图13
新增信息的内容含义,请具体看上一节的相关信息。这里就不再重复了。
数据区已经在其偏移的第一扇区,增加了文件的内容信息,如图14
图14
到此,加入一个文件后,SD开内各扇区所发生的变化,就已讲述完毕,请对照着前后图片分析。
对于快速格式,与彻底格式化的区别, 我也实际用此SD卡试过。个人理解为,快速格式化仅是将DBR区,FAT1区, FAT2区,根目录格式化,而数据区的所有扇区数据依然保留在原有的地方,每次写入新数据时,SD卡再根据需要擦除相应的扇区。但彻底格式化SD卡是,除了前面介绍的扇区需要格式化为,连所以的数据扇区都将格式化,所以比较耗时。
到此,关于我个人理解的FAT的构架信息,就已经讲完了,都比较浅显,主要是针对初学者,有一个比较直观的认识,如果对大家有所启发,还望不吝赐教,共同进步!
用户377235 2014-8-29 19:10
用户343153 2012-9-14 09:01
用户320092 2011-8-22 10:51