14Aug

¿Hay un protocolo de comunicación USB real?

La mayoría de nosotros nunca le damos mucha importancia a nuestros dispositivos USB, simplemente los conectamos y nos olvidamos de ellos. Pero, ¿y si eres del tipo curioso que quiere saber más sobre cómo funciona el USB?La publicación SuperUser Q & A de hoy tiene las respuestas a las preguntas de un lector curioso.

Pregunta de hoy &La sesión de respuesta nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web Q & A dirigida por la comunidad.

Foto cortesía de Evilelka Kowalski( Flickr).

La pregunta

SuperUser reader smeeb quiere saber si realmente hay un protocolo de comunicación USB real:

Según Wikipedia, USB:

  • define los cables, conectores y protocolos de comunicación utilizados en un bus para conexión, comunicación y fuente de alimentación entrecomputadoras y dispositivos electrónicos.

¿Pero existe un protocolo de comunicación USB ?Entiendo que:

  1. Conecta un dispositivo USB a una máquina( Ubuntu o cualquier tipo de Linux, por ejemplo).
  2. Linux encuentra el controlador del dispositivo para ese dispositivo de alguna manera( ¡ bonus si lo conoce! ) y lo carga.
  3. El dispositivo ahora está conectado bajo /dev/ theDevice .
  4. Las aplicaciones de 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.

Por lo que puedo decir, un protocolo de comunicación USB no aparece en ningún lugar de este flujo. Si mi comprensión es correcta, el USB es solo el cable y la conexión eléctrica entre la PC y el dispositivo.

¿Me equivoco aquí?¿Realmente el USB implementa algún tipo de protocolo de bajo nivel que subraya 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?

Los contribuidores Respuesta

SuperUser RedGrittyBrick y projectdp tienen la respuesta para nosotros. Primero, 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 plantillas de alto nivel como almacenamiento masivo, teclado, dispositivo de interfaz humana, etc. y ser administrados por un controlador de dispositivo genérico. Algunos dispositivos USB se pueden comunicar a un nivel inferior, de modo que el soporte USB de bajo nivel del sistema operativo puede reconocer que se necesitan controladores de nivel superior específicos del dispositivo.

Seguido de la respuesta de projectdp:

Pregunta

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

Respuesta

Sí, la hay. La especificación USB incluye el protocolo USB que define la forma en que se utiliza el bus a nivel de bit. Este sería el protocolo de bajo nivel que subyace a los protocolos de nivel superior( es decir, almacenamiento masivo, HID, etc.).

Para obtener detalles sobre cómo funciona el protocolo USB, este wiki de OSDev es útil. Aquí hay otra descripción interesante que usa diagramas de secuencia para describir las diversas transacciones de datos según el protocolo USB.

Pregunta de bonificación

¿Cómo encuentra Linux y carga el controlador del dispositivo para ese dispositivo?

Bonus Answer

En Linux cuando se utiliza un kernel habilitado para USB, un dispositivo USB que funcione se detectará a través del hardware y kernel debido a la especificación USB.En el lado del hardware, la detección se realiza mediante el controlador de host USB.Luego, en el kernel, el controlador del controlador de host toma el control y traduce los bits de bajo nivel en el cable a la información formateada del protocolo USB.Esta información luego se llena en el controlador usbcore en el kernel.

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

¡Asegúrate de revisar el resto de la animada discusión a través del enlace de hilos que se comparte a continuación!

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