Перейти к содержанию
    

Каким способом можно общаться с usb flash диском?

Использую исходники atmel mass storage, прибор представляется как

дисковый накопитель. Нужно иметь возможность считывать и записывать

в прибор специфическую информацию (например установка даты/времени).

 

Поскольку весь обмен идет через команды scsi, то можно ли для моей

задачи применить зарезервированные номера команд? Или это надо делать

через WRITE BUFFER(3Bh) и READ BUFFER(3Ch) и через них использовать

свой протокол обмена?

 

Какие способы отправки scsi команд в устройство можно использовать

вообще? Кто-то работал через интерфейс aspi, или же не стоит с ним

связываться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я например поступаю проще - анализирую в программе (на МК) содержимое файла "config.txt" в корне этого диска. Сответственно комп работает как с обычным диском и всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Aleks17

Я например поступаю проще - анализирую в программе (на МК) содержимое файла "config.txt" в корне этого диска. Сответственно комп работает как с обычным диском и всё.

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

 

Alex2172

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

К сожалению у меня нет этого исходники. А в чем там суть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы предложил добавить необходимое количество запросов пользователя к устройству(vendor requwest). Все равно Вы будете специфичные деиствия типа установки, считывания времени производить специальной софтиной, не так ли? Ведь стандартных вызовов в профиле MassStorage не предусмотрено, насколько я знаю. Но правда придется применять свой собствнный драйвер.

Другой вариант - передавать эту информацию через строковые дескрипторы. Ими можно обмениваться через IOCTL запросы к хабу, к которому подключено устройство. У меня есть пример программы, которая проводит опрос шины и вычитывает все стандартные дескрипторы. При этом она работает только через стандартное виндовое API и, естественно ничего не знает о тех устройствах и их драйверах, которые сейчас висят на шине.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Другой вариант - передавать эту информацию через строковые дескрипторы. Ими можно обмениваться через IOCTL запросы к хабу, к которому подключено устройство. У меня есть пример программы, которая проводит опрос шины и вычитывает все стандартные дескрипторы. При этом она работает только через стандартное виндовое API и, естественно ничего не знает о тех устройствах и их драйверах, которые сейчас висят на шине

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

 

Сканирование устройств можно делать через функции SetupDiXXX по известному GUID устройства (его я знаю), их можно открывать функциями CreateFile(), значит можно использовать DeviceIoControl() и запихивать в буфер scsi-запрос.

Вопрос: какой IOCTL code нужно указывать? В исходнике программы diskid32.exe diskid32 при сканировании шины использовался код IOCTL_SCSI_MINIPORT. Может ч/з него? Пока проверить не могу. И вообще будет ли работать такая схема если кто-то уже делал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Сдается мне, точное время через USB синхронизовать будет достаточно сложно (вопрос конечно в точности установки). У меня GPS приемник для этой цели висит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Примерчик на Делфе. Только приаттачить к этому сообщению у меня не получилось из-за отсутствия прав. Сообщи куда положить. Но он только вычитывает дескрипторы. Если покопаться в MSDN то наверное можно и записывать их. Если сможешь, научи и меня ;).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...