Как открыть доступ к файловой системе FAT32 - PullRequest
4 голосов
/ 05 декабря 2011

Я работаю на встроенном устройстве, которое использует SD-карту для хранения и должно позволить ПК получить доступ к этой SD-карте через USB.

Лучший подход, который я мог бы предложить, это виртуализация диска и представление этой виртуальной картинки на ПК.Это позволило бы ПК считывать и записывать файлы, в то время как мое устройство также считывает и записывает.

Проблема возникает, если учесть, что ПК может иметь кэшированные чтения, поэтому для пользователя ПК становится невозможнымпросматривать новые файлы по мере их создания устройством - ПК будет видеть только файлы, которые существовали на момент подключения.

Еще один недостаток заключается в том, что извлекать флэш-карту небезопасно до тех пор, пока компьютер не будет отключен..

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

Есть ли какой-нибудь обычно используемый умный обходной путь, который мне не хватает?

Спасибо

Ответы [ 2 ]

6 голосов
/ 06 декабря 2011

Насколько я знаю, два устройства не могут совместно использовать блочное устройство, используя обычные файловые системы, такие как FAT.(если, возможно, это файловая система только для чтения)

Решение заключается в том, что только одно устройство (т.е. камера) может владеть файловой системой на низком уровне (уровне блоков).Затем это устройство может обмениваться файлами, используя протокол более высокого уровня (выше, чем операции с необработанными блоками).Как вы сказали, USB Media Transfer Protocol является тому примером.Другими примерами протокола обмена файлами более высокого уровня являются NFS и SMB, хотя я не думаю, что они будут применимы в этом сценарии.

Цитирование из Протокол передачи мультимедиа в Википедии :

Основная причина использования MTP, а не, например, класса запоминающих устройств USB (MSC), заключается в том, что последний работает на уровне детализации блока запоминающих устройств (обычно на практике это блок FAT).), а не на уровне логического файла.Другими словами, класс запоминающего устройства USB предназначен для предоставления хост-компьютеру недифференцированного доступа к массовому запоминающему устройству, такому как компактная флэш-память, а не к файловой системе, которая может безопасно использоваться совместно с целевым устройством (за исключением определенных файлов, которыехост может быть изменен / доступ).Поэтому на практике, когда хост-компьютер USB смонтировал раздел MSC, он принимает на себя абсолютный контроль над хранилищем, которое затем может быть безопасно не изменено устройством без риска повреждения данных до тех пор, пока хост-компьютер не разорвет соединение.

1 голос
/ 05 декабря 2011

Создайте два разных раздела на одной SD-карте - пусть ваше устройство использует один и предоставит один для ПК.Поскольку одновременного доступа к одной и той же файловой системе не будет, проблема решена.

...