【FatFs】FAT32文件系统协议原理讲解(以U盘为例)

 1、前言

        本篇文章主要是介绍FAT格式分区数据在硬盘中是如何存储的,FAT分区格式是Microsoft最早支持的分区格式,依据FAT 表中每个簇链的所占位数(有关概念,后面会讲到)分为FAT12FAT16FAT32 三种格式"变种",但其基本存储方式是相似的。我们在嵌入式系统中使用的最多是FAT32,所以后面主要介绍的是FAT32。

2、FAT文件系统结构

        FAT文件系统结构图如下所示:

2.1 主引导扇区(MBR)

        主引导扇区:硬盘的第一个扇区,由主引导记录(MBR)+ 主分区表(DPT)+ 引导扇区标记(Boot Record ID / Signature)组成,该区域是完成系统BIOS向操作系统交接的重要入口。该扇区在进行硬盘分区时产生。

        主引导扇区组成

        其中的MBR具体内容我们暂时不需要关心,重点要关心硬盘分区表DPT的数据,即上图中红色划线部分(重点关注蓝色和绿色方框数据),其各个字节表示的作用如下:

        对于常见硬盘来说,我们主要关注相对扇区数和总扇区数的值,结合原始数据和分区表含义可以得到重点数据:

1、相对扇区数:保留区1 N扇区 = 0x800 = 2048扇区,也可以得到DBR的地址 = 2048*512 = 0x10 0000 Bytes。

 2、总扇区数:对于只有一个分区的U盘来说,该数据表示分区卷的总容量(不包含相对扇区数)

2.2 操作系统引导扇区(DBR)

        操作系统引导扇区DBR,也称为引导扇区。包含BIOS参数块,该参数块存储有关卷布局和文件系统结构的信息,以及加载windows的引导代码(暂时不需要关心引导代码)。

        下面的示例演示了FAT32卷上引导扇区的十六进制数据:

下面两个表说明了FAT32卷的BPB和拓展BPB的布局,示例值对应FAT32卷上引导扇区的数据。

FAT32分区的BPB字段
字节位移

字段长度

(字节)

对应取值 名称和定义
0x0B 2 0x0200 扇区字节数(Bytes Per Sector) 硬件扇区的大小。
本字段合法的十进制值有 512、1024、2048 和 4096。对大多数磁盘来说,本字段的值为
512
0x0D 1 0x10 每簇扇区数(Sectors Per Cluster),一簇中的扇区数。
一个卷默认的簇大小取决于该卷的大小。本字段的合法十进制值有 1、2、4、8、16、32、64 和 128。
0x0E 2 0x0C80

保留扇区数(Reserved Sector) 第一个 FAT 开始之前的扇区数,包括引导扇区。

(相当于保留区2)

0x10 1 0x02 FAT 数(Number of FAT) 该分区上 FAT 表的个数。本字段的值一般为 2
0x11 2 0x0000 根目录项数(Root Entries) 只有 FAT12/FAT16 使用此字段。对 FAT32 分区而言,本字段必须设置为 0
0x13 2 0x0000 小扇区数(Small Sector) (只有 FAT12/FAT16 使用此字段)对 FAT32 分区而言,本字段必须设置为 0
0x15 1 0xF8 媒体描述符( Media Descriptor) 提供有关媒体被使用的信息。值 0xF8 表示硬盘,0xF0 表示高密度的 3.5寸软盘。
0x16 2 0x0000 每 FAT 扇区数(Sectors Per FAT) 只被 FAT12/FAT16 所使用,对 FAT32 分区而言,本字段必须设置为 0
0x18 2 0x003F 每道扇区数(Sectors Per Track) 包含使用 INT 13h 的磁盘的“每道扇区数”几何结构值。
该分区被多个磁头的柱面分成了多个磁道
0x1A 2 0x00FF 磁头数(Number of Head) 本字段包含使用 INT 13h 的磁盘的“磁头数”几何结构值。
0x1C 4 0x00000800

隐藏扇区数(Hidden Sector) 该分区上引导扇区之前的扇区数。在引导序列计算到根目录的数据区的绝对位移的
过程中使用了该值。本字段一般只对那些在中断 13h 上可见的媒体有意义。在没有分区的媒体上它必须总是为 0

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值