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

 
 
> Как бороться с зависанием usb interrupt трансфера при помехах ?
_3m
сообщение Aug 3 2009, 14:11
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Обнаружилась очередная гадость в usb.
Имеется HID совместимое устройство (на базе Microchip USB Firmware Framework v2.4a), в направлении device->PC используется interrupt передача (EP1 IN). Также реализована передача с помощью control transfer (Get/Set Feature)
Было замечено что после остановки и последующего запуска девайса отладчиком interrupt transfer прекращается навсегда. Ткнувшись осциллографом на usb шину увидел что хост сразу после останова девайса перестает выдавать in токен. В винде никакие ошибоки не возникают.
Control transfer при этом продолжает работать в обе стороны как будто ничего не произошло.
Изучение документации показало что так и должно быть: если хост не получает никакого ответа на in токен он делает 2 повтора и прекращает обмен с данным эндпойнтом.

Иного способа возобновить нормальную работу кроме аппаратного или программного передергивания устройства я не нашел.

Объясните мне, тупому валенку как же с этим жить а то я уже в полном ахуе от usb и его реализации в винде.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
galjoen
сообщение Aug 18 2009, 10:25
Сообщение #2


Знающий
****

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



Цитата(_3m @ Aug 3 2009, 18:11) *
Обнаружилась очередная гадость в usb.
....
Объясните мне, тупому валенку как же с этим жить а то я уже в полном ахуе от usb и его реализации в винде.

1. EP будет отключена только если не ответит на маркер IN (данными или NAK) 3 раза подряд. В реальности я такого ни разу не встречал. Для этого нужно запретить данную EP в девайсе, иначе она пошлёт NAK-и автоматически.
2. С EP 0 (контрольный канал - Get/Set Feature) та-же история, но там предпринимаются меры по восстановлению связи.
3. Я стараюсь использовать HID без Interrupt In EP (вообще её не объявляю), а пользоваться только Get/Set Feature репортами. А устроиство объявить составным - HID+MassStorage, и данные слать через Bulk EP (съэкономленная EP тут как-раз пригодится). А вот драйвер MassStorage в винде очень хорош, это надо признать. В такой ситуации, как описана про HID, он предпримет множество различных попыток восстановления. Это (2 интерфейса) к тому же позволяет партизанским путём обойти ограничения в Linux...
Go to the top of the page
 
+Quote Post
galjoen
сообщение Aug 21 2009, 12:33
Сообщение #3


Знающий
****

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



Что-то странно. Сейчас вспомнил. У меня при принудительном запрете HID-овской Interrupt In EP приходил SETUP-ный пакет CLEAR_FEATURE к данной EP. По идее и в вашем случае такой пакет должен прийти, м.б. вы просто не обрабатываете такой SETUP?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:55
Рейтинг@Mail.ru


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