Compartir a través de


Tabla de redirección de la consola de puerto serie (SPCR)

En este documento se define el contenido de la tabla de redirección de la consola de puerto serie. Esta tabla se usa para indicar si un puerto serie o una interfaz UART no heredada está disponible para su uso con Los Servicios de administración de emergencia (EMS) de Microsoft® Windows®.

En la tabla se proporciona información sobre la configuración y el uso del puerto serie o de la interfaz UART no heredada. En un sistema en el que el firmware del sistema o bios usa el puerto serie para la entrada y salida de la consola, esta tabla debe usarse para transmitir información sobre la configuración, para garantizar una transición sin problemas entre la salida de la consola de firmware y la salida de Windows EMS.

Esta tabla debe encontrarse en la memoria del sistema con otras tablas ACPI y debe hacerse referencia a ella en la tabla ACPI RSDT.

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; o
  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 el sitio web de Open Web Foundation .
Campo Longitud de bytes Desplazamiento de byte Descripción
Encabezado
Firma 4 0 "SPCR". Firma para la tabla de redirección de la consola de puerto serie.
Length 4 4 Longitud, en bytes, de toda la tabla de redirección de la consola de puerto serie, incluido NamespaceString.
Revisión 1 8 La revisión de la tabla actual es 4.
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 Para la tabla de redirección de la consola de puerto serie, el identificador de tabla es el identificador del modelo de fabricante.
Revisión de OEM 4 24 Revisión de OEM de la tabla de redirección de la consola de puerto serie para el id. de tabla 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.
Tipo de interfaz 1 36 Indica el tipo de la interfaz de registro:
Para la revisión 1:
  • 0 = Interfaz completa 16550
  • 1 = Interfaz completa 16450 (también debe aceptar la escritura en el registro FCR 16550)
  • 2-255 = Reservado
Para la revisión 2 o superior:
Vea los subtipos de puerto serie en la tabla 3 de la especificación DBG2.
Reservado 3 37 Debe ser 0.
Dirección base 12 40 La dirección base del conjunto de registros de puerto serie descrito mediante la estructura de direcciones genéricas ACPI o 0 si el redireccionamiento de la consola está deshabilitado.

Nota:
COM1 (0x3F8) sería:
  • Formulario entero: 0x 01 08 00 00 00000000000003F8
  • Visualizado en memoria: 0x01080000F803000000000000
COM2 (0x2F8) sería:
  • Formulario entero: 0x 01 08 00 00 00000000000002F8
  • Visualizado en memoria: 0x01080000F802000000000000
Tipo de interrupción 1 52 Tipos de interrupción usados por el UART:
  • Bit[0]: Interrupción irQ compatible con PC-AT-8259
  • Bit[1]: Interrupción de APIC de E/S (Interrupción global del sistema)
  • Bit[2]: Interrupción de SAPIC de E/S (Interrupción global del sistema)
  • Bit[3]: interrupción armh GIC (interrupción global del sistema)
  • Bit[4]: Interrupción de RISC-V PLIC/APLIC (Interrupción global del sistema)
  • Bit[5:7]: Reservado (debe establecerse en 0)
Dónde
  • 0 = No compatible
  • 1 = Compatible
Establezca este campo en cero si la interfaz descrita solo admite la operación sondeada.
Las plataformas con dos 8259 y APIC o SAPIC de E/S deben establecer el bit IRQ (Bit[0]) y el bit de interrupción del sistema global correspondiente (por ejemplo, un sistema compatible con 8259 y SAPIC sería 5).
IRQ 1 53 IRQ compatible con PC-AT utilizado por el UART:
  • 2-7, 9-12, 14-15 = IRQ válidos respectivamente
  • 0-1, 8, 13, 16-255 = Reservado
Válido solo si se establece Bit[0] del campo Tipo de interrupción.
Interrupción global del sistema 4 54 Interrupción global del sistema (GSIV) usada por el UART.
No es válido si bit[1:7] del campo Tipo de interrupción es 0.
Si se establece el bit 3 del campo Tipo de interrupción (ARMH GIC), se usa un controlador de interrupción arm GIC. Las interrupciones SGI y PPI de Arm GIC no se pueden usar para el UART, por lo que está prohibido establecer este campo en cualquier valor de {0, ..., 31} o en {1056, ..., 1119}.
Velocidad de baudios configurada 1 58 Velocidad de baudios que el BIOS usó para el redireccionamiento:
  • 0 = Tal cual, el sistema operativo se basa en la configuración actual del puerto serie hasta que se inicialice el controlador completo.
  • 3 = 9600
  • 4 = 19200
  • 6 = 57600
  • 7 = 115200
  • 1-2, 5, 8-255 = Reservado
Parity 1 59
  • 0 = Sin paridad
  • 1-255 = Reservado
Detener bits 1 60
  • 1 = 1 bit de detención
  • 0, 2-255 = Reservado
Control de flujo 1 61
  • Bit[0]: DCD necesario para transmitir
  • Bit[1]: Control de flujo de hardware RTS/CTS
  • Bit[2]: control de software XON/XOFF
  • Bit[3:7]: Reservado, debe ser 0
Tipo de terminal 1 62 El protocolo de terminal que el BIOS usaba para el redireccionamiento de la consola:
  • 0 = VT100
  • 1 = VT100 extendido (VT100+)
  • 2 = VT-UTF8
  • 3 = ANSI
  • 4-255 = Reservado
Idioma 1 63 Idioma que el BIOS estaba redirigiendo. Debe ser 0.
Id. de dispositivo PCI 2 64 Designa el identificador de dispositivo de un dispositivo PCI que contiene un UART que se usará como puerto sin encabezado.
Debe ser 0xFFFF si no es un dispositivo PCI.
Id. de proveedor de PCI 2 66 Designa el identificador de proveedor de un dispositivo PCI que contiene un UART que se usará como puerto sin encabezado.
Debe ser 0xFFFF si no es un dispositivo PCI.
Número de bus PCI 1 68 Número de bus PCI si la tabla describe un dispositivo PCI.
Debe ser 0x00 si no es un dispositivo PCI.
Número de dispositivo PCI 1 69 Número de dispositivo PCI si la tabla describe un dispositivo PCI.
Debe ser 0x00 si no es un dispositivo PCI.
Número de función PCI 1 70 Número de función PCI si la tabla describe un dispositivo PCI.
Debe ser 0x00 si no es un dispositivo PCI.
Marcas PCI 4 71 Máscara de bits de marcas de compatibilidad de PCI. Debe ser cero de forma predeterminada.
  • Bit[0]: El sistema operativo NO debe suprimir la enumeración de dispositivos PNP o deshabilitar la administración de energía para este dispositivo. Debe ser 0 si no es un dispositivo PCI.
  • Bit[1-31]: Reservado, debe ser 0.
Segmento PCI 1 75 Número de segmento PCI.

Para los sistemas con menos de 255 buses PCI, este número debe ser 0.

Frecuencia del reloj UART 4 76 Para la revisión 2 o inferior:
  • Debe ser 0.
Para la revisión 3 o superior:
  • Cero, lo que indica que la frecuencia del reloj UART es indeterminada.
  • Valor distinto de cero que indica la frecuencia del reloj UART en Hz.
Velocidad precisa de baudios 4 80 Contiene una velocidad de baudios no cero específica que invalida el valor del campo Velocidad de baudios configurada. Si este campo es cero o no está presente, se usa la tasa de baudios configurada. Vea la nota siguiente.
NamespaceStringLength 2 84 Longitud, en bytes, de NamespaceString, incluidos los caracteres NUL.
NamespaceStringOffset 2 86 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.
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).

Nota sobre los campos de velocidad de baudios

El campo Tasa de baudios configurado ha existido como un campo de un solo byte desde la creación de la tabla SPCR y es ampliamente compatible con los sistemas operativos. Sin embargo, dado que es una enumeración, se limita en su capacidad para describir con precisión las velocidades de baudios no tradicionales, como las usadas por las UART de alta velocidad. Por lo tanto, el campo Velocidad de baudios precisa se agregó para permitir que el firmware proporcione a los sistemas operativos auxiliares un valor DWORD que describe una velocidad de baudios específica (por ejemplo, 1500000). Cuando el campo Velocidad de baudios precisa contiene un valor distinto de cero, el campo Tasa de baudios configurada será cero.

Historial de revisiones

Date Rev Descripción
2/15/00 .10 Creado
3/1/00 0,50 "SPCR". Datos de firma agregados
3/20/00 0,55 Datos revisados para incluir el puerto e irq
3/22/00 .56 Identificación de puerto aclarada Se ha agregado la capacidad de deshabilitar el redireccionamiento. Se ha agregado el puntero a la estructura de direcciones de registro genéricas.
3/23/00 .56a Formato, declinación de responsabilidades, edición de copias
4/24/00 .6 Publicado en la web para WinHEC
4/24/00 .6 Borrador de revisión pública publicado
5/25/00 .61 Corrección de la descripción de BASE_ADDRESS
5/25/00 .61 Borrador de revisión pública publicado
5/31/00 .7 Corrección de BASE_ADDRESS ejemplos de descripción. Se agregó la interfaz 16540.
5/31/00 .71 Se ha cambiado la información del GRAS de una nota a una "*"
5/31/00 .71 Borrador de revisión pública publicado
6/1/00 .72 Se han cambiado los ejemplos de puertos COM de GRAS para que sean little-endian. Se ha agregado texto al final de la línea.
7/12/00 .75 Se ha corregido la descripción de IRQ. Se han corregido varios problemas de formato agregados a la información del bus PCI.
7/26/00 .76 Actualice al nombre del campo PCI "Número de dispositivo". Se ha cambiado el lenguaje de introducción para incluir UART no heredado.
8/10/00 .77 Se ha cambiado la información de interrupción y se ha agregado el control de flujo APIC y SAPIC.
9/22/00 .78 Se ha agregado el segmento PCI.
10/25/00 0,80 Se ha corregido la sección De marcas PCI. Se ha agregado información de FCR 16450 a los tipos de terminal agregados
10/1/01 .95 Códigos de idioma quitados
1/11/02 1.00 adición de especificaciones de licencias actualizadas a la versión 1.00
3/12/14 1.01 Publicado en Microsoft Community Promise
6/2/14 1.02 Se ha cambiado la revisión de tabla a 2 y se ha agregado compatibilidad con tipos de interfaz adicionales, tal como se define en la especificación DBG2.
8/10/15 1,03 Aviso de patente actualizado.
7/23/2018 1.04
5/6/2020 1.05 Formato editado
9/1/2020 1.06 Formato editado y vínculo actualizado a la especificación DBG2
17/2/2021 1.07 Se ha corregido una descripción incorrecta en el campo Detener bits. Deshace la eliminación accidental del campo Control de flujo. Formato editado.
10/7/2021 1.08 Se cambió la revisión de tabla a 3 y se creó el campo para la frecuencia del reloj UART. Formato editado.
4/10/2023 1,09 Se ha cambiado la revisión de tabla a 4. Se ha agregado compatibilidad con RISC-V y sondear al campo Tipo de interrupción. Se agregaron nuevos campos: Velocidad de baudios precisa, Espacio de nombresStringLength, NamespaceStringOffset y NamespaceString[].
5/1/2023 1.10 Se ha aclarado la redacción en los campos Global System Interrupt (Interrupción del sistema global) y UART Clock Frequency (Frecuencia del reloj UART).