¿Cuáles son algunos buenos recursos para aprender programación USB?

Gracias por la A2A. Ciertamente, la especificación estándar de Universal Serial Bus es el mejor recurso para comenzar. Es posible que prefiera leer la revisión 1.1 (Página en ucr.edu) si la velocidad baja y la velocidad máxima son suficientes para usted. Compruebe este sitio web para revisiones posteriores de las especificaciones:
USB.org – Documentos

Este artículo en la wiki de desarrollo del sistema operativo es bastante impresionante:
Bus serie universal

Las PC modernas generalmente contienen xHCI (Interfaz de controlador de host extensible) con EHCI (Interfaz de controlador de host mejorado) y OHCI (Interfaz de controlador de host abierto) o UHCI (Interfaz de controlador de host universal).

UHCI y OHCI se utilizan para controlar dispositivos de baja velocidad y velocidad completa, mientras que EHCI es para dispositivos USB de alta velocidad (introducidos con USB2). Si la velocidad baja / completa es suficiente para usted, puede aprender cómo funciona OHCI o UHCI y comenzar a escribir controladores de dispositivos para ellos. Como se indicó anteriormente, su PC tiene OHCI o UHCI (este es un OR exclusivo). Use lspci y vea qué tiene su PC, luego decida con qué controlador host comenzar. Creo (pero no estoy seguro) que es posible que no tenga UHCI / OHCI en su máquina (su máquina es tan moderna y el fabricante cree que los dispositivos de baja y máxima velocidad son demasiado antiguos), en este caso tendrá que aprender EHCI.

Observe que todos los controladores de host en su PC son en realidad dispositivos PCI. Deberá escanear el bus PCI en busca de controladores UHCI / OHCI / EHCI y detectar sus regiones de dirección de E / S (asignadas por BIOS / EFI o el sistema operativo en el que está trabajando).

Si quieres encontrar algo fácilmente, me gustaría ir a google, tal vez google scholar, y buscar “programación usb” o frases relacionadas,

Aquí hay algunos que encontré:

  • Cómo crear y programar dispositivos USB
  • Tiene una tabla de contenido para un fácil acceso, sin embargo, no le dice explícitamente cómo programar, le da una muy buena idea de lo básico
  • Escribir un controlador USB simple
    • Éste le da una mejor comprensión de la codificación / escritura / programación a usb
  • Manual de programación de E / S USB
    • Un documento más detallado y largo, pero básicamente te dice todo sobre él.

    Suponiendo que estás hablando del puerto serie usb. Si quieres aprender a hacer una prueba o algo para hacer rápidamente, ve a python y a la biblioteca de pyserial (lo hice para usar un arduino), de modo que puedas usar los puertos usb para leer y escribir fácilmente.
    Aquí está el enlace para un libro wiki también:
    Programación en serie / USB
    Las similitudes al final del wikibook también son muy útiles de verificar.


    por cierto el código de pyserial se ve así:

    importar serial #import la biblioteca
    ser = serial.Serial (‘/ dev / yourUsbPort’, 9600) #crear una instancia donde 9600 es la tasa de transferencia.
    line = ser.readline () #read string line
    ser.write (“line”) #write string line
    ser.close ()


    o si es una cosa de nivel más bajo, puede ir directamente a la especificación de usb, (no he encontrado ninguna guía fácil ni he escrito software para usar usb en nivel bajo), pero creo que encontrará útil verificar el especificación de clase de dispositivo dada por USB.org – Bienvenido:
    Especificaciones de clase de dispositivo USB