2009-02-17 21 views
7

Estoy intentando conectarme a un único dispositivo USB utilizando el puerto de host USB en un procesador Atmel. Tengo un sistema integrado con memoria limitada y sin sistema operativo. Quiero implementar un host dedicado simple para interactuar con un único dispositivo esclavo USB.Pila de host USB simple

Puede alguien me guía a una simple aplicación host USB?

El procesador es el Atmel AT91SAM9261S.

Respuesta

1

En primer lugar, si recuerdo correctamente AT91SAM9261S tiene OHCI usb controller a bordo y necesita implementar al menos controlador de controlador de host simple (puede echar un vistazo a la implementación de Linux). Dependiendo de los tipos de transferencia que use su dispositivo, puede que no sea muy difícil - muy difícil :) No hay una forma trivial de implementar la pila de usb. Después de implementar un controlador de controlador, tendrá que tener cuidado con la parte de enumeración del dispositivo USB eche un vistazo al Capítulo 9 de USB spec. Y solo después de esto puede comenzar a implementar la lógica de su dispositivo.

Para casos de uso simplificado hay una gran cantidad de código que podría ser omitido, pero sin buen fondo USB es difícil decidir qué es relevante y qué no lo es.

De cualquier manera, si usted está buscando solución comercial my company puede proporcionar una.

0

Esto sería mucho más fácil si el dispositivo no tiene por qué ser un :-P anfitrión, porque Atmel ofrece ejemplo de código fuente para los dispositivos USB. Si yo fuera tú, consideraría utilizar uno de los RTOS amantes de USB en la página Atmel's AT91SAM third party que podría implicar la pila USB de jungo, como lo sugirió Ilya.

Si escribe su propio controlador OHCI, libusb podría ser útil como una implementación de las capas superiores de la pila USB.

1

He usado la pila de RTUSB-32 a tiempo. Se trata de una pequeña pila de huellas y fue fácil de integrar en nuestro entorno y la documentación es buena. Extraen muy bien el soporte necesario para que sea completamente plataforma y sistema operativo neutro y tiene un número relativamente pequeño de ganchos que debe proporcionarle, es decir: está bien encapsulado.

Como obtiene toda la fuente, verá que el código no es el mejor construido en el mundo, sin duda, pero se puede descifrar sin mucho trabajo si es necesario. En cualquier caso, básicamente "simplemente funciona" sin problema. Hemos estado funcionando en algunos productos durante algunos años y solo hemos tenido un problema de compatibilidad con la pila donde no estaba haciendo bastante bien el autodescubrimiento con cierto tipo de hub USB 2.0. Les enviamos una muestra del centro y tenían un parche dentro de unos días. Difícil de superar eso. En general, considero que es un buen valor y sin duda es mejor que sentarse a escribir la cosa desde cero.

Cuestiones relacionadas