wiiu - Programación USB
wii u usb helper workaround (10)
Me pregunto qué usar para escribir tus propios controladores en la computadora.
Para información sobre variantes de libusb lea this
Quiero programar un microcontrolador (AVR) para controlar algunos leds a través de USB. Es simplemente 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.
Mi nivel en la programación del sistema: noob total (de ahí la pregunta)
Entonces, ¿cuál es la literatura que les recomendaría a ustedes para obtener un buen conocimiento de la tecnología USB y cómo escribir sus propios controladores y más allá?
PD: lo sé:
C (probablemente lo necesitará aquí)
Java (probablemente no lo necesite aquí)
Python (espero que pueda usarlo aquí)
ensamblador (esperemos que no lo necesite aquí XD).
...
PPS: el desarrollo del controlador difiere para diferentes sistemas operativos. Uso Linux y Windows, por lo que cualquier material relacionado con uno o ambos sistemas es bienvenido.
¡Eso suena como un gran proyecto! Yo sugeriría comenzar con algo un poco más simple ya que usted es, como usted dice, 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 incorporados 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 obtenga esos, le sugiero que haga su desarrollo en Linux usando 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 deberían ponerte en marcha. Yo sugeriría que Google busque ayuda para escribir sus primeros programas, pero otro buen recurso son los materiales en línea para esta clase en 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 momento, pero como dijo que desea conectarse a USB, le sugeriría que utilice el excelente marco V-USB para que su ATMega32 actúe como un dispositivo USB. Después de eso, como dicen, los pasos para encender los LED son muy sencillos :).
Bueno, aunque puede desarrollar y escribir su propio controlador USB, la belleza del USB es que no necesita escribir su propio controlador. El Foro de implementadores de USB ha definido especificaciones de clase para todas las clases de dispositivos estándar. ¡Si puede hacer que su dispositivo se ajuste a una clase de dispositivo estándar, el controlador ya ha sido escrito para usted!
Si realmente desea familiarizarse con el desarrollo de USB, debe comenzar por revisar los documentos de especificación de clase aprobados por USB .
Construí mi propio banco de pruebas basado en ARDUINO UNO y estaba usando el programador de ionlabs de tipo usbasp y funcionó perfectamente bien, pero no permitió convertir el TTL de nuevo a Rs-232 y, por lo tanto, no pude usar las funciones. 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 utilizar el paquete de software ARDUINO o el stino para cargar los programas. Necesitas saber c (solo lo básico).
Creé un adaptador de teclado USB el año pasado para mi capstone. No hice la programación del host, sino que utilicé el código existente que puede encontrar en la web. Pero programé el lado del dispositivo y, para ello, recibí mucha ayuda de este sitio web Teensy Busque en su "biblioteca de códigos", que tiene un código para Teclado, ratón y otros. Además, el manual del protocolo USB siempre será útil y siempre deberías consultarlo cuando estés haciendo cosas con USB.
El área de documentación de Microsoft del WDK (Windows Development Kit) está disponible recientemente en MSDN. Hay una sección sobre USB, aunque sería mejor leer primero las secciones anteriores, en particular las áreas de "Introducción". Asumen que usarás C como el lenguaje de programación para el desarrollo de controladores.
Para Linux, el sitio web de Linux USB debería poder apuntarle en la dirección correcta. En particular, querrá la Guía de programación para controladores de dispositivos USB de Linux .
Me pregunto si su AVB actúa como host o dispositivo. Supongo que su tablero es un dispositivo usb y usted necesita encender los leds en su tablero. Por lo tanto, puede ser una buena manera de inicializar su placa como un dispositivo HID. Para lograr este objetivo, necesita una pila de software de gadgets HID que se ejecute en su tablero. Referencias de la siguiente manera:
- marco de gadget en uboot
- HID specefication usb org
- herramientas de depuración como el analizador de protocolo USB
- libusb corriendo en PC host para enviar paquetes
Una buena manera 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 IO simple, como usted está hablando. Otra buena opción es usar un dispositivo o software USB RS232. Utilizo los PIC que tienen varios dispositivos agradables con USB a bordo.
Usted podría libusb. Es potente y multiplataforma.
Pero lo que estás tratando de hacer es una interfaz de control bastante simple. Puede evitar la mayor parte de la complejidad usando HIDAPI, creo.
http://www.signal11.us/oss/hidapi/
Los dispositivos HID a menudo utilizan controladores genéricos que vienen empaquetados en el sistema operativo. De esa manera, en realidad no tiene que escribir ningún controlador, solo hace que su dispositivo sea compatible con el controlador genérico y adapte el software cliente.
Creo que esto es lo que normalmente se hace en el campo de la electrónica de aficionados, que es lo que te interesa aquí.
HIDAPI se recomienda incluso para comunicaciones simples con dispositivos HID en las preguntas frecuentes de libusb, ya que es un poco más complicado hacerlo en plataformas que utilizan libusb.