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:
- Promesa de la comunidad de Microsoft, disponible en
https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
- 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.