1. 主页
  2. 自己动手从0到1学写FAT32文件系统
  3. 第5章 分区格式化
  4. 自定义DBR数据写入

自定义DBR数据写入

内容纲要

本课时的目的是将DBR部分的数据全部由代码产生,实现DBR的完全自主生成,不再依赖于模板数据。

主要内容

BPB_SecPerClus的计算

该项值依赖于格式化时选择的簇大小。

注意,目前课程中并没有检查用户选择的簇大小的合法性。

目前的代码中,允许用户设置任意大小的簇。但是,簇过大,会导致数据区中划分出来的簇数量少。簇数量少,可能会导致FAT类型解析失败。

在FAT技术文档(中文版 第8页)中,有如下说明。当簇的数量较小时,可能会被识别为FAT16或FAT12。

有关这方面的判断,可能会在以下的课时中实现。

BPB_RsvdSecCnt的计算

手册中讲建议设置成32,但我们在这里应当按照原模板中的值,设置成相同的值。

否则,由于导致系统加载时,FAT表、数据区的位置计算成其它值,与磁盘映像文件中现有的位置值不同,导致解析失败。

BPB_NumFATs的计算

根据手册中的建议,以及磁盘映像文件中的实际值,课程中设置的是2。

BPB_FATSz32的计算

该值的计算,需要用到解二元方程组的方法,才能得到正确计算公式。

具体的解法,如需了解,请百度或参考数学课本。

注:这个计算公式可能不是那么准备,如发现问题,欢迎向我提出。

重点难点

注意事项

请在调试前,将相关的值用winhex查看一下,然后在调试过程中与这些值进行对比,方便找出问题。

常见问题

这篇文章对您有用吗?

我们要如何帮助您?

发表评论

电子邮件地址不会被公开。 必填项已用*标注