|
Составное USB устройство на CY7C68013A? |
|
|
|
Mar 18 2009, 19:12
|
Частый гость
 
Группа: Свой
Сообщений: 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) Сможет ли пользовать работать с ЛВС и винчестером одновременно?
|
|
|
|
|
 |
Ответов
|
Mar 19 2009, 00:17
|
Знающий
   
Группа: Свой
Сообщений: 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 работать не будет.
|
|
|
|
|
Mar 19 2009, 05:43
|
Частый гость
 
Группа: Свой
Сообщений: 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?
|
|
|
|
|
Mar 21 2009, 09:55
|
Местный
  
Группа: Свой
Сообщений: 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).
|
|
|
|
|
Mar 21 2009, 17:23
|
Знающий
   
Группа: Свой
Сообщений: 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 сделать?
|
|
|
|
Сообщений в этой теме
DiMonstr Составное USB устройство на CY7C68013A? Mar 18 2009, 19:12    Седой Цитата(galjoen @ Mar 21 2009, 22:23) Inte... Mar 23 2009, 09:38     galjoen Цитата(Седой @ Mar 23 2009, 12:38) MassSt... Mar 23 2009, 12:51      Седой Цитата(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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|