Structures de données USB 3.0
Cette rubrique décrit les structures de données utilisées par le pilote du contrôleur hôte USB 3.0. La compréhension de ces structures de données vous aidera à utiliser efficacement les commandes d’extension du débogueur USB 3.0 et RCDRKD . Les structures de données présentées ici ont des noms qui sont cohérents avec la spécification USB 3.0. La connaissance de la spécification USB 3.0 améliore encore votre capacité à utiliser les commandes d’extension pour déboguer des pilotes USB 3.0.
Le pilote de contrôleur hôte USB 3.0 fait partie de la pile de pilotes usb 3.0 core. Pour plus d’informations, consultez Architecture de pile de pilotes USB.
Chaque contrôleur hôte USB 3.0 peut avoir jusqu’à 255 appareils et chaque appareil peut avoir jusqu’à 31 points de terminaison. Le diagramme suivant montre certaines des structures de données qui représentent un contrôleur hôte et les appareils connectés.
Tableau de base de contexte d’appareil
Le tableau de base de contexte d’appareil est un tableau de pointeurs vers des structures de contexte d’appareil. Il existe une structure de contexte d’appareil pour chaque appareil connecté au contrôleur hôte. Les éléments 1 à 255 pointent vers les structures de contexte d’appareil. L’élément 0 pointe vers une structure de contexte pour le contrôleur hôte.
Contexte d’appareil et contexte d’emplacement
Une structure de contexte d’appareil contient un tableau de pointeurs vers les structures de contexte de point de terminaison. Il existe une structure de contexte de point de terminaison pour chaque point de terminaison sur l’appareil. Les éléments 1 à 31 pointent vers les structures de contexte de point de terminaison. L’élément 0 pointe vers une structure de contexte d’emplacement, qui contient des informations de contexte pour l’appareil.
Anneau de commande
L’anneau de commande est utilisé par le logiciel pour passer des commandes au contrôleur hôte. Certaines de ces commandes sont dirigées vers le contrôleur hôte et d’autres vers des appareils spécifiques connectés au contrôleur hôte.
Event Ring
L’anneau d’événements est utilisé par le contrôleur hôte pour passer des événements au logiciel. Autrement dit, l’anneau d’événements est une structure que le contrôleur hôte utilise pour informer les pilotes qu’une action est terminée.
Doorbell Register Array
Le tableau de registres doorbell est un tableau de registres de sonnette, un pour chaque appareil connecté au contrôleur hôte. Les éléments 1 à 255 sont des registres de sonnette. L’élément 0 indique s’il existe une commande en attente dans l’anneau de commande.
Le logiciel avertit le contrôleur hôte qu’il doit effectuer un travail lié à l’appareil ou au point de terminaison en écrivant des informations de contexte dans le registre de sonnette pour l’appareil.
Le diagramme suivant continue à droite du diagramme précédent. Il montre des structures de données supplémentaires qui représentent un point de terminaison unique.
Anneau de transfert
Chaque point de terminaison a un ou plusieurs anneaux de transfert. Un anneau de transfert est un tableau de blocs de demande de transfert (TB). Chaque TRB pointe vers un bloc de données contiguës (jusqu’à 64 Ko) qui sera transféré entre le matériel et la mémoire en une seule unité.
Lorsque la pile de cœurs USB 3.0 reçoit une demande de transfert d’un pilote client USB, elle identifie le contexte de point de terminaison pour le transfert, puis décompose la demande de transfert en un ou plusieurs descripteurs de transfert (TD). Chaque TD contient un ou plusieurs TMB.
Contexte du point de terminaison
Une structure de contexte de point de terminaison contient des informations de contexte pour un point de terminaison unique. Il a également des membres Dequeue et Enqueue , qui sont utilisés pour suivre où les TLB sont consommés par le matériel et où les TLB sont ajoutés par les logiciels.