Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB устройство со встроенной файловой системой
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Мусатов Константин
Вопрос из разряда поиска информации. Года два назад, мне казалось, что я видел спецификацию USB устройства со встроенной файловой системой. Обычные флешки предлагают себя как область памяти сегментированную или нет, но файловая система обеспечивается внешней ОС, например Windows. А тут вопрос о том, что внутри устройства уже есть файловая система. Может то, что я видел раньше, это не то что мне надо. Потому вопрос: Существует ли некая спецификация устройств USB так, что бы компьютер обращался именно пофайлово? Это еще интересно тем, что можно поднять некие системные ресурсы в виде виртуальных папок.
Возможно, как вариант, технология Push (ActiveSync) от Microsoft. С ней не сталкивались? Она вроде требует лицензирования.
zltigo
Цитата(Мусатов Константин @ May 4 2010, 14:55) *
что я видел спецификацию USB устройства со встроенной файловой системой.

Вообще не представляю, нафига такое может быть использовано. И вообще, простые FAT совсем просто пишутся где угодно, а сложные слишком интимны, а производительные столько ресурсов жрут, что не для брелков.
Мусатов Константин
Цитата
Вообще не представляю, нафига такое может быть использовано.

Девайс достаточно сложен внутри и имеет на флеш диске файловую систему не поддерживаемую Windows. Можно, конечно, и сэмулировать FAT отформатированное пространство для Windows, но решение несколько кривое. Как вариант оно рассматривается, но с низким приоритетом. Хотелось бы по-человечески, файловое обращение. Если бы это было сетевое устройство, а не USB, то я бы просто повесил ftp сервер.
AlexandrY
Цитата(zltigo @ May 4 2010, 15:36) *
Вообще не представляю, нафига такое может быть использовано. И вообще, простые FAT совсем просто пишутся где угодно, а сложные слишком интимны, а производительные столько ресурсов жрут, что не для брелков.


Самое смешное, это какой прикладной протокол для этого предполагается использовать.
Уж не AT ли команды? biggrin.gif
SCSI как понимаю засложный будет, да и мапирование верхнего уровня для конкретной реализации файловой системы потребуется неслабое поверх SCSI.
Но и для AT команд описание такого мапирования займет приличную книгу.
Характерный пример это чипы Vinculum.
Там описание дурного ASCII протокола для обмена с USB дисками чуть ли не больше по объему чем описание SCSI команд хоста для USB флешей.
Т.е. интегрировать Vinculum для специалиста будет более накладно чем интегрировать софт USB хоста.
Мусатов Константин
Цитата
Самое смешное, это какой прикладной протокол для этого предполагается использовать.
Уж не AT ли команды?

Как-то было реализовано. Но тогда мне это было не надо и я не вникал. А сейчас...
Реализовано было не сложно, девайс был достаточно простой. Суть была в том, что подключенное к компу устройство было видно как диск. При этом в самом устройстве никаких дисков не было. На этом сэмулированном диске были файл конфигурации, который можно было отредактировать из текстового редактора и таким образом настроить устройство и файлы логов событий, они были вроде как только для чтения. Сама идея такого простого администрирования устройства мне тогда и запала в душу.
zltigo
Цитата(Мусатов Константин @ May 4 2010, 16:57) *
Суть была в том, что подключенное к компу устройство было видно как диск.

Свежайшая и оригинальнейшая идея smile.gif
Цитата
При этом в самом устройстве никаких дисков не было

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

Отлично! Поднимаете примитивнейший FAT, причем совершенно не изобретая ни сущностей, ни велосипедов и вот оно счастье:
Цитата
Сама идея такого простого администрирования устройства мне тогда и запала в душу.

Хотя какой фат тут даже, если файл один.
galjoen
Цитата(Мусатов Константин @ May 4 2010, 17:57) *
Суть была в том, что подключенное к компу устройство было видно как диск.

Делаю что-то подобное, но на этом диске приходится держать exe-шник, ибо по другому не получается победить кэширование в винде.
Мусатов Константин
Цитата
Какая разница, транслируется open() в некий неведомый запрос неведомому драйверу общающемуся по неведомому протоколу с неведомым устройством.

Вот неведомых там не было, ничего дополнительного в винды не ставилось.
Цитата
Отлично! Поднимаете примитивнейший FAT, причем совершенно не изобретая ни сущностей, ни велосипедов и вот оно счастье:

Не понял, поподробнее. С флэш дисками фатом заведует Винда, а флеш диск, сколько я знаю, представляет из себя плоскую область памяти. Вы имеете в виду поднять в моем устройстве анти FAT? Т.е. эмуляцию FAT отформатированного пространства. В моем устройстве, в отличе от того, что я видел, будет много папок, часть из них виртуальные, а доступ к разным файлам будет зависеть от состояния устройства. Тут бы конечно а-ля сетевой доступ было бы проще реализовать, ну или, по крайней мере, прозрачнее, но Ethernet в нем нет и IP так же. А если эмулировать пространство, то мне заранее неизвестно в какой сектор захочет винда положить измененный или новый файл, она просто начнет писать, а потом модифицировать область DIR и FAT. Получается, что однозначное решение только на чтение.
blackfin
Цитата(Мусатов Константин @ May 4 2010, 15:55) *
Вопрос из разряда поиска информации.

Информация: USB.Mass.Storage
Мусатов Константин
Цитата
Делаю что-то подобное, но на этом диске приходится держать exe-шник, ибо по другому не получается победить кэширование в винде.

А как Вы реализуете, эмуляция FAT отформатированного пространства или по-другому?

Цитата
Информация: USB.Mass.Storage

Спасибо! Похоже тут ответы на все вопросы!
galjoen
Цитата(Мусатов Константин @ May 4 2010, 18:38) *
А как Вы реализуете, эмуляция FAT отформатированного пространства или по-другому?

Я ничего не эмулирую. Форматирует винда. Я только туда логи в виде файлов пишу. Для винды они read only. Вот винда эти файлы и кэширует, ну не понимает она, что там может что-то без неё изменится. И стандартными программами перечитать не получится...
Мусатов Константин
Цитата
Я ничего не эмулирую. Форматирует винда.

Т.е. у Вас плоское адресное пространство, отформатированное виндой под FAT. Вы сами так же к нему обращаетесь через встроенный драйвер FAT и пишете туда логи. Я правильно понял?
Если так, то мне это не подходит, поскольку встроенная MicroDS карточка в нашем проекте отформатирована не под FAT, а под отказоустойчивую файловую систему, которую Win не понимает и я не могу отрыть плоский доступ к ней. А проблемы кеширования у меня наоборот нет, во время обслуживания, основной работы контроллером не ведется.
AlexandrY
Цитата(Мусатов Константин @ May 4 2010, 19:27) *
Если так, то мне это не подходит, поскольку встроенная MicroDS карточка в нашем проекте отформатирована не под FAT, а под отказоустойчивую файловую систему,


ExtFAT и есть самая что ни на есть отказоустойчивая файловая система. biggrin.gif

Как выход делать Mass Storage c FAT на RAM. А уж от туда перекачивать на вашу проприетарную систему.
Можно эмулировать FAT и в файле на физической другой файловой системе.
Но почему вам трудно сделать FTP через тот же RNDIS?
Или вам ключи от сорсов еще дать? laughing.gif
Мусатов Константин
Цитата
ExtFAT и есть самая что ни на есть отказоустойчивая файловая система

Как я понял, не совсем, хотя с элементами танзакционности. smile.gif
К тому же ее надо лицензировать у Мелкомягких, она не свободная, а девайс коммерческий.
Цитата
Как выход делать Mass Storage c FAT на RAM. А уж от туда перекачивать на вашу проприетарную систему.

Опасаюсь, что РАМ-а не хватит, там итак плотненько.
Цитата
Но почему вам трудно сделать FTP через тот же RNDIS?

Придется ставить еще и IP. Но это вариант.
Цитата
Или вам ключи от сорсов еще дать?

А покажите того, кто откажется smile.gif)))
Alex11
Несколько запоздало, но была еще MTP спецификация. Микрософт ее поддерживает. Может быть, не очень удобно для передачи логов, но зато это объектно-ориентированная передача, файлы передаются как единое целое и не требуют Fat'а на устройстве.
Мусатов Константин
Media Transfer Protocol - он вроде только на чтение, или я ошибаюсь?

Так однозначного ответа не нашел по необходимости лицензирования ExFAT, но, косвенно читая MSDN, наверно надо, если не ставишь в устройство WinCE.
zltigo
Цитата(Мусатов Константин @ May 4 2010, 17:32) *
Вы имеете в виду поднять в моем устройстве анти FAT?

Я этого не имел ввиду, поскольку, то что Вам на самом деле нужен транслятор файловых систем стало известно кому-то кроме Вас заметно позже. Насколько сейчас можно понять, самый простой вариант это действительно FTP или вообще просто TFTP на UDP поднять.
Цитата(Мусатов Константин @ May 4 2010, 20:35) *
Опасаюсь, что РАМ-а не хватит, там итак плотненько.

Да не надо там RAM вообще - достаточно на той файловой системе перед обращением сгенерировать файл содержащий "FAT" для внешних нужд.
Мусатов Константин
Цитата
достаточно на той файловой системе перед обращением сгенерировать файл содержащий "FAT" для внешних нужд.

У я тормоз!
Спасибо smile.gif
Наверное еще положить начальный сектор и, м.б. DIR-ы в нужном формате.

Так, а при записи как поступать?
zltigo
Цитата(Мусатов Константин @ May 4 2010, 22:32) *
Наверное еще положить начальный сектор

MBR опционален.
Цитата
и, м.б. DIR-ы в нужном формате.

Директории? Это на FAT практически тоже самое, что и файлы.
Цитата
Так, а при записи как поступать?

Так и писать по таблицам FAT сразу взводя флаг необходимости синхронизации FAT c родной системой , кэшировать в RAM/Flash и потом писать.
Мусатов Константин
Цитата
Так и писать по таблицам FAT сразу взводя флаг необходимости синхронизации FAT c родной системой , кэшировать в RAM/Flash и потом писать.

Спасибо! Я примерно так и подумал. Получается, что сначала надо прокешировать запись, а когда будет обновление FAT и DIR, тогда и переносить транзакцию во внутреннюю файловую систему.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.