Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato specifikace definuje formát tabulky portu ladění 2 (DBG2), který se používá ve firmwaru platformy k popisu ladicí porty dostupné v systému. Tyto informace se vztahují na následující operační systémy: Windows 8 a novější.
Odkazy a zdroje, které jsou zde popsány, jsou uvedeny na konci tohoto dokumentu.
Oznámení o patentu: Společnost Microsoft zpřístupňuje určitá patentová práva pro provádění této specifikace ve dvou možnostech:
- Microsoft Community Promise, k dispozici na adrese
https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx- Smlouva o konečné specifikaci Open Web Foundation verze 1.0 ("OWF 1.0") od 1. října 2012, která je k dispozici na adrese
http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.
Document History
| Date | Change |
|---|---|
| 29. listopadu 2011 | First publication. |
| 22. května 2012 | Aktualizace tabulky 3 na konečné podporované platformy pro Windows 8 |
| 10. srpna 2015 | Aktualizované oznámení o patentu. |
| 6. října 2015 | Přidání nových podtypů sériového ladění (Arm SBSA UART, Arm DCC) |
| 10. prosince 2015 | Přidání nového podtypu sériového ladění (BCM2835) |
| 31. května 2017 | Přidání nového podtypu sériového ladění (i.MX6, obecná struktura adres 16550 kompatibilní) |
| 11. června 2020 | Přidání nového podtypu sériového ladění (SDM845v2) |
| 1. září 2020 | Převedený dokument na syntaxi Markdownu a změny formátování |
| 21. září 2020 | Přidání nového podtypu sériového ladění (IALPSS) |
| 17. února 2021 | Zdokumentovat všechny známé podtypy sériového ladění |
| 10. dubna 2023 | Přidání nového podtypu sériového ladění (RISC-V) a přidání objasnění informací o podtypech kompatibilních s 16550 |
Introduction
Microsoft vyžaduje ladicí port ve všech systémech. Microsoft definuje tabulku specifickou pro operační systém (DBG2), aby popsala ladicí porty dostupné na platformě. Tato tabulka určuje jeden nebo více nezávislých portů pro účely ladění. Přítomnost tabulky portů ladění označuje, že systém obsahuje ladicí port. Tabulka obsahuje informace o konfiguraci portu ladění. Tabulka se nachází v systémové paměti s jinými tabulkami ROZHRANÍ ACPI (Advanced Configuration and Power Interface) a musí být odkazována v tabulce popisů kořenového systému ACPI (RSDT).
Tabulka DBG2 nahrazuje tabulku portů ladění ACPI (DBGP) na platformách, jejichž implementace ladicího portu nelze popsat pomocí DBGP.
Ladicí tabulka portů 2 (DBG2)
Table 1. Ladicí formát tabulky portů 2
Tabulka 1 definuje pole v DBG2.
| Field | Byte length | Byte offset | Description |
|---|---|---|---|
| Header | |||
| Signature | 4 | 0 | 'DBG2'. Podpis pro ladicí tabulku portů 2. |
| Length | 4 | 4 | Délka v bajtech celé tabulky portu ladění 2. |
| Revision | 1 | 8 | Pro tuto verzi specifikace je tato hodnota 0. |
| Checksum | 1 | 9 | Celá tabulka musí sčítat na nulu. |
| OEM ID | 6 | 10 | ID výrobce originálního vybavení (OEM). |
| ID tabulky OEM | 8 | 16 | Pro tabulku portu ladění 2 je ID tabulky ID modelu výrobce. |
| OEM Revision | 4 | 24 | Revize OEM tabulky portu ladění 2 pro zadané ID tabulky OEM |
| Creator ID | 4 | 28 | ID dodavatele nástroje, který vytvořil tabulku. |
| Creator Revision | 4 | 32 | Revize nástroje, který vytvořil tabulku. |
| OffsetDbgDeviceInfo | 4 | 36 | Posun v bajtech od začátku této tabulky k první položce Struktury informací o zařízení ladění. |
| NumberDbgDeviceInfo | 4 | 40 | Určuje počet položek struktury Ladicí informace o zařízení. |
| Debug Device Information Structure[NumberDbgDeviceInfo] | Variable | OffsetDbgDeviceInfo | Seznam struktur informací o zařízení ladění pro tuto platformu. Formát struktury je definován v části Ladicí struktura informací o zařízení, dále v tomto dokumentu. |
Struktura informací o zařízení ladění
Table 2. Ladění formátu struktury informací o zařízení
| Field | Byte length | Byte offset | Description |
|---|---|---|---|
| Revision | 1 | 0 | Revize struktury Informací o zařízení ladění Pro tuto verzi specifikace musí být tato hodnota 0. |
| Length | 2 | 1 | Délka v bajtech této struktury, včetně NamespaceString a OEMData. |
| NumberofGenericAddressRegisters | 1 | 3 | Počet registrů obecných adres, které se používají. |
| NamespaceStringLength | 2 | 4 | Délka řetězce názvů v bajtech včetně znaků NUL |
| NamespaceStringOffset | 2 | 6 | Posun v bajtech od začátku této struktury do pole NamespaceString[]. Tato hodnota musí být platná, protože tento řetězec musí být k dispozici. |
| OemDataLength | 2 | 8 | Délka datového bloku OEM v bajtech |
| OemDataOffset | 2 | 10 | Posun v bajtech na pole OemData[] od začátku této struktury. Tato hodnota bude 0, pokud nejsou k dispozici žádná data OEM. |
| Port Type | 2 | 12 | Typ portu ladění pro toto ladicí zařízení Každá z těchto hodnot bude mít odpovídající hodnotu podtypu, jak je znázorněno v tabulce 3. |
| Port Subtype | 2 | 14 | Ladění podtypu portu pro toto ladicí zařízení Viz tabulka 3. |
| Reserved | 2 | 16 | Vyhrazeno musí být 0. |
| BaseAddressRegisterOffset | 2 | 18 | Posun v bajtech od začátku této struktury do pole BaseaddressRegister[]. |
| AddressSizeOffset | 2 | 20 | Posun v bajtech od začátku této struktury do pole AddressSize[]. |
| BaseAddressRegister[] | (NumberofGenericAddressRegisters) * 12 | BaseAddressRegisterOffset | Pole obecných adres |
| AddressSize[] | (NumberofGenericAddressRegisters) * 4 | AddressSizeOffset | Pole velikostí adres odpovídajících každé obecné adrese výše |
| NamespaceString[] | NamespaceStringLength | NamespaceStringOffset | Řetězec ASCII ukončený NUL, který jednoznačně identifikuje toto zařízení. Tento řetězec se skládá z plně kvalifikovaného odkazu na objekt, který představuje toto zařízení v oboru názvů ACPI. Pokud neexistuje žádné zařízení oboru názvů, musí obor názvů [] obsahovat pouze jednu hodnotu .. Znak tečky (ASCII). |
| OemData[] | OemDataLength | OemDataOffset | Volitelná data specifická pro OEM s proměnlivou délkou. |
Table 3. Ladění typů portů a podtypů
| Port | Typ | Subtype | Description |
|---|---|---|---|
| Reserved | 0x0000 – 0x7FFF a 0xFFFF | All | Rezervované (Nepoužívat) |
| Serial | 0x8000 | 0x0000 | Fully 16550-compatible |
| 0x0001 | Podmnožina 16550 kompatibilní s verzí DBGP Revision 1 | ||
| 0x0002 | MAX311xE SPI UART | ||
| 0x0003 | Arm PL011 UART | ||
| 0x0004 | MSM8x60 (např. 8960) | ||
| 0x0005 | NVIDIA 16550 | ||
| 0x0006 | TI OMAP | ||
| 0x0007 | Rezervované (Nepoužívat) | ||
| 0x0008 | APM88xxxx | ||
| 0x0009 | MSM8974 | ||
| 0x000A | SAM5250 | ||
| 0x000B | Intel USIF | ||
| 0x000C | i.MX 6 | ||
| 0x000D | (zastaralé) Arm SBSA (pouze 2.x) Generic UART podporující pouze 32bitové přístupy | ||
| 0x000E | Arm SBSA Generic UART | ||
| 0x000F | Arm DCC | ||
| 0x0010 | BCM2835 | ||
| 0x0011 | SDM845 s hodinovou rychlostí 1,8432 MHz | ||
| 0x0012 | 16550 kompatibilní s parametry definovanými v obecné struktuře adres | ||
| 0x0013 | SDM845 s hodinovou rychlostí 7,372 MHz | ||
| 0x0014 | Intel LPSS | ||
| 0x0015 | RISC-V konzoly SBI (jakýkoli podporovaný mechanismus SBI) | ||
| 0x0016 – 0xFFFF | Vyhrazeno (pro budoucí použití) | ||
| 1394 | 0x8001 | 0x0000 | IEEE1394 rozhraní standardního hostitelského kontroleru |
| 0x0001 – 0xFFFF | Vyhrazeno (pro budoucí použití) | ||
| USB | 0x8002 | 0x0000 | Kontroler kompatibilní s XHCI s rozhraním ladění |
| 0x0001 | Kontroler kompatibilní s technologií EHCI s rozhraním ladění | ||
| 0x0002 – 0x0006 | Rezervované (Nepoužívat) | ||
| 0x0007 – 0xFFFF | Vyhrazeno (pro budoucí použití) | ||
| Net | 0x8003 | NNNN | NNNN musí být platné ID dodavatele přiřazeného pci. |
| 0x8004 | All | Rezervované (Nepoužívat) | |
| Reserved | 0x8005 – 0xFFFE | All | Vyhrazeno (pro budoucí použití) |
Poznámka k polím obecné struktury adres
Obecná struktura adresy v BaseAddressRegister[0] slouží k určení šířky bitu registru a velikosti přístupu používané některými sériovými podtypy.
Id adresního prostoru a pole Posun bitů registru musí být 0.
Pole Registrovat bitovou šířku obsahuje krok registru a musí být výkonem 2, který je alespoň tak velký jako velikost přístupu. Na 32bitových platformách nemůže tato hodnota překročit 32. Na 64bitových platformách tato hodnota nesmí překročit 64.
Pole Velikost přístupu slouží k určení, jestli se mají používat bajty, WORD, DWORD nebo QWORD. Přístupy QWORD jsou platné pouze v 64bitových architekturách.
Poznámka k UART založeným na 16550
Existují tři podtypy rozhraní, které lze použít pro rozhraní UART založených na 16550. Rozdíly mezi nimi jsou ještě důležité.
Podtyp rozhraní 0x0 odkazuje na sériový port, který používá "starší" vstupně-výstupní operace portu, jak je vidět na platformách založených na platformě x86. Tento typ by se měl vyhnout na platformách, které používají V/V mapované paměti, jako je ARM nebo RISC-V.
Podtyp rozhraní 0x1 podporuje mapování paměti UART, ale pouze ty, které jsou popsány v tabulce DBGP ACPI. Implementace operačního systému mohou zacházet jako s ekvivalentem ladicího portu poskytnutého dbGP a respektovat pouze pole Základní adresa obecné struktury adres.
Podtyp rozhraní 0x12 je nejflexibilnější volbou a doporučuje se při spouštění kompatibilních operačních systémů na nových platformách. Tento podtyp podporuje všechny sériové porty, které můžou popisovat podtypy 0x0 a 0x1, a také nové porty, například ty, které vyžadují nestandardní velikosti přístupu a šířky bitů v obecné struktuře adres.