FAT32学习笔记(一)
0赞
接触FAT32已有一段日子,看了资料,又阅读了部分FATFS的源代码,可是对于整个过程却始终还没有弄的太明白,因此想从FAT32格式入手,一次性了解,以利于学习。
本次实验使用以前买相机的128M SD卡作为实验用,使用WINHEX软件, 主要以截图和地址计算为主。

当前SD卡内只存有一个文件:说明.txt。其他的且听我一一道来。
Root directory :在有些版本的WINHEX软件中显示为根目录。
Boot sector:即启动扇区,通常为SD卡的第1个扇区(0柱面0磁头1扇区),所以偏移量为0
FAT1:即文件分配表
FAT2:也是文件分配表,和FAT1一样,当FAT1遭到损坏时,可以由FAT2进行修复。此处有一点不明白,据资料所说, FAT2是相当于复制FAT1的,那么当FAT1有问题时,FAT2不也复制了有问题的FAT1了吗?那又如何可以据此进行修复数据?
Free space:即剩余空间,也就是剩下可以存我们自己数据的空间
Idle space:即空闲空间,这个目前我也不知道是什么,先搁着吧
Volume slack:我的理解是相当于耗损空间,由于在硬盘上,空间是不可以跨柱面的,所以有些空间会被剩下不能被利用。
下面我们将对各项进行分析,有些不重要的将简单提及但不重点介绍:

(1)黑线部分:EB 58 90 跳转指令
(2)红线部分:4D 53 44 4F 53 35 2E 30 产商标志和OS版本号
(3)蓝线部分:00 02 这里数据储存格式为小端储存,即高地址放高字节,低地址放低字节,这样实际取出来用的时候就为0200(16进制),即512 。意思是这个SD卡每个扇区是512字节,不过不是所有的SD卡都一样,有的为1024,2048等其他值
(4)黄线部分:02 意思是每个簇有2个扇区,这个值必须为2的整数次方如1、2、4、8、16、32等,但不能使一个簇大于32KB。
(5)绿线部分:98 18 由小端储存可知为1898,即6296。意思是保留扇区数为6296个。
(6)淡蓝色部分:02 此卷中FAT结构的份数为2,即FAT2为备份的。
(7)红色点线部分:B4 03 即03B4,转成十进制为948,每个FAT表占用948个扇区。
根据启动区、FAT1、FAT2、根目录的次序就可以开始计算地址了:
启动区为 0x00

FAT1:由于保留扇区为6296 * 512 = 3223552

FAT2:因为每个扇区占用 948(扇区)* 512 = 485376,所以 485376+3223552 = 3708928

根目录区:在FAT2基础上加上一个FAT表所占用的字节数就可以,即 3708928 + 485376 = 4194304

