我正在尝试为嵌入式系统实现只读 FAT16/32 文件系统库,以读取 SD 卡(出于教育目的重新发明轮子)。
似乎有些卡在没有 MBR 的情况下被格式化;只是没有任何分区表的FAT。
我已经阅读了 FAT 文档和 MBR 文档,并学习了如何读取同时具有 MBR 和 FAT 的 SD 卡。
我需要我的 C++ 库来支持在没有 MBR 的情况下读取 SD 卡。
我目前的方法如下:
- 尝试读取第一个扇区,假设它包含 FAT BPB(引导参数块)。
- 检查信息是否有效。
- 如果是,继续阅读根目录。
- 否则假设它有一个 MBR。
- 从 0x1BE 开始读取分区表。
- 如果支持的分区类型可用,请尝试将其第一个扇区读取为 FAT。
- 如果读取信息有效,则继续读取根目录。
- 否则返回 ERROR_CODE
有更好的方法吗?例如,是否有任何可以识别的幻数或特定模式?