FAT 文件系统 - MBR

MBR

之前为了让MCU能够读取SD卡的数据,研究了很久FAT文件系统,查了很多资料,走了很多弯路,比如MBR和DBR的区别,就花了很久才弄清楚。

MBR(主引导记录)严格说并不属于FAT文件系统的部分,但如果没有MBR,MCU是没有办法找到DBR的,而DBR是FAT的引导。如果不了解这点,就没办法理解FAT文件系统采用双引导是什么意思。

FAT文件系统下,一个磁盘的结构如下

MBR若干空扇区DBRFSinfo若干空扇区FAT表区FAT备份扇区若干空扇区根目录区文件夹及文件数据区
1 sectorN sectors1 sector1 sectorN sectorsN sectorsN sectorsN sectorsN sectors
512bytes512bytes
物理0扇区逻辑0扇区簇2

winhex打开硬盘时,默认打开逻辑0扇区,即DBR所在扇区,需要打开物理磁盘,才能看见MBR。
这里需要理解两个名词:扇区和簇,一个扇区一般包含512个字节, 一个簇包含若干个扇区,一个簇的大小,在DBR中有记录,比如64个扇区为一个簇,那么一个簇就是32kb,但簇的第一个扇区并不是64*N个扇区,因为簇0和簇1,是不用的,根目录所在的簇为簇2,簇3第一个扇区位置= 根目录扇区+64扇区。
FAT表,就是一个簇链表,每4个字节表示一个簇,它的值指向下一个簇,这样就能存放大文件,并实现随机存储。FAT表对应值为0时,表示该簇未被占用,FSinfo扇区中,记录了下一个可分配的簇。FAT表中对应值为特定值时,表示该簇是坏簇,这样可以软件层面规避磁盘坏道。

MBR结构

446字节bootloader64字节DPT2字节有效标致

64字节的DPT实际是由4个16字节的磁盘分区信息构成的
所以采用MBR引导的磁盘,只能分成4个主分区,大于4个分区,就必须用逻辑分区。

偏移长度所表达的意义
0x01 字节分区状态:如0–>非活动分区 80–> 活动分区
0x11 字节该分区起始头(HEAD)
0x22 字节该分区起始扇区和起始柱面
0x41 字节该分区类型:如82–> Linux Native分区 83–> Linux Swap 分区 "0B"表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS)
0x51 字节该分区终止头(HEAD)
0x62 字节该分区终止扇区和终止柱面
0x84 字节该分区起始绝对扇区
0xc4 字节该分区扇区数

一般使用FAT文件系统时,我们只用到0x8的分区起始绝对扇区,这个扇区就是DBR所在扇区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值