loginser 0 14 июня, 2011 Опубликовано 14 июня, 2011 · Жалоба Имеется USB 2.0 устройство на CY7C68013a с собственным драйвером. Работает с USB 2.0 хостом прекрасно, но с контроллером USB 3.0 (NEC) работать корректно отказывается, суть в следующем: устройство настроено на один конфигурационный дескриптор (Configuration Descriptor), один интерфейс и 4 Alternate Settings. При задании Alternate Settings #0 и #1 все проходит нормально(устройство подключено через анализатор USB), но при #2 и #3 драйвер возвращиется с ошибкой 0x57(ERROR_INVALID_PARAMETER). Ограничения на количество Alternate Settings в документации к USB 3.0 и 2.0 я не нашел. Это баг нового 3.0 стека или все же есть ограничения? Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-Al- 0 20 июня, 2011 Опубликовано 20 июня, 2011 · Жалоба Странно это. USB3.0 это физически другой интерфейс (дополнительно две пары контактов). И пока их нет работать все должно по старому. Может все-таки в драйвере проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loginser 0 22 июня, 2011 Опубликовано 22 июня, 2011 · Жалоба Проблему я нашел. Я использую BULK пакеты размером 1024 и на USB 2.0(всех) контроллерах мое устройство работает отлично, но похоже что драйвер контроллера USB 3.0 жестко проверяет это условие и возврашиет ERROR_INVALID_PARAMETER. Как решить подобную проблему я незнаю к сожалению. -Al- спасибо за ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyS 0 22 июня, 2011 Опубликовано 22 июня, 2011 · Жалоба Проблему я нашел. Я использую BULK пакеты размером 1024 и на USB 2.0(всех) контроллерах мое устройство работает отлично, но похоже что драйвер контроллера USB 3.0 жестко проверяет это условие и возврашиет ERROR_INVALID_PARAMETER. Как решить подобную проблему я незнаю к сожалению. -Al- спасибо за ответ. Добрый день. Видимо все это проверялось под ОС Винда. Очень хотелось бы услышать результаты таких исследований под любой другой ОС. У меня есть подозрение что это шалит драйвер usbd.sys под виндой. Потому как обнаружили в своей системе следующую проблему. При некоторых обстоятельствах (одно из них, 100% приводящее к этой проблеме, это огромная помеха по шине USB соответственно ведущая к потери пакетов) происходит как бы зависание USB устройства в операционной системе (физически же само исполнительное устройство device продолжает нормальное функционирование, подвисает USB шина). Это подвисание может быть кратковременным, а может быть длительным. В таком случае спасает reset_port с abort_pipe. Но вот в этот момент подвисания любой запрос к драйверу usbd.sys (посредством драйвера ezusb.sys) не приводит в появлению данных на самой шине. Производили сканирование аппаратным анализатором и обнаружили эту проблему. На шине кроме SOF пакетов ничего больше нет. А в диспетчере устройств оно доступно. Происходит это редко (при длительной эксплуатации USB шины в течении нескольких суток), но может залипнуть так, что спасает только перезагрузка. Причем вылезла эта проблема в лабораторных условиях, т.е. помех по USB шине небыло, сканер их не показал. Рысканье по инету привело к тому что в разных виндах требования на максимальный объем запрашиваемой информации в драйвере usbd.sys разный. В нашем случае мы удовлетворяем этому требованию под винду ХП, 2000 и 7 с вистой. Но само это наводит на мысль возможных глюках в работе usbd.sys под виндой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loginser 0 8 июля, 2011 Опубликовано 8 июля, 2011 (изменено) · Жалоба AndreyS Microsoft резко заявили, что они тут не причем и чтобы я обращался к производителю контроллера(так как они пишут свои дрова и проблема якобы на их стороне). По вашей проблеме ничего сказать не могу, так как изначально я написал свой драйвер и подобных проблем ни на одной ОС пока к счастью не наблюдалось, устройство работает сутками безперебойно (45 МБ в секунду загрузка). Может обратить внимание на Управление питанием в ОС и обработку состояний устройства? Я в своем устройстве вообще запретил STANDBY состояние. Изменено 8 июля, 2011 пользователем loginser Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
leva87 0 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Проблема решается очень легко, по спецификации в BULK максимальный размер пакета 512 байт, почему-то USb 2.0 хосты этот параметр проглатывают и не пищат об ошибке. Однако хост USB 3.0 более строг к параметрам и такое не пропускает. Вам достаточно изменить размер пакета на 512 байт во всех BULK endpoints Однако еще обнаружил, что при работе через порт USB 3.0 у меня упала пропускная способность, приблизительно на 10-15%. С чем это связано понять пока не смог. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loginser 0 6 октября, 2011 Опубликовано 6 октября, 2011 · Жалоба leva87 Как раз уменьшение размера пакета невозможно, так как у нас не будет обратной совместимости с устройствами и софтвером что мы уже продали. Да и 1024 было введено как раз для скорости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladisslav 0 14 апреля, 2012 Опубликовано 14 апреля, 2012 · Жалоба Видимо все это проверялось под ОС Винда. Очень хотелось бы услышать результаты таких исследований под любой другой ОС. Проверил под linux (Linux lucid 3.0.0-19-generic-pae #32~lucid1-Ubuntu SMP Mon Apr 9 18:03:59 UTC 2012 i686 GNU/Linux) Кроме косяка с буфером (я пытался послать 2048 URB за один вызов) и ругани на bInterval==0 в дескрипторе (поставил 1, так странно округлялось до 32768 и тормозило) никаких проблем не обнаружено. Linux ругается на hi-speed устройство с размером bulk endpoint 1024, подключенное к super speed контроллеру так же как и при подключении к hi-speed контроллеру: [ 1959.091020] usb 3-1: new high speed USB device number 12 using xhci_hcd [ 1959.107170] usb 3-1: config 1 interface 0 altsetting 0 bulk endpoint 0x2 has invalid maxpacket 1024 [ 1959.107176] usb 3-1: config 1 interface 0 altsetting 0 bulk endpoint 0x86 has invalid maxpacket 1024 ..... [ 2058.739558] usb 1-1.1.3: new high speed USB device number 10 using ehci_hcd [ 2058.831708] usb 1-1.1.3: config 1 interface 0 altsetting 0 bulk endpoint 0x2 has invalid maxpacket 1024 [ 2058.831713] usb 1-1.1.3: config 1 interface 0 altsetting 0 bulk endpoint 0x86 has invalid maxpacket 1024 Скорость при подключении к hi-speed и увеличении размера bulk endpoint с 512 до 1024 растет с 42.05 Мб/с до 45.99 Мб/с. При подключении к super speed и увеличении размера bulk endpoint с 512 до 1024 скорость увеличивается меньше с 42.52 Мб/с до 44.23 Мб/с. Подключение к hi-speed контроллеру через китайский хаб и длинный удлинитель. Подключение к super speed контроллеру через длинный удлинитель (3 метра). Super speed контроллер ASmedia, VID:PID 1b21:1042. Hi-speed контроллер интегрированный в чипсет Intel Corporation Cougar Point USB Enhanced Host Controller (rev 05). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Bekrenyov 0 21 апреля, 2012 Опубликовано 21 апреля, 2012 · Жалоба Я только начинаю работать с USB3 ... А разве проблематично анализировать какое подключение USB2 или USB3 и соответственно менять размер пакета? Скорость скоростью, но работоспособность дороже. Можно конечно как в GigE Vision рекомендовать ставить только Intel Pro ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loginser 0 23 апреля, 2012 Опубликовано 23 апреля, 2012 · Жалоба К сожалению для некоторых устройств как раз важна скорость. В нашем случае еще каждый пакет несет заголовки к данным, что увеличивает оверхэд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться