Share via


Microsoft Debug Port Table 2 (DBG2)

Cette spécification définit le format de la table de port de débogage 2 (DBG2), utilisée dans le microprogramme de plateforme pour décrire les ports de débogage disponibles sur le système. Ces informations s’appliquent aux systèmes d’exploitation suivants : Windows 8 et plus récents.

Les références et les ressources présentées ici sont répertoriées à la fin de ce document.

Avis de brevet : Microsoft rend certains droits de brevet disponibles pour les implémentations de cette spécification selon deux options :

  1. Promesse de la communauté microsoft, disponible à l’adresse https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
  2. Le contrat de spécification final d’Open Web Foundation version 1.0 (« OWF 1.0 ») à compter du 1er octobre 2012, disponible à l’adresse http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.

Historique des documents

Date Modifier
29 novembre 2011 Première publication.
22 mai 2012 Mises à jour au tableau 3 par plateforme finale prise en charge pour Windows 8.
10 août 2015 Mise à jour de l’avis de brevet.
6 octobre 2015 Ajout de nouveaux sous-types de débogage en série (Arm SBSA UART, Arm DCC)
10 décembre 2015 Ajout d’un nouveau sous-type de débogage série (BCM2835)
31 mai 2017 Ajout d’un nouveau sous-type de débogage série (i.MX6, compatible avec la structure d’adresse générique 16550)
11 juin 2020 Ajout d’un nouveau sous-type de débogage série (SDM845v2)
1 septembre 2020 Modification de la syntaxe et de la mise en forme du document converti en Markdown.
21 septembre 2020 Ajout d’un nouveau sous-type de débogage série (IALPSS)
17 février 2021 Documenter tous les sous-types de débogage série connus
10 avril 2023 Ajout d’un nouveau sous-type de débogage série (RISC-V) et ajout d’informations de clarification sur les sous-types compatibles 16550

Introduction

Microsoft nécessite un port de débogage sur tous les systèmes. Pour décrire le ou les ports de débogage disponibles sur une plateforme, Microsoft définit une table spécifique au système d’exploitation (DBG2). Ce tableau spécifie un ou plusieurs ports indépendants à des fins de débogage. La présence d’une table de port de débogage indique que le système inclut un port de débogage. La table contient des informations sur la configuration du port de débogage. La table se trouve dans la mémoire système avec d’autres tables ACPI (Advanced Configuration and Power Interface) et doit être référencée dans la table de description du système racine ACPI (RSDT).

La table DBG2 remplace la table de ports de débogage (DBGP) ACPI sur les plateformes dont les implémentations de port de débogage ne peuvent pas être décrites à l’aide de DBGP.

Debug Port Table 2 (DBG2)

Tableau 1. Format Debug Port Table 2

Le tableau 1 définit les champs dans DBG2.

Champ Longueur d’octets Décalage d’octets Description
En-tête
Signature 4 0 'DBG2'. Signature pour la table de port de débogage 2.
Longueur 4 4 Longueur, en octets, de l’intégralité du tableau de port de débogage 2.
Révision 1 8 Pour cette version de la spécification, cette valeur est 0.
Somme de contrôle 1 9 La table entière doit être égale à zéro.
OEM ID 6 10 ID du fabricant d’équipement d’origine (OEM).
OEM Table ID 8 16 Pour la table de port de débogage 2, l’ID de table est l’ID de modèle du fabricant.
Révision OEM 4 24 Révision OEM de la table de port de débogage 2 pour l’ID de table OEM fourni.
ID du créateur 4 28 ID de fournisseur de l’utilitaire qui a créé la table.
Révision du créateur 4 32 Révision de l’utilitaire qui a créé la table.
OffsetDbgDeviceInfo 4 36 Décalage, en octets, du début de cette table vers la première entrée de structure Informations sur l’appareil de débogage.
NumberDbgDeviceInfo 4 40 Indique le nombre d’entrées de structure Informations sur l’appareil de débogage.
Structure d’informations de périphérique de débogage[NumberDbgDeviceInfo] Variable OffsetDbgDeviceInfo Liste des structures Debug Device Information pour cette plateforme. Le format de structure est défini dans la section Structure d’informations sur le périphérique de débogage, plus loin dans ce document.

Structure d’informations sur les appareils de débogage

Tableau 2. Format de structure Debug Device Information

Champ Longueur d’octets Décalage d’octets Description
Révision 1 0 Révision de la structure Informations sur l’appareil de débogage. Pour cette version de la spécification, il doit s’agir de 0.
Longueur 2 1 Longueur, en octets, de cette structure, y compris NamespaceString et OEMData.
NumberofGenericAddressRegisters 1 3 Nombre de registres d’adresses génériques en cours d’utilisation.
NamespaceStringLength 2 4 Longueur, en octets, de NamespaceString, y compris les caractères NUL.
NamespaceStringOffset 2 6 Décalage, en octets, du début de cette structure vers le champ NamespaceString[]. Cette valeur doit être valide, car cette chaîne doit être présente.
OemDataLength 2 8 Longueur, en octets, du bloc de données OEM.
OemDataOffset 2 10 Décalage, en octets, vers le champ OemData[] à partir du début de cette structure. Cette valeur sera 0 si aucune donnée OEM n’est présente.
Type de port 2 12 Type de port de débogage pour cet appareil de débogage. Chacune de ces valeurs aura une valeur de sous-type correspondante, comme indiqué dans le tableau 3.
Sous-type de port 2 14 Sous-type de port de débogage pour cet appareil de débogage. Voir le tableau 3.
Réservé 2 16 Réservé, doit être 0.
BaseAddressRegisterOffset 2 18 Décalage, en octets, du début de cette structure vers le champ BaseaddressRegister[].
AddressSizeOffset 2 20 Décalage, en octets, du début de cette structure vers le champ AddressSize[].
BaseAddressRegister[] (NumberofGenericAddressRegisters) * 12 BaseAddressRegisterOffset Tableau d’adresses génériques.
AddressSize[] (NumberofGenericAddressRegisters) * 4 AddressSizeOffset Tableau de tailles d’adresses correspondant à chaque adresse générique ci-dessus.
NamespaceString[] NamespaceStringLength NamespaceStringOffset Chaîne ASCII terminée par nul pour identifier de manière unique cet appareil. Cette chaîne se compose d’une référence complète à l’objet qui représente cet appareil dans l’espace de noms ACPI. S’il n’existe aucun périphérique d’espace de noms, NamespaceString[] ne doit contenir qu’un seul ' . Caractère (période ASCII).
OemData[] OemDataLength OemDataOffset Données oem de longueur variable facultatives.

Tableau 3. Types et sous-types de ports de débogage

Port Type Subtype Description
Réservé 0x0000 – 0x7FFF et 0xFFFF Tous Réservé (ne pas utiliser)
Série 0x8000 0x0000 Entièrement compatible 16550
0x0001 Sous-ensemble 16550 compatible avec DBGP Revision 1
0x0002 MAX311xE SPI UART
0x0003 Arm PL011 UART
0x0004 MSM8x60 (par exemple, 8960)
0x0005 Nvidia 16550
0x0006 TI OMAP
0x0007 Réservé (ne pas utiliser)
0x0008 APM88xxxx
0x0009 MSM8974
0x000A SAM5250
0x000B Intel USIF
0x000C i.MX 6
0x000D (déconseillé) Arm SBSA (2.x uniquement) UART générique prenant en charge uniquement les accès 32 bits
0x000E UART générique SBSA Arm
0x000F Arm DCC
0x0010 BCM2835
0x0011 SDM845 avec une fréquence d’horloge de 1,8432 MHz
0x0012 Compatible 16550 avec les paramètres définis dans la structure d’adresse générique
0x0013 SDM845 avec une fréquence d’horloge de 7,372 MHz
0x0014 Intel LPSS
0x0015 Console SBI RISC-V (tout mécanisme SBI pris en charge)
0x0016 – 0xFFFF Réservé (pour une utilisation ultérieure)
1394 0x8001 0x0000 Interface du contrôleur d’hôte standard IEEE1394
0x0001 – 0xFFFF Réservé (pour une utilisation ultérieure)
USB 0x8002 0x0000 Contrôleur compatible XHCI avec interface de débogage
0x0001 Contrôleur conforme à EHCI avec interface de débogage
0x0002 – 0x0006 Réservé (ne pas utiliser)
0x0007 – 0xFFFF Réservé (pour une utilisation ultérieure)
Net 0x8003 NNNN NNNN doit être un ID de fournisseur affecté par pci valide
0x8004 Tous Réservé (ne pas utiliser)
Réservé 0x8005 – 0xFFFE Tous Réservé (pour une utilisation ultérieure)

Remarque sur les champs de la structure d’adresse générique

  • La structure d’adresse générique dans BaseAddressRegister[0] est utilisée pour spécifier la largeur de bits du registre et la taille d’accès utilisées par certains sous-types série.

  • Les champs ID de l’espace d’adressage et Décalage du bit d’enregistrement doivent être 0.

  • Le champ Register Bit Width contient la foulée de registre et doit avoir une puissance de 2 qui est au moins aussi grande que la taille d’accès. Sur les plateformes 32 bits, cette valeur ne peut pas dépasser 32. Sur les plateformes 64 bits, cette valeur ne peut pas dépasser 64.

  • Le champ Taille d’accès permet de déterminer si les accès byte, WORD, DWORD ou QWORD doivent être utilisés. Les accès QWORD ne sont valides que sur les architectures 64 bits.

Remarque sur les UART basés sur 16550

Il existe trois sous-types d’interface qui peuvent être utilisés pour les UART basés sur 16550. Les différences entre elles sont subtiles mais importantes.

  • Le sous-type d’interface 0x0 fait référence à un port série qui utilise les E/S de port « hérités », comme indiqué sur les plateformes x86. Ce type doit être évité sur les plateformes qui utilisent des E/S mappées en mémoire, telles qu’ARM ou RISC-V.

  • Le sous-type d’interface 0x1 prend en charge les UART mappés en mémoire, mais uniquement ceux qui sont déscribables dans la table DBGP ACPI. Les implémentations de système d’exploitation peuvent traiter cela comme équivalent à un port de débogage fourni par DBGP et respecter uniquement le champ Adresse de base de la structure d’adresse générique.

  • Le sous-type d’interface 0x12 est le choix le plus flexible et est recommandé lors de l’exécution de systèmes d’exploitation compatibles sur de nouvelles plateformes. Ce sous-type prend en charge tous les ports série qui peuvent être décrits par les sous-types 0x0 et 0x1, ainsi que par les nouveaux ports, tels que ceux nécessitant des tailles d’accès non traditionnelles et des largeurs de bits dans la structure d’adresse générique.

Ressources

Spécification ACPI