FATFS系列之解剖篇

解剖篇

FAT格式解析

FAT格式映像

在这里只讲解了FAT12/16的格式,FAT32读者另行拜读别的文章哈。

FAT12的格式分为四大块:Boot 、FAT、Root Directory 、Data(引导区、文件配置区、根目录区、数据区)

Boot 引导区:里面包含了各种启动参数,文件系统的参数。详细的参数如下表格

参数名偏移位置大小(byte)描述
BS_JmpBoot03引导码,一般是0xEB,0x??,0x90。??是任意值(跳转的位置)。若移植到嵌入式系统的话??可以任意填,无影响
BS_OEMName38创建卷的名字,默认是"MSWIN 4.1"
BPB_BytsPerSec112扇区的大小(Byte)
BPB_SecPerClus131簇的大小(Sector),即一个簇多少个扇区
BPB_RsvdSecCnt142保留区域扇区的个数,结合上图来看更清晰哦
BPB_NumFATs161FAT区的个数,不是整个FAT系统,是FAT区!
BPB_RootEntCnt172根目录条目数,能容纳的文件数量,在FAT32中此值必须为0
BPB_TotSec16192扇区总数,在FAT32中此值必须为0
BPB_Media211磁盘类型
BPB_FATSz16222FAT区占了多少扇区
BPB_SecPerTrk242每个轨道的扇区数,与具体介质有关。(一般不用管)
BPB_NumHeads262磁盘头数量,与具体介质有关。(一般不用管)
BPB_HiddSec284FAT卷隐藏的物理扇区数,取决于平台。若从卷开头就存储,此值为0,如软盘。
BPB_TotSec32324扇区总数(使用FAT32格式时),若不是FAT32,此值为0
以上的参数FAT12/16/32都是一样的。
以下参数只适用于FAT12/16
BS_DrvNum361驱动器号。用于MS-DOS引导,0x00用于软盘、0x80用于固定磁盘。实际上取决于操作系统
BS_Reserved1371保留
BS_BootSig381扩展引导签名(0x29)。这是一个签名字节,表示存在以下三个字段。
BS_VolID394BS_VolLab一起使用的卷序列号,用于跟踪可移动存储上的卷。
BS_VolLab4311此字段为 11 字节卷标签,它与根目录中记录的卷标签匹配。
BS_FilSysType548“FAT12”,“FAT16”`或```“FAT”。
BS_BootCode62448引导程序。它与平台相关,不使用时填充为零。
BS_BootSign51020xAA55. 指示这是有效的引导扇区的引导签名。

当扇区大小大于512Bytes,扇区的其余空闲部分就填充0

FAT区:因为文件不是存放在一个连续的空间中的,就像一个被打乱的拼图存放到一个区域,我们要按顺序找到文件的各个部分就需要FAT区中的条目了,每个条目会记录下一个部分在哪里,当文件找到开始的簇号,顺着FAT的条目,就能找到文件的各个部分在个位置。由此可见,FAT区的重要性,所以会有FAT备份区,其内容和FAT是一样的。

根目录区:记录文件的属性,文件的起始单元,操作系统通过 根目录+FAT区的信息就可以确定文件在硬盘中的起始位置和文件大小了。

数据区:真正的文件数据就存储在这个区域,数据区占用硬盘空间最大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值