Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
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:
- Microsoft Community Promise, disponibile all'indirizzo
https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx- 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.