SD卡是硬盘的一种,硬盘包括机械硬盘固态硬盘等等,采购了一块SanDisk的32GB硬盘,FAT32格式,扇区大小512字节。由于厂商的硬盘大小和电脑计算不同,电脑计算出来29.7GB,以29.7GB为准。这里拿SD卡进行FAT32文件系统的学习,就先对SD卡的第一个扇区进行简要分析,为文件系统做个铺垫。
MBR(Main Boot Record 主引导记录区)放置在硬盘物理地址0的地方,是SD卡的第一个扇区里面的数据。总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外64个字节交给了 DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。DPT由4个分区表组成,每个16字节。先用WinHex工具看一下新的SD卡的扇区里面是什么内容。
出厂的SD卡没有分区,默认就是一个分区,所以只有第一个分区表象里面有数据,其余的分区表象里面都为0。也没有什么系统启动代码,所以MBR里面的数据都是0。分析一下分区表里面对于FAT32比较重要的字节的具体含义。
offset | 字段长度 | 值 | 含义 |
0x01C2 | Byte | 0x0C | 分区类型标志 0C代表 Win95 FAT32 |
0x01C6 | DWORD | 0x00002000 | 相对扇区数(Relative Sectors)从该磁盘的开始到该分区的开始的位移量,以扇区来计算,即第8192扇区为第一个分区的起始扇区 |
0x01CA | DWORD | 0x03B76000 | 总扇区数(Total Sectors)该分区的总扇区数,即总共有62349312个扇区 |
(8192+62349312)*512/1024/1024 /1024= 29.734375GB, 这个SD卡大小和电脑计算出来29.7GB是一样的,但是前面的8192个扇区到底是做什么用途的目前还不知道,但是我们可以得到后面的62349312个扇区是用FAT32文件系统管理的扇区,这对于学习FAT32文件系统也是足够了。