Sdílet prostřednictvím


Microsoft Debug Port Table 2 (DBG2)

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:

  1. Microsoft Community Promise, k dispozici na adrese https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
  2. 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.

Resources

ACPI Specification