|
Лишняя задержка перед каждой USB Bulk тразакцией |
|
|
|
Oct 14 2009, 13:27
|

Участник

Группа: Свой
Сообщений: 44
Регистрация: 30-07-05
Из: Kyiv, Ukraine
Пользователь №: 7 211

|
Может кто встречался с проблемой: Есть USB full speed девайс с двумя bulk ендпоинтами (один на вход, другой на выход). Написана фирмвара, драйвера под линух и винду, все работает. Для проверки работоспособности имеется простейшая апликуха, которая пишет 30 байт (это меньше wMaxPacketSize = 32) в девайс и сразу же вичитывает оттуда. Все это в цикле до бесконечности. Но по хардварному анализатору видно, что виндовский драйвер перед каждой транзакцией делает задержки в 1 мс, т.е. булк пакет посылается (принимается) только в каждом 2-м микрофрейме, т.е. перед каждой транзакцией я в логе анализатора вижу 2 SOF. При этом линуховый драйвер работает четко - задержек нет, перед каждой транзакцией по одному SOF, а в некоторых случаях умудряется даже в одном фрейме влепить по 2 транзакции (IN, потом OUT). Девайс и к линуху и к винде подключается один и тот же. Компы с виндой и линухом - разные, но другой периферии кроме этого девайса не подключено. Испытывали на нескольких виндовых компах - все одно и тоже - видна шлет булк пакет только в каждом 2-м фрейме (не первом, не 3-м, не 4-м...). Это какая-то особенность винды? Глюк моего драйвера виндовского? Писал его на базе примера из ДДК bulkusb. Может нужны какие-то хитрые настройки Дескрипторов usb девайса, которые для линуха подходят а для винды приводят к задержкам?
|
|
|
|
|
 |
Ответов
|
Oct 20 2009, 07:27
|

Участник

Группа: Свой
Сообщений: 44
Регистрация: 30-07-05
Из: Kyiv, Ukraine
Пользователь №: 7 211

|
да, драйвер на чистом DDK, за основу взят пример bulkusb (просто добавил свой код туда). Правда компилируется не make файлом от DDK а в vs2005 как проект ( как описано тут)
|
|
|
|
|
Oct 23 2009, 16:24
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(ValeraVi @ Oct 20 2009, 13:27)  да, драйвер на чистом DDK, за основу взят пример bulkusb (просто добавил свой код туда). ... Если вы полностью повторили код, то могли заметить, что вывод в endpoint буферизован, и если количество байт данных превышает MAX transfer size , то из функции завершения вызывается запрос для отправки оставшихся данных и т.д.. Если вы из приложения вызовете Write c количеством данных больше, чем Max transfer size, то сможете посмотреть, есть ли "дыра" в передаче и каков ее размер. После этого можно будет сделать некоторые выводы.
|
|
|
|
|
Oct 23 2009, 17:11
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Я столкнулся с тем, что у HID обмен через контрольный канал может работать поразному. По описанию д.б. так: в случает посылки HID устройством NAK хосту, следующая попытка будет предпринята только в следующем кадре, т.е. через милисекунду. В реальности на некоторых мамках хабы работают не так. Они сразу же после получения NAK передачу(или приём) повторяют. Причём это явно не зависит от программы. Т.к. на ОДНОМ компьютере USB, установленные на матери, и в PCI (2 щт.) работают по разному. И возможны любые варианты. Причём замечено, что те, которые на чипсете VIA, как правило, стандарту не соответствуют. Так я это к тому, что и у вас м.б. такая ситуация. Не в программе дело, а в аппаратуре.
|
|
|
|
Сообщений в этой теме
ValeraVi Лишняя задержка перед каждой USB Bulk тразакцией Oct 14 2009, 13:27 Alex11 Давным давно мы боролись с подобным эффектом. Зави... Oct 14 2009, 19:17 GetSmart Скорее всего это опция в виндовом драйвере - отсыл... Oct 14 2009, 19:31 ValeraVi Спасибо за советы, буду что-то пробовать.
У меня с... Oct 15 2009, 11:09 Седой Драйвер для Win на чистом DDK? Oct 16 2009, 15:04 Alex11 От этого ничего не зависит. Нижним уровнем и фрейм... Oct 16 2009, 17:41 Седой Цитата(Alex11 @ Oct 16 2009, 23:41) От эт... Oct 17 2009, 09:50 misyachniy Цитата(ValeraVi @ Oct 14 2009, 15:27) Но ... Oct 26 2009, 15:13 Седой Цитата(misyachniy @ Oct 26 2009, 20:13) .... Nov 9 2009, 18:57  alex33 Если я правильно понял то одна транзакция (в интер... Feb 24 2012, 19:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|