¿Existe un protocolo de comunicación USB real?

La mayoría de nosotros nunca pensamos mucho en nuestros dispositivos USB, simplemente los conectamos y nos olvidamos de ellos. Pero, ¿qué pasa si eres del tipo curioso que quiere aprender más sobre cómo funciona el USB? La publicación de preguntas y respuestas del superusuario de hoy tiene las respuestas a las preguntas de un lector curioso.

La sesión de preguntas y respuestas de hoy nos la ofrece SuperUser, una subdivisión de Stack Exchange, una colección comunitaria de sitios web de preguntas y respuestas.

Foto cortesía de Evilelka Kowalski (Flickr).

La cuestión

El lector Smeeb SuperUser quiere saber si realmente existe un protocolo de comunicación USB:

Según Wikipedia, USB:

  • Define cables, conectores y protocolos de comunicación utilizados en un bus para la conexión, comunicación y alimentación entre computadoras y dispositivos electrónicos.

Pero, ¿existe un protocolo de comunicación USB real? Tengo entendido que:

  1. Conecta un dispositivo USB a una máquina (Ubuntu o cualquier tipo de Linux por ejemplo).
  2. Linux encuentra el controlador de dispositivo para ese dispositivo de alguna manera (¡una ventaja si lo sabe!) Y lo carga.
  3. El dispositivo ahora está conectado en / dev / theDevice.
  4. Las aplicaciones del espacio de usuario ahora pueden leer y escribir en / dev / theDevice y el controlador maneja la entrada y salida de bajo nivel al dispositivo / hardware subyacente.

Hasta donde yo sé, un protocolo de comunicación USB no aparece en ninguna parte de esta secuencia. Si entendí correctamente, USB es solo el cable y la conexión eléctrica entre la PC y el dispositivo.

¿Me equivoco aquí? ¿USB realmente implementa algún tipo de protocolo de bajo nivel que resalta el flujo anterior? Si es así, ¿qué es y cómo funciona a una vista de 30,000 pies?

¿Existe un protocolo de comunicación USB real?

La respuesta

Los contribuyentes de superusuarios RedGrittyBrick y projectdp tienen la respuesta para nosotros. En primer lugar, RedGrittyBrick:

Sí (ver protocolos USB).

Según tengo entendido, la especificación USB define un conjunto complejo de protocolos en capas y perfiles de dispositivos.

Por ejemplo, los dispositivos USB pueden ajustarse a modelos de alto nivel como almacenamiento masivo, teclado, dispositivo de interfaz de usuario, etc. y ser administrado por un controlador de dispositivo genérico. Algunos dispositivos USB pueden comunicarse a un nivel inferior, por lo que la compatibilidad con USB de bajo nivel del sistema operativo puede reconocer que se requieren controladores de nivel superior específicos del dispositivo.

Seguimiento de la respuesta de projectdp:

pregunta

¿Existe un protocolo de comunicación USB de bajo nivel en acción y qué es?

Respuesta

Sí hay. La especificación USB incluye el protocolo USB que define cómo se utiliza el bus a nivel de bits. Este sería el protocolo de bajo nivel subyacente a los protocolos de nivel superior (es decir, almacenamiento masivo, HID, etc.).

Para obtener detalles sobre el funcionamiento del protocolo USB, Wiki de OSDev Es útil. Aquí está otro interesante descripción utilizando diagramas de secuencia para describir las diversas transacciones de datos a través del protocolo USB.

Pregunta extra

¿Cómo encuentra Linux y carga el controlador de dispositivo para este dispositivo?

Respuesta de bonificación

En Linux, cuando se usa un kernel USB, se detectará un dispositivo USB en funcionamiento a través del hardware y el kernel debido a la especificación USB. En el lado del hardware, la detección la realiza el controlador de host USB. Luego, en el kernel, el controlador del controlador de host se hace cargo y traduce los bits de bajo nivel en el cable en información formateada por el protocolo USB. Luego, esta información se ingresa en el controlador del kernel usbcore.

Parafraseé de este excelente Opensourceforu artículo, que contiene muchos más detalles y claridad sobre su pregunta en el contexto de Linux.

¡Asegúrese de ver el resto de la animada discusión a través del enlace del hilo compartido a continuación!

¿Tiene algo que agregar a la explicación? Habla en los comentarios. ¿Quiere leer más respuestas de otros usuarios expertos en tecnología de Stack Exchange? Consulte el hilo de discusión completo aquí..

Experto Geek - Tu Guía en Tendencias Tecnológicas