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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Два фнукциональных устройства в одном физическом
Седой
сообщение Nov 10 2009, 07:53
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата(korbian @ Nov 10 2009, 11:37) *
"Заблокировать" появление диска в системе до определенного момента(события на втором интерфейсе). Сейчас всегда возвращаю ошибку из "железа" на SCSI-комманды чтения и записи от хоста, диск в системе присутствует, но операции чтения\записи для него не проходят. Возможно есть более элегантное решение?

Делайте реэнумерацию. Когда нужен mass storage - устройство должно содержать его интерфейс, когда не нужен - интерфейса нет.
Но будут тонкости - система должна видеть это как два разных устройства.
Go to the top of the page
 
+Quote Post
korbian
сообщение Nov 10 2009, 08:16
Сообщение #17





Группа: Участник
Сообщений: 13
Регистрация: 13-03-09
Пользователь №: 46 063



Цитата(Седой @ Nov 10 2009, 10:53) *
Делайте реэнумерацию. Когда нужен mass storage - устройство должно содержать его интерфейс, когда не нужен - интерфейса нет.
Но будут тонкости - система должна видеть это как два разных устройства.

Как я понял, вы предлагаете модифицировать дескриптор устройства на лету? НО второй\специализированный интерфейс должен быть доступен ВСЕГДА, а первый (mass storage) должен "отлочить" диск только по сигналу на втором. на этот интерфейс предполагается посадить стандартный драйвер Windows usbstor.sys.


--------------------
© korbian
Go to the top of the page
 
+Quote Post
Седой
сообщение Nov 10 2009, 10:51
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата(korbian @ Nov 10 2009, 13:16) *
Как я понял, вы предлагаете модифицировать дескриптор устройства на лету? НО второй\специализированный интерфейс должен быть доступен ВСЕГДА, а первый (mass storage) должен "отлочить" диск только по сигналу на втором. на этот интерфейс предполагается посадить стандартный драйвер Windows usbstor.sys.


"Отлочить" и "прилочить" должен второй (управляющий) интерфейс, который должен быть доступен ВСЕГДА.
Посмотрите спецификацию DFU 1.1 - как раз так и сделано.
Go to the top of the page
 
+Quote Post
korbian
сообщение Nov 10 2009, 11:15
Сообщение #19





Группа: Участник
Сообщений: 13
Регистрация: 13-03-09
Пользователь №: 46 063



Цитата(Седой @ Nov 10 2009, 13:51) *
"Отлочить" и "прилочить" должен второй (управляющий) интерфейс, который должен быть доступен ВСЕГДА.
Посмотрите спецификацию DFU 1.1 - как раз так и сделано.

спасибо, посмотрю!

Цитата(korbian @ Nov 10 2009, 14:05) *
спасибо, посмотрю!

глянул одним глазом! smile.gif сразу возник вопрос, если придется перепрошивать устройство много раз за один сеанс работы (одно подключение к компьютеру) не исчерпаю ли я резерв по перепрошивки внутренней флеш микроконтроллера? то есть в каких пределах обычно находится этот параметр(количество перезаписей внутренней флеш)?


--------------------
© korbian
Go to the top of the page
 
+Quote Post
galjoen
сообщение Nov 10 2009, 11:58
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



korbian, а если ваше устройство как хаб описать? И уже к нему, с точки зрения ОС, подключается/отключается всё, что угодно.
Go to the top of the page
 
+Quote Post
korbian
сообщение Nov 10 2009, 12:28
Сообщение #21





Группа: Участник
Сообщений: 13
Регистрация: 13-03-09
Пользователь №: 46 063



Цитата(galjoen @ Nov 10 2009, 14:58) *
korbian, а если ваше устройство как хаб описать? И уже к нему, с точки зрения ОС, подключается/отключается всё, что угодно.

спасибо за идею, можно попробовать!


--------------------
© korbian
Go to the top of the page
 
+Quote Post
Седой
сообщение Nov 12 2009, 13:07
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата(galjoen @ Nov 10 2009, 16:58) *
korbian, а если ваше устройство как хаб описать? И уже к нему, с точки зрения ОС, подключается/отключается всё, что угодно.


В принципе возможно, только одно но ... обычный USB блок в известных мне микроконтроллерах не позволит вам это сделать - "подключать/отключать всё что угодно"


Цитата(korbian @ Nov 10 2009, 16:15) *
глянул одним глазом! smile.gif сразу возник вопрос, если придется перепрошивать устройство много раз за один сеанс работы ...

А это ещё зачем?
Go to the top of the page
 
+Quote Post
galjoen
сообщение Nov 12 2009, 13:31
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Седой @ Nov 12 2009, 16:07) *
В принципе возможно, только одно но ... обычный USB блок в известных мне микроконтроллерах не позволит вам это сделать - "подключать/отключать всё что угодно"

Да, про то, что адреса (старшие 7 бит) у хаба, и подключенных к нему девайсов, будут разные. Я об этом как-то и не подумал... А так хаб дополнительно всего одну Interrupt In EP займёт, ну и контрольный канал, конечно.
Жаль, что это невозможно. Т.о. можно много проблем решить было бы.
Да и вообще, у современных микроконтроллеров даже и младшие то 4 бита адреса у EP изменить невозможно.
Go to the top of the page
 
+Quote Post
korbian
сообщение Nov 13 2009, 09:32
Сообщение #24





Группа: Участник
Сообщений: 13
Регистрация: 13-03-09
Пользователь №: 46 063



Цитата(Седой @ Nov 12 2009, 16:07) *
А это ещё зачем?

ну как зачем. в исходном состоянии одна прошивка, после определенного события заливается другая или я что то неправильно понял?


--------------------
© korbian
Go to the top of the page
 
+Quote Post
Седой
сообщение Nov 13 2009, 12:44
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата(korbian @ Nov 13 2009, 14:32) *
ну как зачем. в исходном состоянии одна прошивка, после определенного события заливается другая или я что то неправильно понял?

Совершенно не нужно перепрограммировать контроллер для того, чтобы провести реэнумерацию с другим набором дескрипторов и логикой обработки USB пакетов.
Go to the top of the page
 
+Quote Post
korbian
сообщение Nov 13 2009, 12:53
Сообщение #26





Группа: Участник
Сообщений: 13
Регистрация: 13-03-09
Пользователь №: 46 063



Цитата(Седой @ Nov 13 2009, 15:44) *
провести реэнумерацию с другим набором дескрипторов и логикой обработки USB пакетов.

а где почитать про это?


--------------------
© korbian
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Nov 18 2009, 14:34
Сообщение #27


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

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



А поддерживается составное USB устройство, к примеру, с интерфейсом Mass Storage Device (MSD) и Communications Device Class (CDC) на уровне BIOSа??? Сможет ли BIOS распознать подобный девайс, поставить драйвер для MSD и выполнить программу с загрузочного сектора флэш памяти, которая подключена к контроллеру USB?
Go to the top of the page
 
+Quote Post
galjoen
сообщение Nov 18 2009, 18:39
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



MassStorage, в т.ч. и в составном устройстве, биос поддерживает. И загрузится с него можно. Только интерфейс MassStorage должен первым идти. Что-то у меня иначе в винде не работало.
CDC не делал. Попробовал и пришёл к выводу, что винда только если в дескрипторе DEVICE его класс прописать понимает, а в INTERFACE - нет. Т.е. составное устройство сделать невозможно. А м.б. это у меня руки кривые...
А про драйвера и биос скажу, что это две вещи несовместные. В биосе нужно через прерывания работать. Он только MassStorage, клавиатуру и мышку понимает. Причём у двух последних для этого специальный биосовский протокол должен поддерживаться. Но из своей программы, с загрузочного MassStorage в биосе запущенной, со своим же CDC, конечно, работать можно. Через прерывания биос. Там ограничений куда как меньше, чем в случае работы из под ОС будет...
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Nov 19 2009, 09:23
Сообщение #29


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

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Цитата(galjoen @ Nov 18 2009, 21:39) *
В биосе нужно через прерывания работать. Он только MassStorage, клавиатуру и мышку понимает.

Как показывает практика, BIOS поддерживает и USB хабы. Вчера пробовал подключать загрузочную флэшку с DOS'ом через хаб. На первой машине это привело к зависанию на этапе POST, а на второй прокатило. BIOS увидел флэшку и загрузился с неё biggrin.gif
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Nov 20 2009, 14:17
Сообщение #30


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

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



[attachment=38334:________...________.html]
Цитата(galjoen @ Nov 18 2009, 21:39) *
...Попробовал и пришёл к выводу, что винда только если в дескрипторе DEVICE его класс прописать понимает, а в INTERFACE - нет. Т.е. составное устройство сделать невозможно. А м.б. это у меня руки кривые...

Хочу опровергнуть заявление galjoen о невозможности создания составного устройста biggrin.gif
Сегодня попробовал сделать составное USB устройство: Mass Storage Device и CDC Ethernet Emulation Model.

Прилагаю описание дескрипторов во вложении.

А также картинку диспетчера устройств во вложении.

Сообщение отредактировал DiMonstr - Nov 20 2009, 14:20
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  Composite_USB_device.html ( 20.2 килобайт ) Кол-во скачиваний: 132
 
Go to the top of the page
 
+Quote Post

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

 


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


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