Создайте произвольную файловую систему FAT в файл или непосредственно в память программы.

Я пишу встроенную систему, в которой я создаю драйвер запоминающего устройства USB, который использует 8 МБ ОЗУ в качестве файловой системы FAT.

Хотя в то время имело смысл позволить ОС взять мою обнуленную область ОЗУ и отформатировать сам раздел FAT, я столкнулся с проблемами, которые я диагностирую с помощью Яна Аксельсона (популярного автора книг о USB) форум PORTS. Проблема связана со стиранием блоков на накопителе, и ее можно обойти, предварительно отформатировав область памяти в файловую систему FAT перед перечислением USB. Затем я мог видеть, будет ли привод работать нормально. В идеале предварительно отформатированный раздел должен содержать файл для проверки операции чтения.

Было бы неплохо, если бы я мог каким-то образом создать и смонтировать фиктивную файловую систему FAT размером 8 МБ в моей ОС (OSX), записать в нее файл и экспортировать его в файл образа для включения в мой проект. Кто-нибудь знает, как это сделать? Я мог справиться с остальным. Меня не слишком беспокоит, будет ли это FAT12/16/32 на данный момент, было бы неплохо добавить дополнительное MBR.

Если эта опция не существует, я хочу использовать предварительно написанную утилиту для создания файла FAT img, который я мог бы включить в свой проект и загрузить непосредственно в ОЗУ. эта утилита позволит мне, например, указать файловую систему размером 8 МБ с 512-байтовыми секторами и, возможно, FAT12/FAT16/FAT32.

Кто-нибудь знает о такой утилите? Я не смог найти ни одного.

Если нет, может ли кто-нибудь порекомендовать первый шаг для реализации этого на C? Я надеюсь, что библиотека существует. Я очень устал после внедрения драйвера запоминающего устройства с нуля, но я понимаю, что мне, возможно, придется «сморщиться» и вручную создать раздел FAT. Это не так уж сложно. Я представляю некоторые упакованные структуры и некоторые опции. Я приеду. У меня уже есть ресурсы в самой файловой системе FAT.


person bazz    schedule 26.03.2015    source источник


Ответы (2)


В итоге я обнаружил, что FatFS имеет средства для форматирования и разбиения "диска" на внутри встроенного устройства, и это избавило меня от необходимости полностью форматировать его вручную или использовать инструменты на стороне хоста.

Я хотел бы более подробно рассказать о предпринятых шагах, но я исчерпан. Я могу отредактировать более подробную информацию позже.

person bazz    schedule 01.04.2015

Их несколько, обычно они скрыты в исходниках ОС.

В BSD (т.е. OS-X) у вас должен быть инструмент "mkdosfs", если нет, исходный код будет доступен повсюду... вот случайный пример

http://www.blancco.com/downloads/source/utils/mkdosfs/mkdosfs.c

Также есть пакет 'mtools', он обычно используется для дискет, но я думаю, что он работает и с образами дисков.

Однако ни один из них не будет создавать таблицы разделов; вам понадобится что-то еще, если это тоже требуется.

person user3710044    schedule 26.03.2015
comment
Я не уверен, потребуется ли это. Хотя я планирую иметь только один раздел, что намекает на отсутствие необходимости в таблице разделов, в книге Яна Аксельсона говорится, что наличие MBR может увеличить поддержку устройства. мысли? - person bazz; 26.03.2015
comment
сейчас просматриваю mformat - person bazz; 26.03.2015