Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Linux: время конфигурации usb-устройства
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Dimentius
соединение: хост - хаб1 - хаб2 - 4устройства

хаб1 - встроенный хаб хоста
хаб2 - FSM-хаб на 4 порта TI TUSB2046B, без внешней настройки
устройство - плата с Atmel SAM7X на борту, HID-dev. Int-IN+Int-OUT EPs

Устройства имеют собственный источник питания, что указано в дескрипторе конфигурации в полях "Attributes"(0x40) и "MaxPower"(0x00). Каждое устройство инициализируется по 5сек, что достаточно некомфортно. Создается впечатление, что имеет место быть искуственный таймаут.

Вопрос: в чем может быть проблема столь долгой конфигурации и где можно подправить?
aaarrr
Цитата(Dimentius @ Jun 30 2008, 14:24) *
Вопрос: в чем может быть проблема столь долгой конфигурации и где можно подправить?

А за процессом энумерации со стороны устройства проследить не пробовали? Должно стать понятно, куда копать.
Dimentius
Цитата(aaarrr @ Jun 30 2008, 17:29) *
А за процессом энумерации со стороны устройства проследить не пробовали? Должно стать понятно, куда копать.

Пробовал, сократил время с 15 сек. до 5 сек. wink.gif
aaarrr
Неужели ничего подозрительного не осталось? Проблема только под Linux'ом наблюдается?
Dimentius
Цитата(aaarrr @ Jun 30 2008, 17:54) *
Неужели ничего подозрительного не осталось? Проблема только под Linux'ом наблюдается?

Продолжаю "ковырятся", но что самое интересное, под виндой не было ни 5, ни 15ти сек.
Harbour
для usb-storage есть искусственный timeout, сделан для комфортного старта usb-винтов, какой класс устройства ?
Dimentius
Цитата(Harbour @ Jul 1 2008, 12:10) *
для usb-storage есть искусственный timeout, сделан для комфортного старта usb-винтов, какой класс устройства ?

в том то и дело, что HID-устройство(я в описании указал: HID-dev. Int-IN+Int-OUT EPs)
Harbour
sorry, как всегда знака 40 не заметил wink.gif проверить просто - можно воткнуть любую usb мышку - у меня на ноуте старт меньше секунды. если глянуть в linux/drivers/hid/usbhid/hid-core.c то видно что retry_delay используется при логических ошибках в обмене. по идее можно какую-то отладку вставить
Dimentius
Долго не занимался данным вопросом, сейчас нашлось время повозиться еще:
1) hid-core не используется, написан свой драйвер
2) Проблема не при подключении драйвера, а при опросе устройства по Ep0, конкретно при получении StringDescriptor и такое впечатление, что при кратности длины дескриптора 8ми байтам.
amw
Цитата(Dimentius @ Jul 8 2008, 07:58) *
Долго не занимался данным вопросом, сейчас нашлось время повозиться еще:
1) hid-core не используется, написан свой драйвер
2) Проблема не при подключении драйвера, а при опросе устройства по Ep0, конкретно при получении StringDescriptor и такое впечатление, что при кратности длины дескриптора 8ми байтам.

Если у SAM7X USB похож на SAM7S, то возможно Вы не пишете пакет нулевой длины в конце если размер дескриптора кратен размеру конечной точки.
Dimentius
Цитата(amw @ Jul 8 2008, 17:39) *
Если у SAM7X USB похож на SAM7S, то возможно Вы не пишете пакет нулевой длины в конце если размер дескриптора кратен размеру конечной точки.

"Шъерт побъери!" (с)
Меня подобная мысль посещала, а вы ее только подтвердили. Я наивно полагал, что контроллер это делает автоматически по "completed". Видать где-то пропустил.

Спасибо за подсказку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.