Partilhar via


Tabela de redirecionamento do console de porta serial (SPCR)

Este documento define o conteúdo da Tabela de Redirecionamento do Console de Porta Serial. Esta tabela é usada para indicar se uma porta serial ou uma interface UART não herdada está disponível para uso com o EMS (Serviços de Gerenciamento de Emergências) do Microsoft® Windows®.

A tabela fornece informações sobre a configuração e o uso da porta serial ou da interface UART não herdada. Em um sistema em que o BIOS ou firmware do sistema usa a porta serial para entrada/saída do console, essa tabela deve ser usada para transmitir informações sobre as configurações, para garantir uma transição perfeita entre a saída do console de firmware e a saída do EMS do Windows.

Essa tabela deve estar localizada na memória do sistema com outras tabelas ACPI e deve ser referenciada na tabela ACPI RSDT.

Aviso de patente: a Microsoft está disponibilizando certos direitos de patente para implementações dessa 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; ou
  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 no site do Open Web Foundation .
Campo Comprimento do byte Deslocamento de byte Descrição
parâmetro
Assinatura 4 0 'SPCR'. Assinatura para a Tabela de Redirecionamento do Console de Porta Serial.
Comprimento 4 4 Comprimento, em bytes, de toda a Tabela de Redirecionamento do Console de Porta Serial, incluindo NamespaceString.
Revisão 1 8 A revisão da tabela atual é 4.
Checksum (soma de verificação) 1 9 A tabela inteira deve somar como zero.
OEM ID 6 10 ID original do fabricante do equipamento (OEM).
ID da Tabela OEM 8 16 Para a Tabela de Redirecionamento do Console de Porta Serial, a ID da tabela é a ID do modelo do fabricante.
Revisão do OEM 4 24 Revisão OEM da Tabela de Redirecionamento do Console de Porta Serial para a ID da Tabela OEM fornecida.
ID do Criador 4 28 ID do fornecedor do utilitário que criou a tabela.
Revisão do Criador 4 32 Revisão do utilitário que criou a tabela.
Tipo de Interface 1 36 Indica o tipo da interface de registro:
Para Revisão 1:
  • 0 = Interface completa de 16550
  • 1 = Interface completa 16450 (também deve aceitar a gravação no registro 16550 fcr)
  • 2-255 = Reservado
Para Revisão 2 ou superior:
Consulte os Subtipos de Porta Serial na Tabela 3 da Especificação DBG2.
Reservado 3 37 Deve ser 0.
Endereço básico 12 40 O endereço base do conjunto de registros de Porta Serial descrito usando a Estrutura de Endereço Genérico acPI ou 0 se o redirecionamento do console estiver desabilitado.

Observação:
COM1 (0x3F8) seria:
  • Formulário inteiro: 0x 01 08 00 00 0000000000000003F8
  • Exibido na memória: 0x01080000F803000000000000
COM2 (0x2F8) seria:
  • Formulário inteiro: 0x 01 08 00 00 0000000000000002F8
  • Exibido na memória: 0x01080000F802000000000000
Tipo de interrupção 1 52 Tipos de interrupção usados pelo UART:
  • Bit[0]: interrupção do IRQ compatível com PC-AT-8259
  • Bit[1]: interrupção da APIC de E/S (interrupção global do sistema)
  • Bit[2]: interrupção sapic de E/S (interrupção global do sistema)
  • Bit[3]: interrupção do ARMH GIC (interrupção global do sistema)
  • Bit[4]: interrupção PLIC/APLIC do RISC-V (interrupção global do sistema)
  • Bit[5:7]: Reservado (deve ser definido como 0)
Where
  • 0 = Sem suporte
  • 1 = Com suporte
Defina esse campo como zero se a interface descrita der suporte apenas à operação sondada.
As plataformas com um dual-8259 e um SAPIC de E/S ou E/S devem definir o bit IRQ (Bit[0]) e o bit de Interrupção do Sistema Global correspondente (por exemplo, um sistema com suporte para 8259 e SAPIC seria 5).
IRQ 1 53 O IRQ compatível com PC-AT usado pelo UART:
  • 2-7, 9-12, 14-15 = IRQs válidos, respectivamente
  • 0-1, 8, 13, 16-255 = Reservado
Válido somente se Bit[0] do campo Tipo de Interrupção estiver definido.
Interrupção global do sistema 4 54 A GSIV (Interrupção global do sistema) usada pelo UART.
Não é válido se Bit[1:7] do campo Tipo de Interrupção for 0.
Se o bit 3 do campo Tipo de Interrupção estiver definido (ARMH GIC), um controlador de interrupção arm GIC será usado. As interrupções de SGI e PPI do Arm GIC não podem ser usadas para o UART, portanto, é proibido que esse campo seja definido como qualquer valor em {0, ..., 31} ou em {1056, ..., 1119}.
Taxa de Baud configurada 1 58 A taxa de baud usada pelo BIOS para redirecionamento:
  • 0 = Como está, o sistema operacional depende da configuração atual da porta serial até que o driver em destaque completo seja inicializado.
  • 3 = 9600
  • 4 = 19200
  • 6 = 57600
  • 7 = 115200
  • 1-2, 5, 8-255 = Reservado
Parity 1 59
  • 0 = Sem paridade
  • 1-255 = Reservado
Parar Bits 1 60
  • 1 = 1 Bit de parada
  • 0, 2-255 = Reservado
Controle de fluxo 1 61
  • Bit[0]: DCD necessário para transmissão
  • Bit[1]: controle de fluxo de hardware RTS/CTS
  • Bit[2]: controle de software XON/XOFF
  • Bit[3:7]: Reservado, deve ser 0
Tipo de terminal 1 62 O protocolo de terminal que o BIOS estava usando para redirecionamento de console:
  • 0 = VT100
  • 1 = VT100 estendido (VT100+)
  • 2 = VT-UTF8
  • 3 = ANSI
  • 4-255 = Reservado
Idioma 1 63 Linguagem que o BIOS estava redirecionando. Deve ser 0.
ID do dispositivo PCI 2 64 Designa a ID do dispositivo de um dispositivo PCI que contém um UART a ser usado como uma porta sem cabeça.
Deve ser 0xFFFF se não for um dispositivo PCI.
ID do fornecedor PCI 2 66 Designa a ID do Fornecedor de um dispositivo PCI que contém um UART a ser usado como uma porta sem cabeça.
Deve ser 0xFFFF se não for um dispositivo PCI.
Número do Barramento PCI 1 68 Número do Barramento PCI se a tabela descrever um dispositivo PCI.
Deve ser 0x00 se não for um dispositivo PCI.
Número do dispositivo PCI 1 69 Número do Dispositivo PCI se a tabela descrever um dispositivo PCI.
Deve ser 0x00 se não for um dispositivo PCI.
Número da função PCI 1 70 Número da função PCI se a tabela descrever um dispositivo PCI.
Deve ser 0x00 se não for um dispositivo PCI.
Sinalizadores PCI 4 71 Bitmask de sinalizadores de compatibilidade PCI. Deve ser zero por padrão.
  • Bit[0]: O sistema operacional NÃO deve suprimir a enumeração de dispositivo PNP ou desabilitar o gerenciamento de energia para este dispositivo. Deve ser 0 se não for um dispositivo PCI.
  • Bit[1-31]: Reservado, deve ser 0.
Segmento PCI 1 75 Número do segmento PCI.

Para sistemas com menos de 255 barramentos PCI, esse número deve ser 0.

Frequência do relógio UART 4 76 Para Revisão 2 ou inferior:
  • Deve ser 0.
Para Revisão 3 ou superior:
  • Zero, indicando que a frequência do relógio UART é indeterminada.
  • Um valor diferente de zero que indica a frequência do relógio UART no Hz.
Taxa de Baud Precisa 4 80 Contém uma taxa de baud específica diferente de zero que substitui o valor do campo Taxa de Baud Configurada. Se esse campo for zero ou não estiver presente, a Taxa de Baud Configurada será usada. Veja a observação abaixo.
NamespaceStringLength 2 84 Comprimento, em bytes, de NamespaceString, incluindo caracteres NUL.
NamespaceStringOffset 2 86 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.
NamespaceString[] NamespaceStringLength NamespaceStringOffset Cadeia de caracteres ASCII terminada em 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 '.' Caractere (ponto ASCII).

Observação sobre os campos de taxa de baud

O campo Taxa de Baud Configurada existe como um campo de byte único desde a criação da tabela SPCR e é amplamente compatível com sistemas operacionais. No entanto, como é uma enumeração, ela é limitada em sua capacidade de descrever precisamente taxas de baud não tradicionais, como aquelas usadas por UARTs de alta velocidade. Assim, o campo Taxa de Baud Precisa foi adicionado para permitir que o firmware forneça aos sistemas operacionais de suporte um valor DWORD que descreve uma taxa de baud específica (por exemplo, 1500000). Quando o campo Taxa de Baud Precisa contiver um valor diferente de zero, o campo Taxa de Baud Configurada será zero.

Histórico de revisão

Data Rev Descrição
2/15/00 0,10 Criado
3/1/00 0,50 'SPCR'. Dados de assinatura adicionados
3/20/00 .55 Dados revisados para incluir porta e irq
3/22/00 .56 Identificação de porta esclarecida Adicionada capacidade de desabilitar o redirecionamento. Ponteiro adicionado à estrutura de endereço de registro genérico
3/23/00 .56a Formatação, isenção de responsabilidade, edição de cópia
4/24/00 .6 Postado na Web para WinHEC
4/24/00 .6 Rascunho de revisão pública publicado
5/25/00 .61 Correção para BASE_ADDRESS descrição
5/25/00 .61 Rascunho de revisão pública publicado
5/31/00 .7 Correção para BASE_ADDRESS exemplos de descrição. Adição da interface 16540.
5/31/00 .71 As informações sobre o GRAS foram alteradas de uma nota para "*"
5/31/00 .71 Rascunho de revisão pública publicado
6/1/00 .72 Exemplos de porta COM GRAS alterados para ser little-endian. Adicionado texto ao final da linha
7/12/00 .75 Correção da Descrição do IRQ. Correção de vários problemas de formato adicionadas informações de barramento PCI.
7/26/00 .76 Atualize para o nome do campo PCI "Número do Dispositivo". Idioma de introdução alterado para incluir UART não herdado.
8/10/00 .77 Informações de interrupção alteradas, adicionando controle de fluxo adicionado APIC e SAPIC
9/22/00 .78 Segmento de PCI adicionado
10/25/00 0,80 Correção da seção Sinalizadores PCI. Adição de tipos de terminal adicionados 16450 informações de FCR
10/1/01 .95 Códigos de idioma removidos
1/11/02 1.00 adicionando a especificação de licenciamento atualizada à 1.00
3/12/14 1.01 Lançado sob o Microsoft Community Promise
6/2/14 1.02 Alteração da Revisão de Tabela para 2 e adição de suporte para tipos de interface adicionais, conforme definido na especificação DBG2.
8/10/15 1,03 Aviso de patente atualizado.
7/23/2018 1.04
05/06/2020 1.05 Formatação editada
9/1/2020 1,06 Formatação editada e link atualizado para a especificação DBG2
17/02/2021 1.07 Correção da descrição incorreta no campo Parar Bits. Desfazer a remoção acidental do campo Controle de Fluxo. Formatação editada.
10/7/2021 1.08 Alterou a Revisão de Tabela para 3 e criou o campo para Frequência do Relógio UART. Formatação editada.
4/10/2023 1.09 Alteração da Revisão de Tabela para 4. Adição de RISC-V e suporte sondado ao campo Tipo de Interrupção. Adicionados novos campos: Taxa de Baud Precisa, NamespaceStringLength, NamespaceStringOffset e NamespaceString[].
5/1/2023 1,10 Redação esclarecida nos campos Interrupção do Sistema Global e Frequência do Relógio UART.