La mayoría de nosotros nunca pensamos mucho en 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 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 llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web de preguntas y respuestas impulsada por la comunidad.
Foto cortesía de Evilelka Kowalski (Flickr) .
La pregunta
El lector de superusuario smeeb quiere saber si realmente existe un protocolo de comunicación USB real:
Según Wikipedia, USB :
- Define los cables, conectores y protocolos de comunicaciones que se utilizan en un bus para la conexión, comunicación y suministro de energía entre computadoras y dispositivos electrónicos.
¿Pero hay un Protocolo de comunicación USB ? Mi entendimiento es que:
- Conecta un dispositivo USB a una máquina (Ubuntu o cualquier tipo de Linux, por ejemplo).
- Linux encuentra el controlador de dispositivo para ese dispositivo de alguna manera ( bonificación si lo sabes! ) y lo carga.
- El dispositivo ahora está conectado bajo / dev / theDevice .
- Las aplicaciones de espacio de usuario ahora pueden leer y escribir / 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 ninguna parte de este flujo. Si mi entendimiento es correcto, el 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 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?
La respuesta
Los contribuyentes de superusuario RedGrittyBrick y projectdp tienen la respuesta para nosotros. Primero, RedGrittyBrick:
Si ( 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 pueden comunicarse 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
¿Existe un protocolo de comunicación USB de bajo nivel en acción y qué es?
Responder
Sí hay. La especificación USB incluye el protocolo USB que define la forma en que se utiliza el bus a nivel de bits. 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í está otro interesante descripción utilizando diagramas de secuencia para describir las diversas transacciones de datos según el protocolo USB.
Pregunta extra
¿Cómo encuentra Linux y carga el controlador de dispositivo para ese dispositivo?
Respuesta de bonificación
En Linux, cuando se usa un kernel habilitado para USB, se detectará un dispositivo USB que funcione 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 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 Opensourceforu artículo , que tiene muchos más detalles y claridad sobre su pregunta en el contexto de Linux.
¡Asegúrate 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. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Consulte el hilo de discusión completo aquí .