说明:
MBR :Master Boot Record ( 主引导记录)
DBR :DOS Boot Record ( 引导扇区)
FAT :File Allocation Table ( 文件分配表)
硬件:本文SD卡为Kingston 4GB,FAT32格式,簇大小4KB,每扇区512字节。
第一章 硬盘结构与SD卡结构
1.1 硬盘介绍
1.1硬盘结构
如果你熟悉硬盘结构跳过本节。下图是硬盘的结构,如果你只是为了学习SD卡FAT32文件系统的话,这里你只需要注意硬盘排序结构:主引导记录(MBR)—引导扇区—数据—引导扇区—数据。
图1
1.2 MBR分析
MBR(Main Boot Record 主引导记录区)放置在硬盘物理地址0的地方。总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外64个字节交给了 DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。DPT由4个分区表组成,每个16字节。下图中以以硬盘的MBR图,粉红色为硬盘分区表。
对于我们来说,更关注硬盘分区表表中红色区域:下图为硬盘分区表详细说明 。如果要对SD卡、U盘等分多个区,DPT的内容就表示各个区的偏移地址和大小。
起始地址 | 字节数 | 描述 |
0x1BE | 1 | 可引导标志,0x00不可引导,0x80可引导 |
0x1BF~0x1C1 | 3 | 分区起始CHS地址(CHS=磁头、柱面、扇区),起始地址 |
0x1C2 | 1 | 分区类型 |
0x1C3~0x1C5 | 3 | 分区结束CHS地址 |
0x1C6 | 4 | 从磁盘开始到该分区开始的偏移量(分区起始LBA地址Little-endian顺序) |
0x1CA | 4 | 总扇区数(Little-endian顺序) |
图3
SD结构
SD卡没有分区,默认就是一个分区。首先用WinHex文件打开SD所在的盘符,显示如下图:
图4
① 非分区空间(红线所示): 起始扇区0,我认为这个分区就是硬盘上的MBR所在区域,
打开后如下图所示,也可以称为SD卡的MBR区域。
图5
根据表1知道:
红线区域(00002000)为下个分区的扇区地址,即第8192扇区,见图3分区1的起始扇区。
蓝线区域(00760C00)为SD卡总的扇区个数,我们可以计算一下:
0x760C00 *512(每扇区字节)= 3960995840 (字节),与实际大小基本一样。
② 分区1(蓝线所示):起始扇区8192.
③ 剩余扇区 : 才疏学浅,我不知道干嘛的,呵呵
1.3 SD卡存储结构
由此可知SD卡文件系统并不是处在整个SD卡最开始的地方,它处在MBR所处的保留区之后,于是我们可以对使用FAT32文件系统的SD卡整体布局给出如下图示。
图6