Compartilhar via


Tabela de porta de depuração da Microsoft 2 (DBG2)

Essa especificação define o formato da Tabela de Porta de Depuração 2 (DBG2), usada no firmware da plataforma para descrever as portas de depuração disponíveis no sistema. Essas informações se aplicam aos seguintes sistemas operacionais: Windows 8 e mais recentes.

As referências e os recursos discutidos aqui estão listados no final deste artigo.

Aviso de patente: a Microsoft está disponibilizando certos direitos de patente para implementações desta especificação em duas opções:

  1. Promessa da Comunidade da Microsoft, disponível em https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
  2. O Contrato de Especificação Final do Open Web Foundation versão 1.0 ("OWF 1.0") a partir de 1º de outubro de 2012, disponível em http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.

Document History

Date Change
29 de novembro de 2011 First publication.
22 de maio de 2012 Atualizações para a Tabela 3 por plataformas com suporte final para Windows 8.
10 de agosto de 2015 Aviso de patente atualizado.
6 de outubro de 2015 Adicionados novos subtipos de depuração serial (Arm SBSA UART, Arm DCC)
10 de dezembro de 2015 Adicionado novo subtipo de depuração serial (BCM2835)
31 de maio de 2017 Adicionado novo subtipo de depuração serial (ou seja, MX6, estrutura de endereço genérica compatível com 16550)
11 de junho de 2020 Adicionado novo subtipo de depuração serial (SDM845v2)
1 de setembro de 2020 Documento convertido em sintaxe markdown e alterações de formatação.
21 de setembro de 2020 Adicionado novo subtipo de depuração serial (IALPSS)
17 de fevereiro de 2021 Documentar todos os subtipos de depuração serial conhecidos
10 de abril de 2023 Adicionado novo subtipo de depuração serial (RISC-V) e adição de informações de esclarecimento sobre subtipos compatíveis com 16550

Introduction

A Microsoft requer uma porta de depuração em todos os sistemas. Para descrever as portas de depuração disponíveis em uma plataforma, a Microsoft define uma tabela específica do sistema operacional (DBG2). Esta tabela especifica uma ou mais portas independentes para fins de depuração. A presença de uma tabela de porta de depuração indica que o sistema inclui uma porta de depuração. A tabela contém informações sobre a configuração da porta de depuração. A tabela está localizada na memória do sistema com outras tabelas ACPI (Advanced Configuration and Power Interface) e deve ser referenciada na Tabela de Descrição do Sistema Raiz do ACPI (RSDT).

A tabela DBG2 substitui a Tabela de Porta de Depuração de ACPI (DBGP) em plataformas cujas implementações de porta de depuração não podem ser descritas usando DBGP.

Porta de depuração Tabela 2 (DBG2)

Table 1. Formato da Tabela de Porta de Depuração 2

A Tabela 1 define os campos no DBG2.

Field Byte length Byte offset Description
Header
Signature 4 0 'DBG2'. Assinatura da Tabela de Porta de Depuração 2.
Length 4 4 Comprimento, em bytes, de toda a Tabela de Porta de Depuração 2.
Revision 1 8 Para esta versão da especificação, esse valor é 0.
Checksum 1 9 A tabela inteira deve somar a zero.
OEM ID 6 10 ID do fabricante do equipamento original (OEM).
ID da tabela OEM 8 16 Para a Tabela de Porta de Depuração 2, a ID da tabela é a ID do modelo do fabricante.
OEM Revision 4 24 Revisão OEM da Tabela de Porta de Depuração 2 para a ID da Tabela OEM fornecida.
Creator ID 4 28 ID do fornecedor do utilitário que criou a tabela.
Creator Revision 4 32 Revisão do utilitário que criou a tabela.
OffsetDbgDeviceInfo 4 36 Deslocamento, em bytes, desde o início desta tabela até a primeira entrada da estrutura de Informações do Dispositivo de Depuração.
NumberDbgDeviceInfo 4 40 Indica o número de entradas da estrutura de Informações do Dispositivo de Depuração.
Estrutura de informações do dispositivo de depuração[NumberDbgDeviceInfo] Variable OffsetDbgDeviceInfo Uma lista de estruturas de Informações do Dispositivo de Depuração para esta plataforma. O formato da estrutura é definido na seção Depurar Informações do Dispositivo, posteriormente neste documento.

Estrutura Depurar Informações do Dispositivo

Table 2. Formato da estrutura Depurar Informações do Dispositivo

Field Byte length Byte offset Description
Revision 1 0 Revisão da estrutura Depurar Informações do Dispositivo. Para esta versão da especificação, isso deve ser 0.
Length 2 1 Comprimento, em bytes, dessa estrutura, incluindo NamespaceString e OEMData.
NumberofGenericAddressRegisters 1 3 Número de registros de endereço genéricos em uso.
NamespaceStringLength 2 4 Comprimento, em bytes, de NamespaceString, incluindo caracteres NUL.
NamespaceStringOffset 2 6 Deslocamento, em bytes, desde o início dessa estrutura até o campo NamespaceString[]. Esse valor deve ser válido porque essa cadeia de caracteres deve estar presente.
OemDataLength 2 8 Comprimento, em bytes, do bloco de dados OEM.
OemDataOffset 2 10 Deslocamento, em bytes, para o campo OemData[] desde o início dessa estrutura. Esse valor será 0 se nenhum dado OEM estiver presente.
Port Type 2 12 Tipo de porta de depuração para este dispositivo de depuração. Cada um desses valores terá um valor de subtipo correspondente, conforme mostrado na Tabela 3.
Port Subtype 2 14 Subtipo de porta de depuração para este dispositivo de depuração. Consulte a Tabela 3.
Reserved 2 16 Reservado, deve ser 0.
BaseAddressRegisterOffset 2 18 Deslocamento, em bytes, desde o início dessa estrutura até o campo BaseaddressRegister[].
AddressSizeOffset 2 20 Deslocamento, em bytes, desde o início dessa estrutura até o campo AddressSize[].
BaseAddressRegister[] (NumberofGenericAddressRegisters) * 12 BaseAddressRegisterOffset Matriz de endereços genéricos.
AddressSize[] (NumberofGenericAddressRegisters) * 4 AddressSizeOffset Matriz de tamanhos de endereço correspondentes a cada endereço genérico acima.
NamespaceString[] NamespaceStringLength NamespaceStringOffset Cadeia de caracteres ASCII terminada por NUL para identificar exclusivamente esse dispositivo. Essa cadeia de caracteres consiste em uma referência totalmente qualificada ao objeto que representa esse dispositivo no namespace ACPI. Se nenhum dispositivo de namespace existir, NamespaceString[] deverá conter apenas um único '.' (Período ASCII).
OemData[] OemDataLength OemDataOffset Dados opcionais específicos do OEM de comprimento variável.

Table 3. Depurar tipos de porta e subtipos

Port Tipo Subtype Description
Reserved 0x0000 – 0x7FFF e 0xFFFF All Reservado (Não Usar)
Serial 0x8000 0x0000 Fully 16550-compatible
0x0001 Subconjunto 16550 compatível com a Revisão 1 do DBGP
0x0002 MAX311xE SPI UART
0x0003 Arm PL011 UART
0x0004 MSM8x60 (por exemplo, 8960)
0x0005 NVIDIA 16550
0x0006 TI OMAP
0x0007 Reservado (Não Usar)
0x0008 APM88xxxx
0x0009 MSM8974
0x000A SAM5250
0x000B Intel USIF
0x000C i.MX 6
0x000D (preterido) Arm SBSA (somente 2.x) UART genérico com suporte apenas a acessos de 32 bits
0x000E Arm SBSA Generic UART
0x000F Arm DCC
0x0010 BCM2835
0x0011 SDM845 com taxa de relógio de 1,8432 MHz
0x0012 Compatível com 16550 com parâmetros definidos na Estrutura de Endereços Genéricos
0x0013 SDM845 com taxa de relógio de 7,372 MHz
0x0014 Intel LPSS
0x0015 RISC-V console SBI (qualquer mecanismo de SBI com suporte)
0x0016 – 0xFFFF Reservado (para uso futuro)
1394 0x8001 0x0000 interface do controlador de host padrão IEEE1394
0x0001 – 0xFFFF Reservado (para uso futuro)
USB 0x8002 0x0000 Controlador compatível com XHCI com interface de depuração
0x0001 Controlador compatível com EHCI com interface de depuração
0x0002 – 0x0006 Reservado (Não Usar)
0x0007 – 0xFFFF Reservado (para uso futuro)
Net 0x8003 NNNN NNNN deve ser uma ID de Fornecedor atribuída por PCI válida
0x8004 All Reservado (Não Usar)
Reserved 0x8005 – 0xFFFE All Reservado (para uso futuro)

Observação nos campos da estrutura de endereço genérico

  • A Estrutura de Endereço Genérico em BaseAddressRegister[0] é usada para especificar a largura do bit de registro e o tamanho de acesso usados por alguns subtipos serial.

  • Os campos ID de Espaço de Endereço e Deslocamento de Bit de Registro devem ser 0.

  • O campo Registrar Largura de Bit contém o passo de registro e deve ser uma potência de 2 que seja pelo menos tão grande quanto o tamanho do acesso. Em plataformas de 32 bits, esse valor não pode exceder 32. Em plataformas de 64 bits, esse valor não pode exceder 64.

  • O campo Tamanho do Acesso é usado para determinar se os acessos byte, WORD, DWORD ou QWORD devem ser usados. Os acessos QWORD só são válidos em arquiteturas de 64 bits.

Observação em UARTs baseadas em 16550

Há três subtipos de interface que podem ser usados para UARTs baseados em 16550. As diferenças entre eles são sutis, mas importantes.

  • O subtipo de interface 0x0 refere-se a uma porta serial que usa e/S de porta "herdada", como visto em plataformas baseadas em x86. Esse tipo deve ser evitado em plataformas que usam E/S mapeada por memória, como ARM ou RISC-V.

  • O subtipo de interface 0x1 dá suporte a UARTs mapeados por memória, mas apenas os que são descrevendo na tabela ACPI do DBGP. As implementações do sistema operacional podem tratar isso como equivalente a uma porta de depuração fornecida pelo DBGP e honrar apenas o campo Endereço Base da Estrutura de Endereços Genérico.

  • O subtipo de interface 0x12 é a opção mais flexível e é recomendado ao executar sistemas operacionais compatíveis em novas plataformas. Esse subtipo dá suporte a todas as portas serial que podem ser descritas pelos subtipos 0x0 e 0x1, bem como as novas, como aquelas que exigem tamanhos de acesso não tradicionais e larguras de bit na Estrutura de Endereços Genérica.

Resources

ACPI Specification