1

我正在开发带有FAT16文件系统的基于闪存的 USB 大容量存储设备。它工作正常,但是我很难理解 FAT 段上发生了什么。

当我开始时,我在根目录上有一个 56 字节长的文件,它长 32 位,数据存储在第二个集群上(0 和 1 不能在 FAT 中使用)。

如果我查看 FAT 段的内存转储,我会看到:

f8 ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00... zeros until the end

据我了解,最后一个 0xFFFF 意味着该集群是该文件链中的最后一个集群。

到目前为止,一切都很好。

但是......当我将实际文件的大小扩展到 4,032 字节时,FAT 段变成

f8 ff ff 00 f0 ff 05 60 00 07 f0 ff 00 00 00 00 00... zeros until the end

谁能解释这里发生了什么?

我看到了一些我无法解释的事情:

1.为什么4个系统保留字节会改变?

2. 我看不到任何 0xFFFF 这意味着集群链没有尽头?

如果它对任何人有帮助,块大小为 512 字节,文件系统被格式化为每个集群 2 个段。

4

1 回答 1

1

数字它是 FAT12 而不是我正在使用的 FAT16。

FAT12-16 以簇的数量来区分,而不是写入引导扇区的字符串。

于 2013-06-10T09:05:54.213 回答