您的位置:首页 > 其它

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

2012-08-30 11:05 204 查看
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文件分析”一文中)。



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

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



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: