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

 
 
> Составное USB устройство на CY7C68013A?
DiMonstr
сообщение Mar 18 2009, 19:12
Сообщение #1


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

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



Мужики, Кто-нибудь разрабатывал USB девайс, который бы в винде определялся как два устройства? Не важно на контроллере какой фирмы.
К примеру, мне необходимо реализовать в рамках одного устройства USB сетевой адаптер и USB винтчестер.
Драйвера предполагается использовать стандартные, виндузовские - это драйвер для работы с устройствами класса USB Mass Storage Device и CDC для Ethernet Control Devices. Соответственно эти два класса мне нужно реализовать в CY7C68013A.
Данный периферийный контроллер будет работать в режиме slave fifo и будет управляться ПЛИСиной Xilinx. Xilinx должен будет забирать пакеты из FIFO, определить сетевой это пакет или SCSI команда и передать в зависимости от этого в функциональный узел работы с винтом, либо с сетью.
Возникли такие вопросы:
1) Какая будет структура дескрипторов? Я предполагаю, что будет два дескриптора конфигурации, в каждом из которых будет описан свой интерфейс. Либо одна конфигурация, но два интерфейса. Как правильно?
2) Как винда, будет распределять передачу пакетов для винчестера и ЛВС?
3) Как обрабатывать переключаться между функциями обработки пакетов USB Mass Storage Device и CDC Ethernet Emulation Model?
4) Сможет ли пользовать работать с ЛВС и винчестером одновременно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
galjoen
сообщение Mar 19 2009, 00:17
Сообщение #2


Знающий
****

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



Цитата(DiMonstr @ Mar 18 2009, 22:12) *
Мужики, Кто-нибудь разрабатывал USB девайс, который бы в винде определялся как два устройства? Не важно на контроллере какой фирмы.
...

Я такое неоднократно делал. Конфигурация одна д.б., а интерфейсов два или больше. Там у каждого интерфейса свои EP. А в SETUP пакетах есть специальное поле, в котором N интерфейса указывается, к которому этот пакет относится. Всё это решается. НО. Раньше CDC класс виндой определялся только по полю bDeviceClass в дескрипторе DEVICE. А он один на весь девайс. А при попытке CDC класс задать в дескрипторе INTERFACE у меня что-то ничего не работало. Хотя м.б. это у меня руки кривые. Или м.б. сейчас уже и работает - ошибку в винде исправили. Не знаю - мне с тех пор не надо было.
Единственно у них там ещё один глюк был. Дескриптор интерфейса у MassStorage должен первым идти и bInterfaceNumber у него соответственно д.б. =0. Иначе MS работать не будет.
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Mar 19 2009, 05:43
Сообщение #3


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

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



Цитата(galjoen @ Mar 19 2009, 03:17) *
Я такое неоднократно делал...


Хорошо, спасибо galjoen.
А для каких целей тогда применяется несколько конфигураций в устройстве?
Вот Вы говорите у каждого интерфейса своя EP. А как же быть, если контроллер имеет 2-е IN EP и 2-е OUT EP, а мне нужно организовать 3 интерфейса. Получается не хватит мне EP.
Можно ли организовать структуру устройства следующим образом?

1) дескриптор конфигурации-1
дескриптор интерфейса-1
дескриптор EP-1 для интерфейса-1
дескриптор EP-2 для интерфейса-1

2) дескриптор конфигурации-2
дескриптор интерфейса-1
дескриптор EP-1 для интерфейса-1
дескриптор EP-2 для интерфейса-1

Т.е. во всех конфигурациях использовать одни и те же EP?
Go to the top of the page
 
+Quote Post
Седой
сообщение Mar 21 2009, 09:55
Сообщение #4


Местный
***

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



Цитата(DiMonstr @ Mar 19 2009, 10:43) *
Хорошо, спасибо galjoen.
А для каких целей тогда применяется несколько конфигураций в устройстве?
Вот Вы говорите у каждого интерфейса своя EP. А как же быть, если контроллер имеет 2-е IN EP и 2-е OUT EP, а мне нужно организовать 3 интерфейса. Получается не хватит мне EP.


Более одной конфигурации Windows поддерживает начиная c Vista. Естественно, может быть активна только одна конфигурация.

Если не хватает EP, используйте EP0 (Control Endpoint).
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 21 2009, 17:23
Сообщение #5


Знающий
****

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



Цитата(Седой @ Mar 21 2009, 12:55) *
Более одной конфигурации Windows поддерживает начиная c Vista. Естественно, может быть активна только одна конфигурация.

Мне просто любопытно, а что будет в этом (bNumConfigurations>1) случае? Окошко с вопросом "какую конф-ию выбрать" откроется? Сам бы попробовал, да что-то нигде Висты поблизости нет. Простите за офтоп.
Цитата(Седой @ Mar 21 2009, 12:55) *
Если не хватает EP, используйте EP0 (Control Endpoint).

Interrupt In передачи, конечно, переносятся на EP0. А разве bulk передачи будут на EP0 переносится? И что, в таком случае можно LowSpeed MassStorage сделать?
Go to the top of the page
 
+Quote Post
Седой
сообщение Mar 23 2009, 09:38
Сообщение #6


Местный
***

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



Цитата(galjoen @ Mar 21 2009, 22:23) *
Interrupt In передачи, конечно, переносятся на EP0. А разве bulk передачи будут на EP0 переносится? И что, в таком случае можно LowSpeed MassStorage сделать?


MassStorage можно сделать и на одном EP0 и вообще по любому интерфейсу, драйвер только написать надо.


Я имел ввиду следующее - если необходимо сделать именно составное устройство, а доступных endpoints не хватает, то можно использовать control endpoint. EP0 доступна всегда, а как вы организуете обмен данными, зависит от вашей фантазии.

Но фразу о переносе Interrupt In на EP0 не понял - это как?
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 23 2009, 12:51
Сообщение #7


Знающий
****

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



Цитата(Седой @ Mar 23 2009, 12:38) *
MassStorage можно сделать и на одном EP0 и вообще по любому интерфейсу, драйвер только написать надо.


Я имел ввиду следующее - если необходимо сделать именно составное устройство, а доступных endpoints не хватает, то можно использовать control endpoint. EP0 доступна всегда, а как вы организуете обмен данными, зависит от вашей фантазии.

С драйвером это понятно. Но тогда и составное устройство не нужно.
Цитата(Седой @ Mar 23 2009, 12:38) *
Но фразу о переносе Interrupt In на EP0 не понял - это как?

Если у HID девайса нет InterruptIn(Out) EP, а в HID-дескрипторе описаны такие репорты, то в EP0 начнут приходить специальные SETUP-пакеты с запросами тех данных. Т.е. драйвет будет запрашивать(передавать) данные InterruptIn(Out) через EP0. По крайней мере я с таким столкнулся. А прочитав ваш пост, я подумал, что это стандарт такой. Т.е. я подумал, что это не HID драйвер так делает, а где-то выше. И при недостатке EP всегда так будет. Только я об этом не знал... Вобщем не понял я вас.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DiMonstr   Составное USB устройство на CY7C68013A?   Mar 18 2009, 19:12
||- - Седой   Цитата(galjoen @ Mar 23 2009, 17:51) С др...   Mar 23 2009, 16:40
|- - SFx   Цитата(galjoen @ Mar 19 2009, 04:17) Я та...   May 12 2009, 08:22
|- - galjoen   Цитата(SFx @ May 12 2009, 12:22) Поясните...   May 12 2009, 08:53
|- - SFx   Цитата(galjoen @ May 12 2009, 12:53) Выло...   May 12 2009, 09:25
|- - galjoen   Цитата(SFx @ May 12 2009, 13:25) Да винда...   May 12 2009, 10:45
|- - SFx   Цитата(galjoen @ May 12 2009, 14:45) Сам ...   May 12 2009, 10:48
- - arizona   Цитата(DiMonstr @ Mar 18 2009, 22:12) Муж...   Mar 23 2009, 15:59
- - SFx   вообщем, как выяснилось, оригинальный CyUSB.sys ра...   May 14 2009, 11:50
- - galjoen   Цитата(SFx @ May 14 2009, 15:50) вообщем,...   May 14 2009, 12:21
- - SFx   Цитата(galjoen @ May 14 2009, 16:21) Есть...   May 14 2009, 12:27
- - galjoen   Цитата(SFx @ May 14 2009, 16:27) HID и Ma...   May 14 2009, 12:47
- - SFx   Цитата(galjoen @ May 14 2009, 16:47) А пр...   May 14 2009, 13:08


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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 14:26
Рейтинг@Mail.ru


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