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

 
 
> USB HID на AVR, Создание HID Report Descriptors - шаманство от Microsoft?
osnwt
сообщение Feb 11 2006, 17:41
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664



Привет всем!

Возникло желание сделать HID-совместимое устройство на AVR с программно реализованным USB стеком. Тем более, что появилась отличная открытая и бесплатная реализация стека, написанная на C (кроме критического по времени куска - тот на асме) и документированная на предмет возможностей и ограничений. Буквально 5 дней назад вышла версия с поддержкой HID девайсов, сэкономив мне кучу времени.

В общем, примеры все работают. И свое устройство, в целом, тоже работает. Проблема лишь с написанием HID Report Descriptor для этой штуки. Это просто какое-то шаманство. Скажем, есть работающий report. В начале стоит левый LOGICAL MINIMUM (0), который не нужен, ибо перед первым же INPUT определены свои minimum и maximum. Стоит его убрать - всё, винды видят устройство с ошибкой.

Пример два: стоит в работающем дескрипторе REPORT ID (1). Всё работает. Убираю REPORT ID, уменьшаю на 1 количество байтов в возвращаемых данных (поскольку первый байт исчез), правлю длину дескриптора (так как два байта на REPORT ID тоже ушло). Компилирую, прошиваю, включаю - не работает.

Перерыл весь инет. Все ссылаются на HID Descriptor Tools с usb.org. Интерфейс там еще тот, но ладно. Проверка ошибок там бестолковая, конечно. Винды более критичны к этому. Но другого-то инструмента нет. Перечитал все доки, нигде нет конкретных указаний. В материалах с usb.org сплошные should или may.

Похоже, все изготовители софтверных USB-решений на Atmel (на другие решения я просто не смотрел) страдают точно также с этими дескрипторами, так как сплошь и рядом встречаются в коде dummy logical minimum и т.п. навороты.

Собственно, вопросы к уважаемой публике:

1) можно ли где-то посмотреть диагностику виндовского HID parser'а: что конкретно его не устраивает в предлагаемых ему дескрипторах?

2) есть ли какие-либо решения для создания дескрипторов наподобие HID Descriptor Tools, но дающие более-менее работоспособные под Windows варианты?

Не верится, что проблема кроется где-то в софтверной реализации. Ибо, сначала не мог поднять количество байтов выше 2-х в interrupt transfer. Думал, что бага в библиотеке. Но потом из рабочего кода взял другой дескриптор с 7-ю байтами - и тоже всё работает до первой правки.

В общем, мистика! Help! help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
osnwt
сообщение Feb 15 2006, 10:21
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664



Хорошая книжка, спасибо.

Вчера была пара часов времени, попробовал портировать библиотеку под IAR-овский компилятор с ассемблером (у меня всё остальное пишется в нём, а иметь несколько компайлеров неудобно). Пока не сильно преуспел. Правда, времени копать глубже не было. Добился лишь того, что она стала компилироваться, и поменял calling convention ассеблерных фрагментов (gcc и iar по разному используют регистры). Пока не заработала, но я по серьезному за нее еще не брался.

А интересно то, что один и тот же исходный текст дал под gcc 3.4.5 с оптимизацией по размеру (-Os) на 100 байтов меньший код, чем компилятор IAR 4.10 при такой же максимальной оптимизации по всем параметрам. Если учесть, что около 900 байтов из 2500 занимает ассемблерный модуль, который размер не поменяет никак, а еще довольно много занимают дескрипторы в виде таблиц, то разница в более чем 5% в пользу gcc меня очень поразила. Не так давно IAR славился своей оптимизацией кода. А сейчас наблюдаю совершенно обратную картину. Спросонья (в 3 часа ночи) даже не поверил своим глазам, буду смотреть еще.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- osnwt   USB HID на AVR   Feb 11 2006, 17:41
- - osnwt   Чтобы говорить конкретнее, вот один из примеров. Э...   Feb 11 2006, 18:30
- - osnwt   Цитата(osnwt @ Feb 11 2006, 19:41) Не вер...   Feb 12 2006, 16:18
- - GDI   А можно ссылочку на эту библиотеку?   Feb 14 2006, 10:25
- - osnwt   Я всё ждал, когда кто-нибудь спросит Можно, кон...   Feb 14 2006, 11:22
- - GDI   Спасибо.   Feb 14 2006, 11:30
- - unichorn   Да вот здесь лежит интересная книга "Интерфей...   Feb 15 2006, 08:16
- - grave   Кто-то уже реализовал USB HID Keypad на меге? Было...   Feb 23 2006, 09:10
|- - osnwt   Цитата(grave @ Feb 23 2006, 11:10) Кто-то...   Feb 24 2006, 07:27
- - d71   ! а как я раньше туму не увидел, именно интере...   Feb 27 2006, 05:10
|- - lazycamel   Цитата(d71 @ Feb 27 2006, 09:10) ! а ...   Feb 27 2006, 05:52
|- - osnwt   Цитата(d71 @ Feb 27 2006, 07:10) именно и...   Feb 27 2006, 15:11
- - d71   насколько я знаю 4 оси это только плоскости, навер...   Feb 27 2006, 07:08
- - Roy   Цитата(unichorn @ Feb 15 2006, 11:16) Да ...   Feb 28 2006, 09:48
|- - osnwt   Обращаю внимание на то, что в проектах с указанным...   Feb 28 2006, 10:02
- - Roy   Все равно не нашел. Как хоть книжка называется - п...   Feb 28 2006, 10:50
|- - osnwt   Цитата(Roy @ Feb 28 2006, 12:50) Все равн...   Feb 28 2006, 11:04
- - lazycamel   Вперся в непонятный глюк. Сделал фьючерепорты, сд...   Mar 6 2006, 22:09
- - osnwt   Цитата(lazycamel @ Mar 7 2006, 00:09) Впе...   Mar 7 2006, 12:15
- - lazycamel   Цитата(osnwt @ Mar 7 2006, 16:15) Цитата(...   Mar 7 2006, 21:35
- - osnwt   Цитата(lazycamel @ Mar 7 2006, 23:35) Сло...   Mar 7 2006, 21:45


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:15
Рейтинг@Mail.ru


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