Простой стек хостов USB - PullRequest
       7

Простой стек хостов USB

8 голосов
/ 17 февраля 2009

Я пытаюсь подключиться к одному USB-устройству, используя хост-порт USB на процессоре Atmel. У меня есть встроенная система с ограниченной памятью и без ОС. Я хочу реализовать простой выделенный хост для взаимодействия с одним ведомым USB-устройством.

Кто-нибудь может подсказать мне простую реализацию USB-хоста?

Процессор Atmel AT91SAM9261S.

Ответы [ 3 ]

1 голос
/ 22 февраля 2009

Я использовал стек RTUSB-32 из On-Time. Это небольшая стопка отпечатков, которую легко интегрировать в нашу среду, и документация хорошая. Они красиво абстрагируют необходимую поддержку, так что она полностью нейтральна к платформе и ОС и имеет относительно небольшое количество хуков, которые вам нужно предоставить - т.е. она хорошо инкапсулирована.

Так как вы получаете весь исходный код, вы увидите, что код, конечно, не самый хорошо сконструированный код в мире, но он может быть расшифрован без большой работы, если это необходимо. В любом случае, это "просто работает" без проблем. Мы работали в некоторых продуктах в течение нескольких лет и столкнулись только с одной проблемой совместимости со стеком, когда автообнаружение было не совсем правильным с определенным типом концентратора USB 2.0. Мы отправили им образец хаба, и у них был патч для него в течение нескольких дней. Трудно победить это. В целом, я считаю, что это хорошая ценность, и, конечно же, лучше всего сесть, чтобы написать вещь с нуля.

1 голос
/ 18 февраля 2009

Прежде всего, если я правильно помню, AT91SAM9261S имеет USB-контроллер OHCI на плате, и вам нужно реализовать хотя бы простой драйвер хост-контроллера (вы можете взглянуть на реализацию Linux). В зависимости от типов передачи, которые будет использовать ваше устройство, это может быть не очень сложно - очень сложно :) Нет простого способа реализовать USB-стек. После реализации драйвера контроллера вам нужно будет позаботиться о перечислении usb-устройств и взглянуть на главу 9 USB spec . И только после этого вы можете приступить к реализации логики вашего устройства.

Для упрощенного варианта использования есть много кода, который можно было бы опустить, но без хорошего фона usb трудно решить, что уместно, а что нет.

В любом случае, если вы ищете коммерческое решение моя компания может предоставить его.

0 голосов
/ 18 февраля 2009

Это было бы намного проще, если бы ваше устройство не было хостом :-P, потому что Atmel предоставляет пример исходного кода для USB-устройств. На вашем месте я бы хотел использовать одну из ОСРВ, поддерживающих USB, на странице Atmel AT91SAM сторонних производителей , что может привести к появлению USB-стека от jungo, как предложил Илья.

Если вы пишете свой собственный драйвер OHCI, libusb может быть полезен в качестве реализации верхних уровней стека USB.

...