Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Каким способом можно общаться с usb flash диском?
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
jhoo
Использую исходники atmel mass storage, прибор представляется как
дисковый накопитель. Нужно иметь возможность считывать и записывать
в прибор специфическую информацию (например установка даты/времени).

Поскольку весь обмен идет через команды scsi, то можно ли для моей
задачи применить зарезервированные номера команд? Или это надо делать
через WRITE BUFFER(3Bh) и READ BUFFER(3Ch) и через них использовать
свой протокол обмена?

Какие способы отправки scsi команд в устройство можно использовать
вообще? Кто-то работал через интерфейс aspi, или же не стоит с ним
связываться.
Aleks17
Я например поступаю проще - анализирую в программе (на МК) содержимое файла "config.txt" в корне этого диска. Сответственно комп работает как с обычным диском и всё.
Alex2172
Вы можете также посмотреть исходники примера для LPC214x (ARM7), в кот. в RAM создается виртуальный диск с файлом и устройство представляет собой USB Mass Storage Device.
jhoo
Цитата
Aleks17
Я например поступаю проще - анализирую в программе (на МК) содержимое файла "config.txt" в корне этого диска. Сответственно комп работает как с обычным диском и всё.

Такой способ рассматривался и он плохо подходит для установки времени по ряду причин.

Цитата
Alex2172
Вы можете также посмотреть исходники примера для LPC214x (ARM7), в кот. в RAM создается виртуальный диск с файлом и устройство представляет собой USB Mass Storage Device

К сожалению у меня нет этого исходники. А в чем там суть?
Abo
Я бы предложил добавить необходимое количество запросов пользователя к устройству(vendor requwest). Все равно Вы будете специфичные деиствия типа установки, считывания времени производить специальной софтиной, не так ли? Ведь стандартных вызовов в профиле MassStorage не предусмотрено, насколько я знаю. Но правда придется применять свой собствнный драйвер.
Другой вариант - передавать эту информацию через строковые дескрипторы. Ими можно обмениваться через IOCTL запросы к хабу, к которому подключено устройство. У меня есть пример программы, которая проводит опрос шины и вычитывает все стандартные дескрипторы. При этом она работает только через стандартное виндовое API и, естественно ничего не знает о тех устройствах и их драйверах, которые сейчас висят на шине.
jhoo
Цитата
Другой вариант - передавать эту информацию через строковые дескрипторы. Ими можно обмениваться через IOCTL запросы к хабу, к которому подключено устройство. У меня есть пример программы, которая проводит опрос шины и вычитывает все стандартные дескрипторы. При этом она работает только через стандартное виндовое API и, естественно ничего не знает о тех устройствах и их драйверах, которые сейчас висят на шине

Вот именно к этому варианту я больше и склоняюсь. От примера не отказался бы.

Сканирование устройств можно делать через функции SetupDiXXX по известному GUID устройства (его я знаю), их можно открывать функциями CreateFile(), значит можно использовать DeviceIoControl() и запихивать в буфер scsi-запрос.
Вопрос: какой IOCTL code нужно указывать? В исходнике программы diskid32.exe diskid32 при сканировании шины использовался код IOCTL_SCSI_MINIPORT. Может ч/з него? Пока проверить не могу. И вообще будет ли работать такая схема если кто-то уже делал.
Aleks17
Цитата(jhoo @ Jan 20 2006, 14:24) *
Такой способ рассматривался и он плохо подходит для установки времени по ряду причин.


Сдается мне, точное время через USB синхронизовать будет достаточно сложно (вопрос конечно в точности установки). У меня GPS приемник для этой цели висит.
Abo
Примерчик на Делфе. Только приаттачить к этому сообщению у меня не получилось из-за отсутствия прав. Сообщи куда положить. Но он только вычитывает дескрипторы. Если покопаться в MSDN то наверное можно и записывать их. Если сможешь, научи и меня wink.gif.
jhoo
Цитата
Abo

Вышли пожалуйста сюда jhoo@yandex.ru
Abo
Отправлено.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.