我试图为嵌入式系统实现只读FAT16 / 32文件系统库,读取SD卡(为了教育目的而重新发明轮子)。
似乎有没有MBR格式化的卡片;只是没有任何分区表的FAT。
我已经阅读了FAT文档和MBR文档,并学习了如何读取具有MBR和FAT的SD卡。
我需要我的C ++库来支持在没有MBR的情况下读取SD卡。
我目前的做法如下:
- 尝试读取第一个扇区,假设它包含FAT BPB(Boot 参数块)。
- 检查信息是否有效。
- 如果是,请继续阅读根目录。
- 否则假设它有MBR。
- 从0x1BE开始读取分区表。
- 如果支持的分区类型可用,请尝试将其第一个扇区读为FAT。
- 如果读取的信息有效,请继续阅读根目录。
- 否则返回ERROR_CODE
醇>
有更好的方法吗?例如,是否有任何可以识别的幻数或特定模式?
答案 0 :(得分:0)
- 检查偏移量为0x52的文本FAT32。
- 如果失败,请检查0x36
处的FAT12或FAT16- 如果失败,假设第一个扇区是MBR。
醇>
感谢@Clifford