SD+FAT16文件系统学习笔记1

SD+FAT16文件系统学习笔记1
2010-08-12 23:17

一、物理扇区0(MBR)

物理扇区0常称为引导扇区(MBR).读取出SD卡的物理扇区0,在物理扇区0的0x<?XML:NAMESPACE PREFIX = ST1 />1C6~0x1C9这4个字节中,可以得到逻辑扇区0(主引导区)的物理扇区地址.可能是因为我不会用WinHex,无法打开物理扇区,只能选择打开逻辑扇区.所以只有从开发板上读出物理扇区0的信息,然后用UART输出.我的SD卡物理扇区0的部分内容如下:

    0 1 2 3 4 5 6 7       8 9 A B C D E F

1B0 0 0 0 0 0 0 0 0          0 0 0 0 0 0 0 2      

1C0 c 0 6 3f ff b7 89 0          0 0 77 91 3a 0 0 0      

1D0 0 0 0 0 0 0 0 0          0 0 0 0 0 0 0 0      

1E0 0 0 0 0 0 0 0 0          0 0 0 0 0 0 0 0      

1F0 0 0 0 0 0 0 0 0          0 0 0 0 0 0 55 aa

前446字节为一些引导信息,地址为0x00~0x1BD。从0x1BE开始,每16字节就为一个分区的信息,我的SD卡只有一个分区,所以只有0X1BE~0X1CD有内容.最后两个字节0X55、0XAA为签名.从0X1C6~0X1C9可以知道逻辑扇区0的位置。我这里为89 00 00 00,即0X89,所以第137个物理扇区为逻辑扇区0.这16字节的分区信息的其它内容参考下表(表截图于jimsboy(海洋之星)的“SD卡中FAT16文件分析”一文中)。

SD+FAT16文件系统学习笔记1_第1张图片

二、主引导区逻辑扇区0(BPB--BIOS参数数据块)

    知道了逻辑扇区0的物理扇区位置,接下来的文件系统操作都是基于这个逻辑扇区0,但SD卡的读、写扇区的操作都是从物理扇区地址计算的,比如我想读出逻辑扇区0的数据,我这里就是ReadSingelBlock(137,buffer).我的SD逻辑分区0的内容如下:

SD+FAT16文件系统学习笔记1_第2张图片

从这里,我们可以得到每扇区的字节数,每簇的扇区数,FAT表所占的扇区数,总扇区数(逻辑扇区),隐藏扇区数(逻辑扇区0前面的物理扇区数),详细内容参考下表(表截图于jimsboy(海洋之星)的“SD卡中FAT16文件分析”一文中)。

你可能感兴趣的:(c,buffer,2010)