2010-11-22 16 views
22

Quiero programar un microcontrolador (AVR) para controlar algunos leds a través de USB. Es solo por interés en cómo construir y programar dispositivos USB. Hay algunos microcontroladores AVR que admiten el protocolo USB o podría implementar el protocolo USB en otro microcontrolador, pero me pregunto qué usar para escribir sus propios controladores en la computadora.Programación USB

Mi nivel de la programación del sistema: total de novato (de ahí la pregunta)

Entonces, ¿qué es la literatura que la gente volvería a consejos para obtener un buen conocimiento de la tecnología USB y cómo escribir sus propios controladores y más allá?

PS: Yo sé:

  • C (probablemente va a necesitar aquí)

  • Java (probablemente no será necesario aquí)

  • Python (esperanza puede usarlo aquí)

  • ensamblador (con suerte no lo necesitará aquí XD).

  • ...

P.P.S: el desarrollo de controladores es diferente para los diferentes sistemas operativos. Utilizo Linux y Windows, por lo que cualquier material relacionado con uno o ambos sistemas es bienvenido.

Respuesta

0

El área de documentación de Microsoft del WDK (Windows Development Kit) está disponible recientemente en MSDN. Hay una sección en USB, aunque sería mejor leer primero las secciones anteriores, en particular las áreas de "Inicio". Suponen que utilizará C como el lenguaje de programación para el desarrollo del controlador.

Para Linux, el sitio Linux USB debe ser capaz de apuntar en la dirección correcta. En particular, querrás el Programming Guide for Linux USB Device Drivers.

+0

El enlace de la guía de programación no funciona – Benubird

0

Una buena forma de hacerlo es simplemente desarrollar un dispositivo HID, ya que el controlador está integrado en la mayoría de los sistemas operativos de nivel superior y es bastante flexible para un IO simple como el que está hablando. Otra buena opción es simplemente usar un dispositivo o software USB RS232. Yo uso PIC que tienen una serie de buenos dispositivos con USB a bordo.

9

Bueno, aunque puede desarrollar y escribir su propio controlador USB, la belleza de USB es que no necesita escribir su propio controlador. el USB Implementers Forum tiene especificaciones de clase definidas para todas las clases de dispositivo estándar. Si puede hacer que su dispositivo encaje en una clase de dispositivo estándar, ¡el controlador ya se ha escrito para usted!

Si realmente desea familiarizarse con el desarrollo de USB, debe comenzar por revisar el USB approved class specification documents.

5

Si está en el marco para microcontroladores AVR con hardware USB, eche un vistazo a LUFA, y si tiene AVR con software USB, consulte V-USB.Ambos han implementado muchas clases de USB para que no tengas que hacerlo por tu cuenta, solo úsalas.

+2

Ambos proyectos son de gran ayuda en el espacio avr usb –

3

¡Parece un gran proyecto! Sugiero comenzar con algo un poco más simple ya que eres, como dices, un "n00b total". No estoy seguro de qué hardware tiene actualmente (o tiene en mente) pero lo que sugeriría para el principiante total es el STK500. Es una placa de desarrollo que está muy bien soportada tanto en Linux como en Windows y le dará la mayor flexibilidad. Viene con LED e interruptores integrados para sus proyectos, pero necesitará un microcontrolador. Y para eso, recomiendo el ATMega32, un gran IC multiuso que también está bien soportado y tiene mucha documentación en la web.

Una vez que los tenga, le sugiero que realice su desarrollo en Linux utilizando avr-gcc (asegúrese de instalar también avr-libc). Si está utilizando Ubuntu, es fácil obtener todos los paquetes que necesita:

% sudo apt-get install gcc-avr avr-libc avrdude 

Esos deben ponerlo en funcionamiento. Te sugiero que busques ayuda en Google para escribir tus primeros programas, pero otro buen recurso son los materiales en línea para this class at Cornell.

Eso es suficiente para mojarse los pies con los microcontroladores AVR y las herramientas de desarrollo. El cielo es el límite en ese punto, pero como dijiste que querías ingresar al USB, te sugiero usar el excelente marco V-USB para que tu ATMega32 actúe como un dispositivo USB. Después de eso, como dicen, los pasos para voltear LEDs son pan comido :).

+0

buen consejo: v-usb - también hay buenos esquemas - fáciles de digerir –

3

Me pregunto qué utilizar para escribir sus propios conductores en el equipo

  1. libusb (here, here y here)
  2. wdk
  3. WinDriver

Para obtener información sobre variantes de libusb, lea this

1

Puede usar libusb. Es poderoso y multiplataforma.

Pero lo que estás tratando de hacer es una interfaz de control bastante simple. Puede eludir la mayor parte de la complejidad mediante el uso de HIDAPI, creo.

http://www.signal11.us/oss/hidapi/

dispositivos HID suelen utilizar controladores genéricos que vienen empaquetados en el sistema operativo. De esta forma, en realidad no tiene que escribir ningún controlador, simplemente haga que su dispositivo cumpla con el controlador genérico y adapte el software del cliente.

Creo que esto es lo que generalmente se hace en el campo de la electrónica de aficionado, que es lo que le interesa aquí.

HIDAPI incluso se recomienda para comunicaciones simples con dispositivos HID en las preguntas frecuentes de libusb ya que es un poco más complicado hacerlo en todas las plataformas que usan libusb.

0

Había construido mi propio banco de pruebas basado en el ARDUINO UNO y estaba usando el programador de placas de iones de tipo usbasp y funcionó perfectamente bien, pero no permitió convertir el TTL a Rs-232 y por lo tanto no pude t use las funciones tales como serial.print() y tuve que instalar el cable ftdi que me permitió hacer esto. Los controladores fueron el libusb 1.xx funcionando bien.

Si desea programar el AVR, puede usar el paquete de software ARDUINO o el stino para cargar los programas. Necesita saber c (solo conceptos básicos).

0

Creé un adaptador de teclado USB el año pasado para mi piedra angular. No hice la programación de host pero usé el código existente que puede encontrar en la web. Pero programé el lado del dispositivo y para eso obtuve mucha ayuda de este sitio web. Teensy Mire en su "Biblioteca de códigos" que tiene el código para Teclado, Mouse y otros. Además, el manual del protocolo USB siempre será útil y siempre debe consultarlo cuando esté haciendo algo con el USB.

0

Me pregunto si su AVB actúa como host o dispositivo. Supongo que su placa es un dispositivo usb y necesita encender los leds en su placa. Por lo tanto, puede ser una buena forma de inicializar su placa como un dispositivo HID. Para lograr este objetivo, necesita una pila de software de gadgets HID ejecutándose en su tablero. Las referencias de la siguiente manera: marco

  1. aparato en uboot
  2. Specefication Hacia HID usb org
  3. herramientas de depuración como el Analizador de Protocolo USB
  4. libusb que se ejecuta en el PC Host para enviar paquetes