Condividi tramite


Strutture dei dati USB 3.0

In questo argomento vengono descritte le strutture di dati usate dal driver del controller host USB 3.0. Understanding these data structures will help you use the USB 3.0 and RCDRKD debugger extension commands effectively. Le strutture di dati presentate qui hanno nomi coerenti con la specifica USB 3.0. La familiarità con la specifica USB 3.0 migliorerà ulteriormente la possibilità di usare i comandi di estensione per eseguire il debug dei driver USB 3.0.

Il driver del controller host USB 3.0 fa parte dello stack di driver core USB 3.0. Per altre informazioni, vedere architettura dello stack di driver USB .

Ogni controller host USB 3.0 può avere fino a 255 dispositivi e ogni dispositivo può avere fino a 31 endpoint. Il diagramma seguente illustra alcune delle strutture di dati che rappresentano un controller host e i dispositivi connessi.

Diagramma che mostra le strutture di dati USB 3.0 che rappresentano un controller host e i dispositivi connessi con contesto di dispositivo, contesto dello slot e contesto dell'endpoint.

Matrice di base del contesto di dispositivo

La matrice di base del contesto di dispositivo è una matrice di puntatori alle strutture del contesto di dispositivo. Esiste una struttura del contesto di dispositivo per ogni dispositivo connesso al controller host. Gli elementi da 1 a 255 puntano alle strutture del contesto di dispositivo. L'elemento 0 punta a una struttura di contesto per il controller host.

Contesto di dispositivo e contesto slot

Una struttura Contesto di dispositivo contiene una matrice di puntatori alle strutture del contesto endpoint. Esiste una struttura del contesto endpoint per ogni endpoint nel dispositivo. Gli elementi da 1 a 31 puntano alle strutture del contesto endpoint. L'elemento 0 punta a una struttura di contesto slot, che contiene informazioni di contesto per il dispositivo.

Command Ring

L'anello di comando viene usato dal software per passare i comandi al controller host. Alcuni di questi comandi vengono indirizzati al controller host e alcuni vengono indirizzati a determinati dispositivi connessi al controller host.

Event Ring

L'anello di eventi viene usato dal controller host per passare eventi al software. Ovvero, l'anello eventi è una struttura usata dal controller host per informare i driver che un'azione è stata completata.

Matrice registro porta

Doorbell Register Array è una matrice di registri porta, uno per ogni dispositivo connesso al controller host. Gli elementi da 1 a 255 sono registri porta. L'elemento 0 indica se è presente un comando in sospeso nell'anello di comando.

Il software notifica al controller host che dispone di un lavoro correlato al dispositivo o correlato all'endpoint da eseguire scrivendo informazioni di contesto nel registro del campanello per il dispositivo.

Il diagramma seguente continua a destra del diagramma precedente. Mostra strutture di dati aggiuntive che rappresentano un singolo endpoint.

Diagramma che illustra la struttura dei dati USB 3.0 con contesto di endpoint contenente più TRB con dati e TD.

Transfer Ring

Ogni endpoint ha uno o più anelli di trasferimento. Un anello di trasferimento è una matrice di blocchi di richieste di trasferimento (TRB). Ogni TRB punta a un blocco di dati contigui (fino a 64 KB) che verranno trasferiti tra hardware e memoria come singola unità.

Quando lo stack di core USB 3.0 riceve una richiesta di trasferimento da un driver client USB, identifica il contesto dell'endpoint per il trasferimento e quindi suddivide la richiesta di trasferimento in uno o più descrittori di trasferimento (TD). Ogni TD contiene uno o più TRB.

Endpoint Context

Una struttura del contesto dell'endpoint contiene informazioni di contesto per un singolo endpoint. It also has Dequeue and Enqueue members, which are used to track where TRBs are being consumed by the hardware and where TRBs are being added by software.

See also

Innovazioni del debug USB in Windows 8