Более быстрый USB HID выход - PullRequest
       26

Более быстрый USB HID выход

1 голос
/ 08 января 2012

Я пытаюсь ускорить довольно вялый загрузчик. В настоящее время я отправляю данные на одну конечную точку выхода USB HID, и, поскольку это низкоскоростное устройство, я, по-видимому, ограничен одним 8-байтовым пакетом на интервал 10 мс для колоссальных 800 байтов в секунду.

Можно ли как-то увеличить частоту отчетности? Или использовать несколько выходных конечных точек в одном интерфейсе или как часть составного устройства? Или, возможно, злоупотреблять контрольной точкой для отправки дополнительных данных?

Лучшее сжатие - это всегда альтернатива, я полагаю, но это область уменьшения отдачи, и перепроектирование аппаратного обеспечения для обеспечения полноскоростного USB на самом деле не вариант.

Для справки, я был бы доволен решением только для Windows.

Ответы [ 4 ]

2 голосов
/ 12 января 2012

Или, возможно, злоупотребить конечной точкой управления для отправки дополнительных данных?

Для этого вы можете использовать «Определенные запросы поставщиков». Чип TI TUSB3410 работает таким образом, AFAIK. Многие USB-стеки уже имеют фиксаторы.

Однако для этого требуется драйвер или libusb на стороне хоста.

1 голос
/ 08 января 2012

Кто сказал, что вы ограничены 8-байтовым пакетом на 10 мс?Я не знаю точных цифр в голове, но я знаю, что вы можете отправлять большие пакеты, чем это.Я сделал HID-устройство и использовал 64-байтовые пакеты.Я думаю, что я мог бы пойти больше, но этот предел, вероятно, зависит от оборудования.Какое оборудование вы используете?

Кроме того, вы проконсультировались с USB в NutShell ?

0 голосов
/ 12 ноября 2012

Мне удалось ускорить загрузку на порядки, используя запросы SET_REPORT на контрольной конечной точке вместо объявления отдельной конечной точки прерывания.Таким образом, вы получаете всю пропускную способность, доступную для передачи управления.

Кроме того, использование более крупного отчета, разбитого на несколько сегментов, помогло уменьшить количество необходимых пакетов SETUP.

0 голосов
/ 27 августа 2012

Фактический предел составляет 8 байтов каждые 10 мс для низкоскоростных устройств и 64 байта каждые 1 мс для высокоскоростных устройств на конечную точку на основе прерываний.

Итак, первое, что нужно попробовать, - это переключиться в высокоскоростной режим, если аппаратное обеспечение его поддерживает. Следующая вещь в списке - использование нескольких конечных точек. Если вы действительно хотите получить максимально возможную скорость передачи данных, класс HID - плохой выбор.

...