0

我正在尝试为嵌入式系统实现只读 FAT16/32 文件系统库,以读取 SD 卡(出于教育目的重新发明轮子)。

似乎有些卡在没有 MBR 的情况下被格式化;只是没有任何分区表的FAT。

我已经阅读了 FAT 文档和 MBR 文档,并学习了如何读取同时具有 MBR 和 FAT 的 SD 卡。

我需要我的 C++ 库来支持在没有 MBR 的情况下读取 SD 卡。

我目前的方法如下:

  1. 尝试读取第一个扇区,假设它包含 FAT BPB(引导参数块)。
  2. 检查信息是否有效。
  3. 如果是,继续阅读根目录。
  4. 否则假设它有一个 MBR。
  5. 从 0x1BE 开始读取分区表。
  6. 如果支持的分区类型可用,请尝试将其第一个扇区读取为 FAT。
  7. 如果读取信息有效,则继续读取根目录。
  8. 否则返回 ERROR_CODE

有更好的方法吗?例如,是否有任何可以识别的幻数或特定模式?

4

1 回答 1

0
  1. 检查偏移量 0x52 处的文本 FAT32。
  2. 如果失败,请检查 0x36 处的 FAT12 或 FAT16
  3. 如果这也失败了,假设第一个扇区是 MBR。

感谢@Clifford

于 2016-06-25T05:19:34.173 回答