Compartir a través de


Tabla 2 de puerto de depuración de Microsoft (DBG2)

Esta especificación define el formato de la tabla de puertos de depuración 2 (DBG2), que se usa en el firmware de la plataforma para describir los puertos de depuración disponibles en el sistema. Esta información se aplica a los siguientes sistemas operativos: Windows 8 y versiones más recientes.

Las referencias y los recursos que se describen aquí se enumeran al final de este documento.

Aviso de patente: Microsoft está poniendo ciertos derechos de patente a disposición de las implementaciones de esta especificación en dos opciones:

  1. Promesa de la comunidad de Microsoft, disponible en https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
  2. El Acuerdo de Especificación Final de Open Web Foundation versión 1.0 ("OWF 1.0") a partir del 1 de octubre de 2012, disponible en http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.

Historial de documentos

Fecha Change
29 de noviembre de 2011 Primera publicación.
22 de mayo de 2012 Novedades a la tabla 3 por plataformas compatibles finales para Windows 8.
10 de agosto de 2015 Aviso de patente actualizado.
6 de octubre de 2015 Se han agregado nuevos subtipos de depuración serie (ARM SBSA UART, Arm DCC)
10 de diciembre de 2015 Se ha agregado un nuevo subtipo de depuración serie (BCM2835)
31 de mayo de 2017 Se ha agregado un nuevo subtipo de depuración serie (i.MX6, estructura de direcciones genéricas 16550 compatible)
11 de junio de 2020 Se ha agregado un nuevo subtipo de depuración serie (SDM845v2)
1 de septiembre de 2020 Documento convertido a cambios de formato y sintaxis de Markdown.
21 de septiembre de 2020 Se ha agregado un nuevo subtipo de depuración serie (IALPSS)
17 de febrero de 2021 Documentar todos los subtipos de depuración en serie conocidos
10 de abril de 2023 Se ha agregado un nuevo subtipo de depuración serie (RISC-V) y se ha agregado información aclarativa sobre los subtipos compatibles con 16550.

Introducción

Microsoft requiere un puerto de depuración en todos los sistemas. Para describir los puertos de depuración disponibles en una plataforma, Microsoft define una tabla específica del sistema operativo (DBG2). Esta tabla especifica uno o varios puertos independientes para fines de depuración. La presencia de una tabla de puertos de depuración indica que el sistema incluye un puerto de depuración. La tabla contiene información sobre la configuración del puerto de depuración. La tabla se encuentra en la memoria del sistema con otras tablas de Advanced Configuration and Power Interface (ACPI), y se debe hacer referencia a ella en la tabla de descripción del sistema raíz ACPI (RSDT).

La tabla DBG2 reemplaza la tabla de puertos de depuración ACPI (DBGP) en plataformas cuyas implementaciones de puerto de depuración no se pueden describir mediante DBGP.

Tabla de puertos de depuración 2 (DBG2)

Tabla 1. Formato de tabla 2 de puerto de depuración

La tabla 1 define los campos de DBG2.

Campo Longitud de bytes Desplazamiento de bytes Descripción
Encabezado
Signature 4 0 "DBG2". Firma para la tabla 2 del puerto de depuración.
Length 4 4 Longitud, en bytes, de toda la tabla de puertos de depuración 2.
Revisión 1 8 Para esta versión de la especificación, este valor es 0.
Suma de comprobación 1 9 Toda la tabla debe sumar a cero.
Id. de OEM 6 10 Identificador del fabricante de equipos originales (OEM).
Id. de tabla de OEM 8 16 En el caso de la tabla 2 de puerto de depuración, el identificador de tabla es el identificador del modelo de fabricante.
Revisión de OEM 4 24 Revisión de OEM de la tabla 2 de puerto de depuración para el identificador de tabla de OEM proporcionado.
Id. de creador 4 28 Identificador de proveedor de la utilidad que creó la tabla.
Revisión de Creator 4 32 Revisión de la utilidad que creó la tabla.
OffsetDbgDeviceInfo 4 36 Desplazamiento, en bytes, desde el principio de esta tabla hasta la primera entrada de la estructura Información del dispositivo de depuración.
NumberDbgDeviceInfo 4 40 Indica el número de entradas de estructura de información del dispositivo de depuración.
Depurar estructura de información del dispositivo[NumberDbgDeviceInfo] Variable OffsetDbgDeviceInfo Lista de estructuras de información del dispositivo de depuración para esta plataforma. El formato de estructura se define en la sección Estructura de información del dispositivo de depuración, más adelante en este documento.

Depuración de la estructura de información del dispositivo

Tabla 2. Depurar formato de estructura de la información del dispositivo

Campo Longitud de bytes Desplazamiento de bytes Descripción
Revisión 1 0 Revisión de la estructura de información del dispositivo de depuración. Para esta versión de la especificación, debe ser 0.
Length 2 1 Longitud, en bytes, de esta estructura, incluidos NamespaceString y OEMData.
NumberofGenericAddressRegisters 1 3 Número de registros de direcciones genéricas en uso.
NamespaceStringLength 2 4 Longitud, en bytes, de NamespaceString, incluidos los caracteres NUL.
NamespaceStringOffset 2 6 Desplazamiento, en bytes, desde el principio de esta estructura hasta el campo NamespaceString[]. Este valor debe ser válido porque esta cadena debe estar presente.
OemDataLength 2 8 Longitud, en bytes, del bloque de datos OEM.
OemDataOffset 2 10 Desplazamiento, en bytes, al campo OemData[] desde el principio de esta estructura. Este valor será 0 si no hay datos de OEM presentes.
Tipo de puerto 2 12 Tipo de puerto de depuración para este dispositivo de depuración. Cada uno de estos valores tendrá un valor de subtipo correspondiente, como se muestra en la tabla 3.
Subtipo de puerto 2 14 Subtipo de puerto de depuración para este dispositivo de depuración. Consulte la tabla 3.
Reservado 2 16 Reservado, debe ser 0.
BaseAddressRegisterOffset 2 18 Desplazamiento, en bytes, desde el principio de esta estructura hasta el campo BaseaddressRegister[].
AddressSizeOffset 2 20 Desplazamiento, en bytes, desde el principio de esta estructura hasta el campo AddressSize[].
BaseAddressRegister[] (NumberofGenericAddressRegisters) * 12 BaseAddressRegisterOffset Matriz de direcciones genéricas.
AddressSize[] (NumberofGenericAddressRegisters) * 4 AddressSizeOffset Matriz de tamaños de dirección correspondientes a cada dirección genérica anterior.
NamespaceString[] NamespaceStringLength NamespaceStringOffset Cadena ASCII terminada en NUL para identificar de forma única este dispositivo. Esta cadena consta de una referencia completa al objeto que representa este dispositivo en el espacio de nombres ACPI. Si no existe ningún dispositivo de espacio de nombres, NamespaceString[] solo debe contener un solo '.' Carácter (punto ASCII).
OemData[] OemDataLength OemDataOffset Datos opcionales específicos del OEM de longitud variable.

Tabla 3. Depuración de tipos de puerto y subtipos

Port Tipo Subtype Descripción
Reservado 0x0000: 0x7FFF y 0xFFFF Todo Reservado (no usar)
Serie 0x8000 0x0000 Totalmente compatible con 16550
0x0001 Subconjunto de 16550 compatible con la revisión 1 de DBGP
0x0002 MAX311xE SPI UART
0x0003 Arm PL011 UART
0x0004 MSM8x60 (por ejemplo, 8960)
0x0005 Nvidia 16550
0x0006 TI OMAP
0x0007 Reservado (no usar)
0x0008 APM88xxxx
0x0009 MSM8974
0x000A SAM5250
0x000B Intel USIF
0x000C i.MX 6
0x000D (en desuso) Arm SBSA (solo 2.x) UART genérico que solo admite accesos de 32 bits
0x000E UART genérico de SBSA de Arm
0x000F Arm DCC
0x0010 BCM2835
0x0011 SDM845 con velocidad de reloj de 1,8432 MHz
0x0012 16550 compatible con los parámetros definidos en estructura de direcciones genéricas
0x0013 SDM845 con velocidad de reloj de 7,372 MHz
0x0014 Intel LPSS
0x0015 Consola SBI de RISC-V (cualquier mecanismo de SBI compatible)
0x0016: 0xFFFF Reservado (para uso futuro)
1394 0x8001 0x0000 Interfaz del controlador de host estándar IEEE1394
0x0001: 0xFFFF Reservado (para uso futuro)
USB 0x8002 0x0000 Controlador compatible con XHCI con interfaz de depuración
0x0001 Controlador compatible con EHCI con interfaz de depuración
0x0002: 0x0006 Reservado (no usar)
0x0007: 0xFFFF Reservado (para uso futuro)
Net 0x8003 NNNN NNNN debe ser un identificador de proveedor asignado por PCI válido.
0x8004 Todo Reservado (no usar)
Reservado 0x8005: 0xFFFE Todo Reservado (para uso futuro)

Nota en los campos de la estructura de direcciones genéricas

  • La estructura de direcciones genéricas de BaseAddressRegister[0] se usa para especificar el ancho de bits de registro y el tamaño de acceso que usan algunos subtipos de serie.

  • Los campos Id. de espacio de direcciones y Desplazamiento de bits de registro deben ser 0.

  • El campo Register Bit Width (Ancho de bits de registro) contiene el intervalo de registro y debe ser una potencia de 2 que sea al menos tan grande como el tamaño de acceso. En plataformas de 32 bits, este valor no puede superar los 32. En plataformas de 64 bits, este valor no puede superar los 64.

  • El campo Tamaño de acceso se usa para determinar si se usarán los accesos byte, WORD, DWORD o QWORD. Los accesos QWORD solo son válidos en arquitecturas de 64 bits.

Nota sobre las UART basadas en 16550

Hay tres subtipos de interfaz que se pueden usar para 16550 UART basados en . Las diferencias entre ellas son sutiles pero importantes.

  • El subtipo de interfaz 0x0 hace referencia a un puerto serie que usa E/S de puerto "heredado" como se ve en plataformas basadas en x86. Este tipo debe evitarse en plataformas que usen E/S asignadas a memoria, como ARM o RISC-V.

  • El subtipo de interfaz 0x1 admite UART asignados a memoria, pero solo los que se pueden describir en la tabla ACPI de DBGP. Las implementaciones del sistema operativo pueden tratar esto como equivalente a un puerto de depuración proporcionado por DBGP y respetar solo el campo Dirección base de la estructura de direcciones genéricas.

  • El subtipo de interfaz 0x12 es la opción más flexible y se recomienda al ejecutar sistemas operativos compatibles en nuevas plataformas. Este subtipo admite todos los puertos serie que se pueden describir mediante los subtipos 0x0 y 0x1, así como otros nuevos, como aquellos que requieren tamaños de acceso no tradicionales y anchos de bits en la estructura de direcciones genéricas.

Recursos

Especificación ACPI