pil123456789 0 19 июля, 2011 Опубликовано 19 июля, 2011 (изменено) · Жалоба Собственно на LPC1343 реализованно composite device. Все получается, но! нехватает конечных точек. Вычитал, что можно как то подцепиться к 0й endpoint. Как? Подскажите где копать, пожалуйста. Дальше вопрос, сможет ли в таком случае соответствующий интерфейс стать стандартным (kbd, mouse) ? Конкретезирую. У меня composite: mouse+kbd+Virtual COM. mouse 1 endpoint interrupt in kbd 1 endpoint interrupt in Virt COM 3: 1 in interrupt + 1 in bulk + 1 out bulk тем временем в контроллере: 0 0 Control Out 64 No 0 1 Control In 64 No 1 2 Interrupt/Bulk Out 64 No 1 3 Interrupt/Bulk In 64 No 2 4 Interrupt/Bulk Out 64 No 2 5 Interrupt/Bulk In 64 No 3 6 Interrupt/Bulk Out 64 Yes 3 7 Interrupt/Bulk In 64 Yes 4 8 Isochronous Out 512 Yes 4 9 Isochronous In 512 Yes Проблема в том что 4ая endpoint Isochronous и её никуда не подсунишь. А влезть как то нужно. КАК? Увидел что вроди как CDC можно и через Isochronous делать. Пока ковыряю в эту сторону Изменено 19 июля, 2011 пользователем pil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба ... Virt COM 3: 1 in interrupt + 1 in bulk + 1 out bulk ... Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Переходник USB2.0 - RS232 (COM) VE024 имеет именно такую конфигурацию эндпоинтов. И работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Вычитал, что можно как то подцепиться к 0й endpoint. Как? HID устройства могут не иметь EP кроме 0-й. Я так делал, всё отлично работает. Но я использовал только запросы GET/SET Report. Но интеррупт канал, по идее, должен работать через EP0. Для этого всё предусмотрено. Там просто будет запрос от интерфейса с соотв-м номером. Просто нужно на него ответить и всё. Проверить легко - не описывать HID-овские EP и посмотреть запросы сниффером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pil123456789 0 19 июля, 2011 Опубликовано 19 июля, 2011 (изменено) · Жалоба Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Переходник USB2.0 - RS232 (COM) VE024 имеет именно такую конфигурацию эндпоинтов. И работает. а можно дескриптор? HID устройства могут не иметь EP кроме 0-й. Я так делал, всё отлично работает. Но я использовал только запросы GET/SET Feature. Но интеррупт канал, по идее, должен работать через EP0. Для этого всё предусмотрено. Там просто будет запрос от интерфейса с соотв-м номером. Просто нужно на него ответить и всё. Проверить легко - не описывать HID-овские EP и посмотреть запросы сниффером. Пока запасной вариант, попробую. Изменено 19 июля, 2011 пользователем pil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Видимо то же самое - InterruptIn переносится на 0-ю EP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба а можно дескриптор? Вот что выдает UVCView.x86.exe ---===>Device Information<===--- English product name: "usb serial conveter" ConnectionStatus: Current Config Value: 0x01 -> Device Bus Speed: Full Device Address: 0x01 Open Pipes: 2 ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1 bmAttributes: 0x02 -> Bulk Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x00 ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x02 -> Direction: OUT - EndpointID: 2 bmAttributes: 0x02 -> Bulk Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x00 ===>Device Descriptor<=== bLength: 0x12 bDescriptorType: 0x01 bcdUSB: 0x0200 bDeviceClass: 0x00 -> This is an Interface Class Defined Device bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x08 = (8) Bytes idVendor: 0x0403 = Future Technology Devices International Limited idProduct: 0x6001 bcdDevice: 0x0400 iManufacturer: 0x01 English (United States) "ftdi" iProduct: 0x02 English (United States) "usb serial conveter" iSerialNumber: 0x03 English (United States) "ftQPMA5P" bNumConfigurations: 0x01 ===>Configuration Descriptor<=== bLength: 0x09 bDescriptorType: 0x02 wTotalLength: 0x0020 -> Validated bNumInterfaces: 0x01 bConfigurationValue: 0x01 iConfiguration: 0x00 bmAttributes: 0xA0 -> Bus Powered MaxPower: 0x16 = 44 mA ===>Interface Descriptor<=== bLength: 0x09 bDescriptorType: 0x04 bInterfaceNumber: 0x00 bAlternateSetting: 0x00 bNumEndpoints: 0x02 bInterfaceClass: 0xFF -> Vendor Specific Device bInterfaceSubClass: 0xFF *!*CAUTION: This appears to be an invalid bInterfaceSubClass bInterfaceProtocol: 0xFF *!*WARNING: must be set to PC_PROTOCOL_UNDEFINED 0 for this class iInterface: 0x02 English (United States) "usb serial conveter" *!*ERROR: 0xFF is the prerelease USB Video Class ID ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1 bmAttributes: 0x02 -> Bulk Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x00 ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x02 -> Direction: OUT - EndpointID: 2 bmAttributes: 0x02 -> Bulk Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x00 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Можно хоть все интерфейсы на одни и те же конечные точки посадить. Но... Если захотите одновременно пользоваться этими интерфейсами (читай, разными драйверами), будут проблемы. Как и в устройстве. Вы не сможете различить кто вам информацию посылал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба idVendor: 0x0403 = Future Technology Devices International Limited idProduct: 0x6001 Так это значит драйвер по VID/PID установится. Там что угодно может быть. Кстати, а ведь насколько я помню, класс CDC должен быть в дескрипторе устройства прописан. Из дескриптора интерфейса драйвер не установится. Т.е. составного устройства, включающего в себя CDC, быть не может. Т.е. может, конечно, но только со своим драйвером, а значит покупка VID. Можно хоть все интерфейсы на одни и те же конечные точки посадить. Но... Если захотите одновременно пользоваться этими интерфейсами (читай, разными драйверами), будут проблемы. Как и в устройстве. Вы не сможете различить кто вам информацию посылал. То, что идёт через EP0 можно отличить. Там в запросе N интерфейса присутствует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Кстати, а ведь насколько я помню, класс CDC должен быть в дескрипторе устройства прописан. Из дескриптора интерфейса драйвер не установится. Т.е. составного устройства, включающего в себя CDC, быть не может. Т.е. может, конечно, но только со своим драйвером, а значит покупка VID. Все там ставится. Прописываете в *.inf к какому интерфесу относится драйвер и все путем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pil123456789 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Все там ставится. Прописываете в *.inf к какому интерфесу относится драйвер и все путем. vid pid не нулевые, про это речь была. Проблема только при массовом выпуске. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Все там ставится. Прописываете в *.inf к какому интерфесу относится драйвер и все путем. Да, с записью в *.inf можно, я и забыл про такую возможность. Но тогда в режиме Plug and Play работать невозможно будет, а у нас это обязательным условием было. К тому же опять проблема с тем, что VID должен быть не равен 0. Кстати, а почему клавиатура и мышь разными устройствами? Насколько я помню, там их можно в один HID объединить. Только усаги у него соответствующие написать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба vid pid не нулевые, про это речь была. Проблема только при массовом выпуске. При массовом выпуске платишь около 400 евро и получаешь официальные vid и pid (не путать с правом посадить usb label. это на порядок дороже). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 20 июля, 2011 Опубликовано 20 июля, 2011 · Жалоба При массовом выпуске платишь около 400 евро и получаешь официальные vid и pid (не путать с правом посадить usb label. это на порядок дороже). Кто-нибудь у нас VID уже за такие деньги получил? Или это про перепродавцов, которые покупают VID и продают PIDы в розницу, речь? Так это чистый развод, т.к. ничего официального в этом нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pil123456789 0 22 июля, 2011 Опубликовано 22 июля, 2011 (изменено) · Жалоба Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Переходник USB2.0 - RS232 (COM) VE024 имеет именно такую конфигурацию эндпоинтов. И работает. Вообщем использовал самый простой вариант, т.е. Virt COM = 1 in bulk + 1 out bulk. Причем InterruptIn не убрал из описания, а просто посадил на несуществующую конечную точку. Все пашет ОК. Всем спасибо, хоть дискусия ушла к vid|pid=) Изменено 22 июля, 2011 пользователем pil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба Вообщем использовал самый простой вариант, т.е. Virt COM = 1 in bulk + 1 out bulk. Причем InterruptIn не убрал из описания, а просто посадил на несуществующую конечную точку. Все пашет ОК. Всем спасибо, хоть дискусия ушла к vid|pid=) Все это и будет работать, если вы не собираетесь хосту сообщать о состоянии своих сигналов DTR/CTS и параметрах baud, parity и пр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться