Condividi tramite


Microsoft Debug Port Table 2 (DBG2)

Questa specifica definisce il formato della tabella porta di debug 2 (DBG2), usata nel firmware della piattaforma per descrivere le porte di debug disponibili nel sistema. Queste informazioni si applicano ai sistemi operativi seguenti: Windows 8 e versioni successive.

I riferimenti e le risorse illustrati di seguito sono elencati alla fine di questo documento.

Nota sul brevetto: Microsoft sta rendendo disponibili determinati diritti di brevetto per le implementazioni di questa specifica in due opzioni:

  1. Microsoft Community Promise, disponibile all'indirizzo https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
  2. Open Web Foundation Final Specification Agreement versione 1.0 ("OWF 1.0") a partire dal 1° ottobre 2012, disponibile all'indirizzo http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.

Document History

Date Change
29 novembre 2011 First publication.
22 maggio 2012 Aggiornamenti alla tabella 3 per le piattaforme supportate finali per Windows 8.
10 agosto 2015 Aggiornamento dell'avviso sul brevetto.
6 ottobre 2015 Aggiunta di nuovi sottotipi di debug seriale (ARM SBSA UART, Arm DCC)
10 dicembre 2015 Aggiunta del nuovo sottotipo di debug seriale (BCM2835)
31 maggio 2017 Aggiunta del nuovo sottotipo di debug seriale (i.MX6, struttura di indirizzi generica compatibile con 16550)
11 giugno 2020 Aggiunta del nuovo sottotipo di debug seriale (SDM845v2)
1 settembre 2020 Documento convertito in sintassi Markdown e modifiche di formattazione.
21 settembre 2020 Aggiunta del nuovo sottotipo di debug seriale (IALPSS)
17 febbraio 2021 Documentare tutti i sottotipi di debug seriale noti
10 aprile 2023 Aggiunta del nuovo sottotipo di debug seriale (RISC-V) e aggiunta di informazioni chiare sui sottotipi compatibili con 16550

Introduction

Microsoft richiede una porta di debug in tutti i sistemi. Per descrivere le porte di debug disponibili in una piattaforma, Microsoft definisce una tabella specifica del sistema operativo (DBG2). Questa tabella specifica una o più porte indipendenti a scopo di debug. La presenza di una tabella delle porte di debug indica che il sistema include una porta di debug. La tabella contiene informazioni sulla configurazione della porta di debug. La tabella si trova nella memoria di sistema con altre tabelle ACPI (Advanced Configuration and Power Interface) e deve essere fatto riferimento nella tabella descrizione del sistema radice ACPI (RSDT).

La tabella DBG2 sostituisce la tabella DBGP (ACPI Debug Port Table) sulle piattaforme le cui implementazioni delle porte di debug non possono essere descritte tramite DBGP.

Tabella Porta di Debug 2 (DBG2)

Table 1. Formato debug tabella porta 2

La tabella 1 definisce i campi in DBG2.

Field Byte length Byte offset Description
Header
Signature 4 0 'DBG2'. Firma per la tabella porta di debug 2.
Length 4 4 Lunghezza, in byte, dell'intera tabella porta di debug 2.
Revision 1 8 Per questa versione della specifica, questo valore è 0.
Checksum 1 9 L'intera tabella deve sommarsi a zero.
OEM ID 6 10 ID oem (Original Equipment Manufacturer).
ID tabella OEM 8 16 Per La tabella 2 della porta di debug, l'ID tabella è l'ID modello produttore.
OEM Revision 4 24 Revisione OEM della tabella delle porte di debug 2 per l'ID tabella OEM fornito.
Creator ID 4 28 ID fornitore dell'utilità che ha creato la tabella.
Creator Revision 4 32 Revisione dell'utilità che ha creato la tabella.
OffsetDbgDeviceInfo 4 36 Offset, in byte, dall'inizio di questa tabella alla prima voce Della struttura Informazioni sul dispositivo di debug.
NumberDbgDeviceInfo 4 40 Indica il numero di voci della struttura Informazioni sul dispositivo di debug.
Struttura delle informazioni sul dispositivo di debug[NumberDbgDeviceInfo] Variable OffsetDbgDeviceInfo Elenco delle strutture Di informazioni sul dispositivo di debug per questa piattaforma. Il formato della struttura è definito nella sezione Debug delle informazioni sul dispositivo, più avanti in questo documento.

Struttura delle informazioni sul dispositivo di debug

Table 2. Formato della struttura delle informazioni sul dispositivo di debug

Field Byte length Byte offset Description
Revision 1 0 Revisione della struttura Debug delle informazioni sul dispositivo. Per questa versione della specifica, deve essere 0.
Length 2 1 Lunghezza, in byte, di questa struttura, inclusi NamespaceString e OEMData.
NumberofGenericAddressRegisters 1 3 Numero di registri di indirizzi generici in uso.
NamespaceStringLength 2 4 Lunghezza, in byte, di NamespaceString, inclusi i caratteri NUL.
NamespaceStringOffset 2 6 Offset, in byte, dall'inizio di questa struttura al campo NamespaceString[]. Questo valore deve essere valido perché questa stringa deve essere presente.
OemDataLength 2 8 Lunghezza, in byte, del blocco di dati OEM.
OemDataOffset 2 10 Offset, in byte, al campo OemData[] dall'inizio di questa struttura. Questo valore sarà 0 se non sono presenti dati OEM.
Port Type 2 12 Tipo di porta di debug per questo dispositivo di debug. Ognuno di questi valori avrà un valore di sottotipo corrispondente, come illustrato nella tabella 3.
Port Subtype 2 14 Sottotipo di porta di debug per questo dispositivo di debug. Vedere la tabella 3.
Reserved 2 16 Riservato, deve essere 0.
BaseAddressRegisterOffset 2 18 Offset, in byte, dall'inizio di questa struttura al campo BaseaddressRegister[].
AddressSizeOffset 2 20 Offset, in byte, dall'inizio di questa struttura al campo AddressSize[].
BaseAddressRegister[] (NumberofGenericAddressRegisters) * 12 BaseAddressRegisterOffset Matrice di indirizzi generici.
AddressSize[] (NumberofGenericAddressRegisters) * 4 AddressSizeOffset Matrice di dimensioni degli indirizzi corrispondenti a ogni indirizzo generico precedente.
NamespaceString[] NamespaceStringLength NamespaceStringOffset Stringa ASCII con terminazione NUL per identificare in modo univoco questo dispositivo. Questa stringa è costituita da un riferimento completo all'oggetto che rappresenta questo dispositivo nello spazio dei nomi ACPI. Se non esiste alcun dispositivo dello spazio dei nomi, NamespaceString[] deve contenere solo un singolo '.' Carattere (punto ASCII).
OemData[] OemDataLength OemDataOffset Dati specifici dell'OEM a lunghezza variabile facoltativi.

Table 3. Eseguire il debug di tipi di porta e sottotipi

Port Type Subtype Description
Reserved 0x0000 : 0x7FFF e 0xFFFF All Riservato (Non usare)
Serial 0x8000 0x0000 Fully 16550-compatible
0x0001 Subset 16550 compatibile con DBGP Revisione 1
0x0002 MAX311xE SPI UART
0x0003 Arm PL011 UART
0x0004 MSM8x60 (ad esempio 8960)
0x0005 NVIDIA 16550
0x0006 TI OMAP
0x0007 Riservato (Non usare)
0x0008 APM88xxxx
0x0009 MSM8974
0x000A SAM5250
0x000B Intel USIF
0x000C i.MX 6
0x000D (deprecato) ARM SBSA (solo 2.x) UART generico che supporta solo accessi a 32 bit
0x000E Arm SBSA Generic UART
0x000F Arm DCC
0x0010 BCM2835
0x0011 SDM845 con frequenza di clock di 1,8432 MHz
0x0012 Compatibile con la versione 16550 con i parametri definiti nella struttura degli indirizzi generici
0x0013 SDM845 con frequenza di clock di 7,372 MHz
0x0014 Intel LPSS
0x0015 RISC-V console SBI (qualsiasi meccanismo SBI supportato)
0x0016 - 0xFFFF Riservato (per uso futuro)
1394 0x8001 0x0000 interfaccia del controller host standard IEEE1394
0x0001 : 0xFFFF Riservato (per uso futuro)
USB 0x8002 0x0000 Controller compatibile con XHCI con l'interfaccia di debug
0x0001 Controller conforme a EHCI con l'interfaccia di debug
0x0002 : 0x0006 Riservato (Non usare)
0x0007 : 0xFFFF Riservato (per uso futuro)
Net 0x8003 NNNN NNNN deve essere un ID fornitore assegnato da PCI valido
0x8004 All Riservato (Non usare)
Reserved 0x8005 : 0xFFFE All Riservato (per uso futuro)

Nota sui campi della struttura degli indirizzi generici

  • La struttura di indirizzi generici in BaseAddressRegister[0] viene usata per specificare la larghezza e le dimensioni di accesso del registro usate da alcuni sottotipi seriali.

  • I campi ID spazio indirizzi e Offset di bit di registrazione devono essere 0.

  • Il campo Registra larghezza bit contiene lo stride di registro e deve essere una potenza pari almeno a 2, pari almeno alla dimensione di accesso. Nelle piattaforme a 32 bit questo valore non può superare 32. Nelle piattaforme a 64 bit questo valore non può superare 64.

  • Il campo Dimensioni di accesso viene utilizzato per determinare se utilizzare gli accessi byte, WORD, DWORD o QWORD. Gli accessi QWORD sono validi solo nelle architetture a 64 bit.

Nota su 16550 UART basati su 16550

Esistono tre sottotipi di interfaccia che possono essere usati per 16550 UART basati su 1650. Le differenze tra di esse sono sottili ma importanti.

  • Il sottotipo di interfaccia 0x0 fa riferimento a una porta seriale che usa l'I/O di porta "legacy", come illustrato nelle piattaforme basate su x86. Questo tipo deve essere evitato su piattaforme che usano operazioni di I/O mappate alla memoria, ad esempio ARM o RISC-V.

  • Il sottotipo di interfaccia 0x1 supporta UART mappati alla memoria, ma solo quelli che possono essere descritti nella tabella ACPI DBGP. Le implementazioni del sistema operativo possono trattarlo come equivalente a una porta di debug fornita da DBGP e rispettare solo il campo Indirizzo di base della struttura degli indirizzi generici.

  • Il sottotipo di interfaccia 0x12 è la scelta più flessibile ed è consigliabile quando si eseguono sistemi operativi compatibili su nuove piattaforme. Questo sottotipo supporta tutte le porte seriali che possono essere descritte dai sottotipi 0x0 e 0x1, oltre a quelle nuove, ad esempio quelle che richiedono dimensioni di accesso non tradizionali e larghezze di bit nella struttura degli indirizzi generici.

Resources

ACPI Specification