Análisis de la tecnología USB

1 USB3.0

USB es la tecnología de interconexión de periféricos de PC más exitosa definida en la historia y se ha introducido rápidamente en los campos de CE y móvil. Solo en 2006, se fabricaron más de 2000 millones de dispositivos USB y ahora hay más de 6000 millones de productos USB instalados.

Y a medida que avanza la innovación tecnológica, surgen constantemente nuevos dispositivos, formatos de medios y almacenamiento económico de alta capacidad. Todos requieren un mayor ancho de banda para mantener la experiencia de usuario que esperan los usuarios. Las cámaras de alta definición tendrán cientos de gigabytes de contenido de almacenamiento que deben migrarse a la PC para que los usuarios puedan editar, ver y empaquetar para almacenamiento. Los dispositivos existentes, como las cámaras digitales, continúan innovando y aumentando su capacidad para almacenar más imágenes sin comprimir. Descargar cientos o incluso miles de imágenes sin procesar de 10 MB o más desde una cámara digital será un proceso que consumirá mucho tiempo a menos que se mejore la tasa de transferencia. Además, las aplicaciones de usuario requieren un mayor ancho de banda de conexión entre la PC y estos periféricos cada vez más complejos. USB 3.0 aborda estas necesidades al agregar velocidades de transferencia más altas para adaptarse a estas aplicaciones y dispositivos emergentes.

Hay una gran cantidad de PC en uso en el mercado hoy en día que solo admiten USB 2.0. También se utiliza una gran cantidad de periféricos USB 2.0. USB3.0 necesita mantener la compatibilidad con versiones anteriores. Desde el punto de vista del hardware, usb3.0 y usb2.0 ya son dos tipos de dispositivos.En el puerto usb del asiento tipo A, podemos ver claramente que usb2.0 todavía usa GND, D+, D-, VBUS. En 3.0, se utilizan un par de líneas diferenciales USB3_TX, líneas diferenciales USB3_RX, GND y BUS. Así que físicamente tenemos que ser claros, de hecho, USB2.0 y USB3.0 no son un dispositivo. Aunque USB3.0 aún continúa la mayoría de los conceptos de 2.0.

 

1. El proceso de comunicación de Usb3.0

Usb3.0 es compatible con versiones anteriores de USB 2.0 a nivel de marco. En términos de tipos de transmisión, todavía hay cuatro tipos de transmisión de control, transmisión de interrupción, transmisión por lotes y transmisión síncrona. Sin embargo, existen algunas diferencias fundamentales entre USB 2.0 y el protocolo SuperSpeed:

1) USB 2.0 usa una transacción de tres partes (token, datos y protocolo de enlace), mientras que SuperSpeed ​​​​usa estas mismas tres partes de manera diferente. Para las salidas (OUT), el token se incluye en el paquete; para las entradas (IN), el token se reemplaza por el protocolo de enlace.

2) USB 2.0 no admite ráfagas (ráfagas) y la súper alta velocidad admite ráfagas continuas (ráfagas continuas).

3) USB 2.0 es un bus de transmisión (difusión) semidúplex, mientras que SuperSpeed ​​​​es un bus de unidifusión (unicast) dual-simple, que permite transacciones simultáneas de ENTRADA y SALIDA.

4) USB 2.0 usa un modelo de sondeo, mientras que SuperSpeed ​​​​usa notificación asincrónica.

5) USB 2.0 no tiene la capacidad de transmitir (Transmisión), mientras que la velocidad súper alta admite la transmisión (Transmisión) a puntos finales masivos.

Veamos una transferencia IN:

Los hosts y los dispositivos DEBEN obedecer las restricciones sobre el tipo de transporte y las características del punto final. El host inicia una transferencia enviando un paquete de reconocimiento (IN) al dispositivo. Este paquete de reconocimiento contiene información de direccionamiento para enrutar el paquete al punto final deseado. El host le dice al dispositivo cuántos paquetes puede enviar y el número de secuencia del primer paquete que espera recibir del dispositivo. En respuesta, el punto final devuelve un paquete al host con el número de secuencia adecuado. Los paquetes de acuse de recibo también confirman implícitamente que los paquetes anteriores se recibieron correctamente.

Tenga en cuenta que, aunque el host necesita enviar un acuse de recibo por cada paquete recibido, el dispositivo aún puede enviar la cantidad solicitada de paquetes sin esperar ningún acuse de recibo.

El protocolo de transacción de entrada de ultra alta velocidad (IN) se muestra en la siguiente figura. Una transferencia de entrada (IN) en un autobús SuperSpeed ​​consiste en una o más transacciones IN y se completa cuando ocurre algo de lo siguiente:

1) Todos los datos transmitidos se reciben con éxito.

2) El punto final responde con un paquete más pequeño que el tamaño máximo de paquete del punto final.

3) El punto final responde con un error.

Las transferencias de salida también son similares:

Del modelo anterior, podemos ver que, en comparación con el modo de sondeo de usb2.0, por un lado, el modo asíncrono de usb3.0 es significativamente más eficiente y puede enviar paquetes continuamente sin esperar a que el dispositivo responda. Por otro lado, debido a que usb3.0 envía datos punto a punto, otros dispositivos usb inactivos pueden mantener un bajo consumo de energía hasta que lleguen los datos. En el modo de sondeo de usb2.0, dado que cada dispositivo necesita juzgar la dirección en el bus, el dispositivo inactivo no puede ingresar al modo de bajo consumo de energía.

2. Emergencia

El protocolo SuperSpeed ​​​​USB permite que el host envíe datos continuamente al dispositivo, o reciba datos continuamente desde el dispositivo, siempre que el dispositivo pueda recibir o enviar datos. La cantidad de paquetes que el dispositivo puede enviar o recibir sin un paquete de reconocimiento intermedio, informado en el descriptor complementario del punto final para este punto final. Se dice que un punto final que informa un tamaño de ráfaga máximo de más de un paquete admite transacciones "en ráfagas".

Al realizar transferencias en ráfaga, se aplican las siguientes reglas:

1) Antes de recibir un paquete de acuse de recibo, la cantidad máxima de paquetes que se pueden enviar en una ráfaga está limitada a: el tamaño máximo de ráfaga del punto final [tamaño máximo de ráfaga] (y el último paquete recibido por el punto final o el host) El valor mínimo del campo NumP del ACK TP o ERDY, menos el número de paquetes que el punto final o el host ha enviado desde el paquete reconocido por el ACK TP anterior. Tenga en cuenta que cada vez que se inicializa el punto final, el host puede volver a habilitar el número máximo de Los DP enviados/recibidos se inicializan al tamaño máximo de ráfaga del punto final [tamaño máximo de ráfaga].

2) En la transmisión en ráfagas, cada paquete independiente debe tener una longitud de cabida útil de paquete de datos del tamaño máximo de paquete. Solo el último paquete de una ráfaga puede ser más pequeño que el tamaño de paquete máximo informado. Si el último es más pequeño, las reglas para los paquetes cortos se aplican a los paquetes cortos al final de la ráfaga.

3) Las transacciones en ráfaga pueden continuar siempre que el campo NumP del ACK TP no esté establecido en 0 y cada paquete tenga una carga útil de datos del tamaño máximo de paquete.

3. Transmisión

La transmisión es un modo especial en masa. Cuando el descriptor de configuración de un dispositivo está configurado con MaxStreams, significa que el dispositivo puede admitir la transmisión.

La figura anterior representa una canalización por lotes de entrada, donde se establece una gran cantidad de flujos (Streams). Asociado con cada flujo (Flujo) en la memoria del host hay uno o más búferes de punto final (Búferes de punto final) para recibir datos de flujo (Datos de flujo). En el lado del dispositivo, también hay un comando correspondiente o datos específicos de la función que se transmiten al host.

Cuando el dispositivo tiene datos disponibles para un flujo específico (G en la figura), envía ERDY con CStream ID como etiqueta, y el host comenzará a enviar IN ACK TP con la etiqueta de CStream ID al dispositivo. El dispositivo devolverá los datos funcionales relacionados con la ID de CStream y también agregará la ID de CStream como una etiqueta. Cuando el host recibe los datos, utiliza el ID de CStream para seleccionar un conjunto de búferes de punto final (búferes de punto final) para recibir los datos.

Cuando se agotan los datos, el dispositivo finaliza la transmisión. El host también puede terminar la transmisión si se queda sin búfer de punto final. Los flujos se pueden usar, por ejemplo, para admitir transferencias de datos fuera de orden requeridas por dispositivos de almacenamiento masivo.

Un punto final masivo estándar tiene un único conjunto de búferes de punto final (búferes de punto final) asociado a él. Los flujos amplían la cantidad de búferes de host a los que puede acceder un punto final, de 1 a 65533. Hay una asignación 1:1 entre los búferes del host y los ID de flujo.

Dado que la secuencia se ejecuta en una canalización por lotes estándar, un solo error puede detener la canalización y detener toda la actividad.

4. Descriptor complementario

El descriptor USB 3.0 es básicamente el mismo que el USB 2.0. La principal diferencia es que se agrega un descriptor complementario después de cada descriptor EP para indicar la "transacción de ráfaga" y la "transmisión de flujo" del dispositivo mencionado anteriormente.

5. Resumen

En resumen, las novedades más importantes de USB3.0 son:

  • La velocidad del bus aumentó a 5 Gbps (hasta 10 Gbps en gen2)
  • Modo de Transferencia Asíncrona
  • Transacciones en ráfaga, confiando en el modo de transmisión asíncrona, sin esperar a que el dispositivo responda
  • La transmisión de flujo, que se basa en la transmisión repentina de transacciones, puede ser una transmisión masiva de muchos a uno

Estas nuevas características hacen que la tasa de transferencia de USB3.0 sea mucho más alta que la de USB2.0

2. TIPOC

Typec es una nueva interfaz de hardware introducida después del lanzamiento de usb3.0 para compatibilidad con inserción directa e inversa, carga de alta potencia y mayor compatibilidad.

  • Tecnología de suministro de energía USB, puede admitir la carga de hasta 20V5A
  • Se puede integrar DisplayPort y se pueden conectar pantallas y altavoces externos (por ejemplo, se pueden conectar dispositivos hdmi)
  • Anti-interferencia, mayor fiabilidad

La cabeza femenina se muestra en la siguiente figura:

La cabeza masculina se muestra en la siguiente figura:

Se puede ver que, en comparación con el enchufe usb3.0 A normal, typec tiene un conjunto adicional de tx, rx, vconn y cc. Los casos de uso específicos:

1) El tx y rx adicionales se pueden usar como salida multicanal usb en gen1 o gen2, lo que puede duplicar el rendimiento de datos y también se puede multiplexar como interfaz DisplayPort, de modo que typec se puede usar para salida de video

2) vconn suministra energía a la marca electrónica del cable activo typec, que puede identificar aún más la capacidad de suministro de energía del cable

3) el pin cc es la función central de typec, el host y el dispositivo de usb pueden comunicarse a través del pin cc para realizar varias funciones como pd, dp y cambio de modo maestro-esclavo

En la actualidad, hay muchos tipos de soluciones de implementación para typec en el mercado, por ejemplo, Qualcomm lo implementa a través de su propio typec phy, y también hay soluciones de chips typec independientes, como fusb302, etc., pero el proceso es básicamente similar. .

Formato de codificación:

pd3.0 comienza a usar el formato de codificación Biphase Mark Coding (BMC). La característica de esta codificación es que el nivel cambiará una vez al comienzo de cada período de bit. Si el nivel no cambia durante este período, significa bit0. Si el nivel cambia una vez, representa bit1

1. Entrega de energía

Actualmente hay dos tipos de PD en el mercado, uno es PD2.0, que solo proporciona varios engranajes de voltaje y corriente fijos, como los comunes 5V3A, 9V3A, 12V3A, 15V3A, 20V3A. El otro es pd3.0, es decir, pps Además de proporcionar varios engranajes de voltaje de pd2.0, también proporcionará uno o más engranajes de voltaje y corriente ajustables, tales como: rango de voltaje ajustable 3V ~ 21V, corriente ajustable 0A ~6.3A

El proceso es más o menos como sigue:

Sirva como ejemplo lo siguiente:

2.DisplayPort

Como se mencionó anteriormente, typec tiene 4 pares de señales diferenciales, 2 pares para enlace ascendente/descendente. USB-IF ha lanzado un modo alternativo para admitir la conversión de cables USB tipo C a otros usos, y el modo alternativo DP es la primera aplicación, que puede convertir algunos o todos los canales de señal diferencial en canales de señal DisplayPort, si hay son señales diferenciales restantes, se pueden seguir utilizando para la transmisión de datos de alta velocidad USB 3.1.

Con el modo alternativo DP, la fuerza de USB Type-C aumentará considerablemente, ya que permite que las tabletas y los productos portátiles logren una transmisión de datos de alta velocidad, salida de video, fuente de alimentación y otras funciones a través de una mini interfaz, brindando "solo interfaz, multifunción", que es más potente que la solución anterior de salida de señales de video a través de la interfaz USB.

Sirva como ejemplo lo siguiente:

 Información a través del tren: ruta de aprendizaje de la tecnología del código fuente del kernel de Linux + video tutorial del código fuente del kernel

Aprendizaje a través del entrenamiento: código fuente del kernel de Linux, ajuste de memoria, sistema de archivos, gestión de procesos, controlador de dispositivo/pila de protocolo de red

3 USB3.0 OTG

En la era de usb2.0, para cumplir con el requisito de que un solo puerto usb de un dispositivo móvil puede ser tanto maestro como esclavo, apareció la función otg. El otg de Usb2.0 se identifica a través del nivel en el quinto pin de identificación en el conector micro o miniusb. Cuando el nivel del pin de identificación es alto, es un esclavo. Cuando el nivel es bajo, entonces para el host.

El circuito interno del cable otg que compramos en el mercado es para conectar el pin de identificación a la línea GND, de modo que después de insertar el cable otg, el teléfono móvil se pueda usar como terminal host

En usb3.0, la función de pin de identificación también se reemplaza por un potente typec, y la identificación de maestro y esclavo se identificará con cc. Al mismo tiempo, el maestro y el esclavo también pueden cambiar roles a través de la comunicación cc.

En usb2.0, la relación maestro-esclavo entre la parte de la fuente de alimentación y el receptor de energía y el dispositivo está vinculada, y solo el host puede suministrar energía a los dispositivos. Es completamente diferente en usb3.0, los dos son completamente independientes y aún pueden recibir suministro de energía mientras son host. Resuelto el problema de "cuando el teléfono no tiene energía, no puedes conectar el dispositivo USB"

Al mismo tiempo, en el hardware, debemos aclarar los componentes de usb 3.0 otg

  • controlador usb

El controlador es responsable del procesamiento de la comunicación, la verificación de datos, la distribución, el manejo de excepciones y otras tareas principales. En usb2.0 tenemos múltiples ip de controlador diferentes como "ehci, uhci, ohci, dwc2". Entre ellos, ehci es compatible con usb1.0, usb1.1, usb2.0 y otras funciones al mismo tiempo, mientras que uhci y ohci solo admiten hasta 1.1. dwc2 es un controlador con función otg

En usb3.0, el controlador solo tiene xhci y dwc3, el mismo dwc3 también tiene función otg.

  • físico usb

Usb phy es el principal responsable de la señal física real. Convierta los datos USB seriales al formato de datos requerido por el controlador. Al mismo tiempo, la calidad de nuestra señal usb también está relacionada con phy.Hasta cierto punto, phy puede mejorar el diagrama de ojo usb, pero depende principalmente del cableado usb.

  • mecanografiado físico

Similar a la función usb phy, excepto que procesa la señal en el pin cc. La señal cc también puede ser procesada por un chip independiente, como fusb302 y otros chips.

1.EXTCON

External Connectors es el controlador utilizado por usb para la notificación de estado. Cuando phy recibe una interrupción y procesa el estado de usb, transmite a todos los controladores que han escuchado el extcon a través del controlador extcon.

Use devm_extcon_register_notifier para registrar y monitorear los cambios de estado del usb

Use devm_extcon_dev_register para registrar y administrar cambios de estado de usb

La siguiente identificación de host se toma como ejemplo:

2. Anfitrión USB3.0

En comparación con usb2.0, Usb3.0 no cambia mucho en la capa de núcleo usb, y el controlador sigue siendo el mismo que el proceso original.La estructura de datos central del código usb sigue siendo URB, y el uso de URB es el mismo como antes:

La diferencia radica en el código después de usb hcd. En xhci, la estructura de datos central es TRB, y cada dato se intercambia con un trb. En xhci.c, xhci_urb_enqueue juzga además el tipo de datos y juzga la identificación y la ráfaga de flujo, y presentar al controlador

3 USB3.0 OTG

(1) FS de configuración

En "Llévate al mundo USB", presentamos el método de configuración de dispositivos de android.c. En los primeros días, los controladores de dispositivos de Linux tenían funciones fijas, es decir, la función USB se solucionó después del arranque y no se pudo cambió. Sin embargo, tal función obviamente no puede satisfacer las necesidades de los dispositivos móviles para funciones otg, por lo que Android ha lanzado un controlador de dispositivos con funciones compuestas de android.c y composite.c.

Después de eso, el método android.c se ha utilizado durante mucho tiempo, hasta que Linux actualizó el nuevo subsistema controlador de gadget----configfs, que cubre todas las necesidades del terminal móvil. En comparación con android.c, configfs es más flexible, por lo que reemplaza a android.c.

En el nuevo código de Linux, configfs básicamente reemplaza a android.c, por lo que presentaremos configfs

Proceso de inicio:

Después del inicio, la capa superior UsbDeviceManager.java controla la función del dispositivo a través de la propiedad de setprop sys.usb.config, por ejemplo:

Cada una de estas funciones vinculadas debe ser un controlador en el gadget, como mtp corresponde a drivers/usb/gadget/function/f_mtp.c

(2) proceso de enumeración OTG

El diagrama de flujo es el siguiente

El intercambio de datos entre el subsistema Configfs y el controlador es a través de la estructura struct usb_request *request, un proceso completo es el siguiente:

Autor original: Kernel Craftsman

 

Supongo que te gusta

Origin blog.csdn.net/youzhangjing_/article/details/132062020
Recomendado
Clasificación