Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esta 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. Estas informações aplicam-se aos seguintes sistemas operativos: Windows 8 e mais recentes.
As referências e 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:
- Promessa da Comunidade da Microsoft, disponível em
https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx- O Acordo de Especificação Final da 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 da Tabela 3 por plataformas finais suportadas para Windows 8. |
| Agosto 10, 2015 | Aviso de patente atualizado. |
| Outubro 6, 2015 | Adicionados novos subtipos de depuração serial (Arm SBSA UART, Arm DCC) |
| Dezembro 10, 2015 | Adicionado novo subtipo de depuração serial (BCM2835) |
| Maio 31, 2017 | Adicionado novo subtipo de depuração serial (compatível com i.MX6, Generic Address Structure 16550) |
| 11 de junho de 2020 | Adicionado novo subtipo de depuração serial (SDM845v2) |
| 1 de setembro de 2020 | Documento convertido para 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 adicionadas informações esclarecedoras sobre subtipos compatíveis com 16550 |
Introduction
A Microsoft requer uma porta de depuração em todos os sistemas. Para descrever a(s) porta(s) de depuração disponível(is) 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 ACPI (RSDT).
A tabela DBG2 substitui a ACPI Debug Port Table (DBGP) em plataformas cujas implementações de porta de depuração não podem ser descritas usando DBGP.
Tabela de Porta de Depuração 2 (DBG2)
Table 1. Formato da Tabela 2 da Porta de Depuração
A Tabela 1 define os campos no DBG2.
| Field | Byte length | Byte offset | Description |
|---|---|---|---|
| Header | |||
| Signature | 4 | 0 | 'DBG2'. Assinatura para Debug Port Tabela 2. |
| Length | 4 | 4 | Comprimento, em bytes, de toda a Tabela 2 da Porta de Depuração. |
| Revision | 1 | 8 | Para esta versão da especificação, esse valor é 0. |
| Checksum | 1 | 9 | A tabela inteira deve ser somada a zero. |
| OEM ID | 6 | 10 | ID do fabricante do equipamento original (OEM). |
| ID da tabela OEM | 8 | 16 | Para Debug Port Table 2, o ID da tabela é o ID do modelo do fabricante. |
| OEM Revision | 4 | 24 | Revisão OEM da Tabela 2 da Porta de Depuração para o ID da Tabela OEM fornecido. |
| 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, do início desta tabela para a primeira entrada da estrutura Debug Device Information. |
| NumberDbgDeviceInfo | 4 | 40 | Indica o número de entradas da estrutura Debug Device Information. |
| Depurar estrutura de informações do dispositivo[NumberDbgDeviceInfo] | Variable | OffsetDbgDeviceInfo | Uma lista de estruturas de Debug Device Information para esta plataforma. O formato da estrutura é definido na seção Debug Device Information structure, mais adiante neste documento. |
Depurar a estrutura de informações do dispositivo
Table 2. Depurar formato de estrutura de informações do dispositivo
| Field | Byte length | Byte offset | Description |
|---|---|---|---|
| Revision | 1 | 0 | Revisão da estrutura Debug Device Information. 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 registos de endereços genéricos em uso. |
| NamespaceStringLength | 2 | 4 | Comprimento, em bytes, de NamespaceString, incluindo caracteres NUL. |
| NamespaceStringOffset | 2 | 6 | Deslocamento, em bytes, do início dessa estrutura para 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 desta 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. Ver quadro 3. |
| Reserved | 2 | 16 | Reservado, deve ser 0. |
| BaseAddressRegisterOffset | 2 | 18 | Deslocamento, em bytes, do início desta estrutura para o campo BaseaddressRegister[]. |
| AddressSizeOffset | 2 | 20 | Deslocamento, em bytes, do início desta estrutura para o campo AddressSize[]. |
| BaseAddressRegister[] | (NúmerodeRegistos de Endereço Genérico) * 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 este 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[] deve conter apenas um único '.' (período ASCII). |
| OemData[] | OemDataLength | OemDataOffset | Dados opcionais específicos do OEM de comprimento variável. |
Table 3. Depurar tipos e subtipos de porta
| 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 DBGP Revisão 1 | ||
| 0x0002 | MAX311xE SPI UART | ||
| 0x0003 | Braço 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 (apenas 2.x) UART genérico que suporta apenas acessos de 32 bits | ||
| 0x000E | Arm SBSA UART Genérico | ||
| 0x000F | Arm DCC | ||
| 0x0010 | BCM2835 | ||
| 0x0011 | SDM845 com clock de 1,8432 MHz | ||
| 0x0012 | 16550-compatível com parâmetros definidos na Estrutura de Endereço Genérica | ||
| 0x0013 | SDM845 com clock de 7,372 MHz | ||
| 0x0014 | Intel LPSS | ||
| 0x0015 | RISC-V console SBI (qualquer mecanismo SBI suportado) | ||
| 0x0016 – 0xFFFF | Reservado (Para Uso Futuro) | ||
| 1394 | 0x8001 | 0x0000 | IEEE1394 Interface padrão do controlador host |
| 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 um ID de fornecedor atribuído por PCI válido |
| 0x8004 | All | Reservado (não usar) | |
| Reserved | 0x8005 – 0xFFFE | All | Reservado (Para Uso Futuro) |
Nota sobre os campos da Estrutura de Endereço Genérica
A Estrutura de Endereço Genérica em BaseAddressRegister[0] é usada para especificar a largura de bits do registro e o tamanho de acesso usados por alguns subtipos seriais.
Os campos ID do Espaço de Endereço e Deslocamento de Bit de Registro devem ser 0.
O campo Largura do Bit do Registro contém a passada do 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 de byte, WORD, DWORD ou QWORD devem ser usados. Os acessos QWORD só são válidos em arquiteturas de 64 bits.
Nota sobre UARTs baseadas em 16550
Existem três subtipos de interface que podem ser usados para UARTs baseadas 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 "legada" como visto em plataformas baseadas em x86. Esse tipo deve ser evitado em plataformas que usam E/S mapeadas pela memória, como ARM ou RISC-V.
O subtipo de interface 0x1 suporta UARTs mapeadas pela memória, mas apenas aquelas que são descritas na tabela ACPI 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ço Genérica.
O subtipo de interface 0x12 é a escolha mais flexível e é recomendado ao executar sistemas operacionais compatíveis em novas plataformas. Este subtipo suporta todas as portas seriais que podem ser descritas pelos subtipos 0x0 e 0x1, bem como novas, como aquelas que exigem tamanhos de acesso não tradicionais e larguras de bits na Estrutura de Endereço Genérica.