2016-06-24 2 views
0

Я пытаюсь реализовать только библиотеку файловой системы FAT16/32 для встроенных систем, чтобы читать карты SD (изобретать колесо в образовательных целях).Возможно ли, что небольшие SD-карты отформатированы без MBR?

Кажется, что есть карточки, которые отформатированы без MBR; просто FAT без таблицы разделов.

Я прочитал документы FAT и документы MBR и научился читать SD-карту, у которой есть MBR и FAT.

Мне нужна моя библиотека C++ для поддержки чтения SD-карт без MBR.

Мой текущий подход заключается в следующем:

  1. Попробуйте прочитать первый сектор предполагая, что он содержит FAT BPB (Boot Parameter Block).
  2. Проверьте, действительно ли информация.
  3. Если да, продолжайте читать корневой каталог.
  4. В противном случае предположим, что у него MBR.
  5. Прочтите таблицу разделов, начиная с 0x1BE.
  6. Если поддерживается тип поддерживаемого раздела, попробуйте прочитать его первый сектор как FAT.
  7. Если прочитанная информация действительна, продолжайте чтение корневого каталога.
  8. В противном случае возвращает ERROR_CODE

Есть ли лучший подход? Например, есть ли волшебное число или определенный шаблон, который можно идентифицировать?

+0

вы просто прочитать и посмотреть, если она есть? –

+0

есть ли волшебное число или определенный шаблон для идентификации? –

+0

или есть способ отличить первый сектор FAT от MBR? –

ответ

0
  1. Проверьте текст FAT32 со смещением 0x52.
  2. Если это не удается, проверьте FAT12 или FAT16 на 0x36
  3. Если это не удается, предположим, что первым сектором является MBR.

Благодаря @Clifford

Смежные вопросы