Estructuras de datos USB 3.0
En este tema se describen las estructuras de datos usadas por el controlador del controlador de host USB 3.0. Comprender estas estructuras de datos le ayudará a usar los comandos de extensión del depurador USB 3.0 y RCDRKD de forma eficaz. Las estructuras de datos que se presentan aquí tienen nombres coherentes con la especificación USB 3.0. La familiaridad con la especificación USB 3.0 mejorará aún más la capacidad de usar los comandos de extensión para depurar controladores USB 3.0.
El controlador de host USB 3.0 forma parte de la pila de controladores de núcleo USB 3.0. Para obtener más información, consulte Arquitectura de pila de controladores USB.
Cada controlador host USB 3.0 puede tener hasta 255 dispositivos y cada dispositivo puede tener hasta 31 puntos de conexión. En el diagrama siguiente se muestran algunas de las estructuras de datos que representan un controlador de host y los dispositivos conectados.
Matriz base de contexto de dispositivo
La matriz base de contexto de dispositivo es una matriz de punteros a estructuras de contexto de dispositivo. Hay una estructura de contexto de dispositivo para cada dispositivo conectado al controlador de host. Los elementos de 1 a 255 apuntan a estructuras de contexto de dispositivo. El elemento 0 apunta a una estructura de contexto para el controlador de host.
Contexto de dispositivo y contexto de ranura
Una estructura de contexto de dispositivo contiene una matriz de punteros a estructuras de contexto de punto de conexión. Hay una estructura de contexto de punto de conexión para cada punto de conexión del dispositivo. Los elementos del 1 al 31 apuntan a las estructuras de contexto de punto de conexión. El elemento 0 apunta a una estructura de contexto de ranura, que contiene información de contexto para el dispositivo.
Anillo de comandos
El anillo de comandos lo usa el software para pasar comandos al controlador de host. Algunos de estos comandos se dirigen al controlador de host y algunos se dirigen a determinados dispositivos conectados al controlador de host.
Anillo de eventos
El controlador de host usa el anillo de eventos para pasar eventos al software. Es decir, el anillo de eventos es una estructura que el controlador de host usa para informar a los controladores de que se ha completado una acción.
Matriz de registro de timbre de puerta
Doorbell Register Array es una matriz de registros de timbre, uno para cada dispositivo conectado al controlador host. Los elementos de 1 a 255 son registros de timbre. El elemento 0 indica si hay un comando pendiente en el anillo de comandos.
El software notifica al controlador de host que tiene trabajo relacionado con el dispositivo o relacionado con el punto de conexión para realizar escribiendo información de contexto en el registro de timbre para el dispositivo.
El diagrama siguiente continúa a la derecha del diagrama anterior. Muestra estructuras de datos adicionales que representan un único punto de conexión.
Anillo de transferencia
Cada punto de conexión tiene uno o varios anillos de transferencia. Un anillo de transferencia es una matriz de bloques de solicitud de transferencia (TRB). Cada TRB apunta a un bloque de datos contiguos (hasta 64 KB) que se transferirán entre el hardware y la memoria como una sola unidad.
Cuando la pila de núcleos USB 3.0 recibe una solicitud de transferencia de un controlador de cliente USB, identifica el contexto de punto de conexión para la transferencia y, a continuación, interrumpe la solicitud de transferencia en uno o varios descriptores de transferencia (TD). Cada TD contiene uno o varios TRB.
Contexto del punto de conexión
Una estructura de contexto de punto de conexión contiene información de contexto para un único punto de conexión. También tiene miembros Dequeue y Enqueue , que se usan para realizar un seguimiento de dónde se consumen TRB por el hardware y dónde se agregan TRB por software.