реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
jhoo
сообщение Jan 20 2006, 07:02
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 19-04-05
Пользователь №: 4 288



Использую исходники atmel mass storage, прибор представляется как
дисковый накопитель. Нужно иметь возможность считывать и записывать
в прибор специфическую информацию (например установка даты/времени).

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

Какие способы отправки scsi команд в устройство можно использовать
вообще? Кто-то работал через интерфейс aspi, или же не стоит с ним
связываться.
Go to the top of the page
 
+Quote Post
Aleks17
сообщение Jan 20 2006, 07:50
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 238
Регистрация: 17-01-05
Из: Новосибирск
Пользователь №: 2 003



Я например поступаю проще - анализирую в программе (на МК) содержимое файла "config.txt" в корне этого диска. Сответственно комп работает как с обычным диском и всё.
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Jan 20 2006, 08:02
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Вы можете также посмотреть исходники примера для LPC214x (ARM7), в кот. в RAM создается виртуальный диск с файлом и устройство представляет собой USB Mass Storage Device.
Go to the top of the page
 
+Quote Post
jhoo
сообщение Jan 20 2006, 08:24
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 19-04-05
Пользователь №: 4 288



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

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

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

К сожалению у меня нет этого исходники. А в чем там суть?
Go to the top of the page
 
+Quote Post
Abo
сообщение Jan 24 2006, 08:39
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 9-01-06
Пользователь №: 12 967



Я бы предложил добавить необходимое количество запросов пользователя к устройству(vendor requwest). Все равно Вы будете специфичные деиствия типа установки, считывания времени производить специальной софтиной, не так ли? Ведь стандартных вызовов в профиле MassStorage не предусмотрено, насколько я знаю. Но правда придется применять свой собствнный драйвер.
Другой вариант - передавать эту информацию через строковые дескрипторы. Ими можно обмениваться через IOCTL запросы к хабу, к которому подключено устройство. У меня есть пример программы, которая проводит опрос шины и вычитывает все стандартные дескрипторы. При этом она работает только через стандартное виндовое API и, естественно ничего не знает о тех устройствах и их драйверах, которые сейчас висят на шине.
Go to the top of the page
 
+Quote Post
jhoo
сообщение Jan 24 2006, 09:09
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 19-04-05
Пользователь №: 4 288



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

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

Сканирование устройств можно делать через функции SetupDiXXX по известному GUID устройства (его я знаю), их можно открывать функциями CreateFile(), значит можно использовать DeviceIoControl() и запихивать в буфер scsi-запрос.
Вопрос: какой IOCTL code нужно указывать? В исходнике программы diskid32.exe diskid32 при сканировании шины использовался код IOCTL_SCSI_MINIPORT. Может ч/з него? Пока проверить не могу. И вообще будет ли работать такая схема если кто-то уже делал.
Go to the top of the page
 
+Quote Post
Aleks17
сообщение Jan 24 2006, 09:11
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 238
Регистрация: 17-01-05
Из: Новосибирск
Пользователь №: 2 003



Цитата(jhoo @ Jan 20 2006, 14:24) *
Такой способ рассматривался и он плохо подходит для установки времени по ряду причин.


Сдается мне, точное время через USB синхронизовать будет достаточно сложно (вопрос конечно в точности установки). У меня GPS приемник для этой цели висит.
Go to the top of the page
 
+Quote Post
Abo
сообщение Jan 25 2006, 07:22
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 9-01-06
Пользователь №: 12 967



Примерчик на Делфе. Только приаттачить к этому сообщению у меня не получилось из-за отсутствия прав. Сообщи куда положить. Но он только вычитывает дескрипторы. Если покопаться в MSDN то наверное можно и записывать их. Если сможешь, научи и меня wink.gif.
Go to the top of the page
 
+Quote Post
jhoo
сообщение Jan 25 2006, 07:32
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 19-04-05
Пользователь №: 4 288



Цитата
Abo

Вышли пожалуйста сюда jhoo@yandex.ru
Go to the top of the page
 
+Quote Post
Abo
сообщение Feb 3 2006, 11:20
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 9-01-06
Пользователь №: 12 967



Отправлено.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 23:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016