Compartilhar 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 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 Windows EMS.

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 desta 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 .
Field Byte Length Byte Offset Description
Header
Signature 4 0 'SPCR'. Assinatura da Tabela de Redirecionamento do Console de Porta Serial.
Length 4 4 Comprimento, em bytes, de toda a Tabela de Redirecionamento do Console de Porta Serial, incluindo NamespaceString.
Revision 1 8 A revisão da tabela atual é 4.
Checksum 1 9 A tabela inteira deve somar a zero.
OEM ID 6 10 ID do fabricante do equipamento original (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.
OEM Revision 4 24 Revisão OEM da Tabela de Redirecionamento do Console de Porta Serial para a ID da Tabela OEM fornecida.
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.
Interface Type 1 36 Indica o tipo da interface de registro:
Para a 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 a Revisão 2 ou superior:
See the Serial Port Subtypes in Table 3 of the DBG2 Specification.
Reserved 3 37 Deve ser 0.
Base Address 12 40 O endereço base do conjunto de registros de Porta Serial descrito usando a Estrutura de Endereços Genéricos acPI ou 0 se o redirecionamento do console estiver desabilitado.

Note:
COM1 (0x3F8) seria:
  • Formulário inteiro: 0x 01 08 00 00 00000000000003F8
  • Exibido na memória: 0x01080000F803000000000000
COM2 (0x2F8) seria:
  • Formulário inteiro: 0x 01 08 00 00 00000000000002F8
  • Exibido na memória: 0x01080000F802000000000000
Interrupt Type 1 52 Tipos de interrupção usados pelo UART:
  • Bit[0]: interrupção de 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]: RISC-V interrupção PLIC/APLIC (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 só der suporte à operação pesquisada.
Plataformas com um DUPLO-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 8259 e SAPIC seria 5).
IRQ 1 53 O IRQ compatível com PC-AT usado pela 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 pela 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 for 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 completo em destaque 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
Stop Bits 1 60
  • 1 = 1 Parar bit
  • 0, 2-255 = Reservado
Flow Control 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
Terminal Type 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
Linguagem 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 de 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.
PCI Flags 4 71 Máscara de bits 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.
PCI Segment 1 75 Número do segmento PCI.

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

Frequência do relógio UART 4 76 Para a Revisão 2 ou inferior:
  • Deve ser 0.
Para a 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 não zero específica 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 por 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 '.' (Período ASCII).

Observação sobre os campos de taxa de baud

O campo Taxa 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 as 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, 15000000). Quando o campo Taxa de Baud Precisa contiver um valor diferente de zero, o campo Taxa de Baud Configurada será zero.

Revision History

Date Rev Description
2/15/00 .10 Created
3/1/00 .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ços 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 Alterou as informações sobre o GRAS de uma nota para "*"
5/31/00 .71 Rascunho de revisão pública publicado
6/1/00 .72 Os exemplos de porta COM do GRAS alterados para serem little-endian. Texto adicionado ao final da linha
7/12/00 .75 Correção da descrição do IRQ. Correção de vários problemas de formato adicionados 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 a APIC e SAPIC
9/22/00 .78 Segmento de PCI adicionado
10/25/00 .80 Correção da seção Sinalizadores PCI. Adicionados tipos de terminal adicionados 16450 informações de FCR
10/1/01 .95 Códigos de idioma removidos
1/11/02 1.00 adicionando especificação de licenciamento atualizada à 1.00
3/12/14 1.01 Lançado sob o Microsoft Community Promise
6/2/14 1.02 Alterou a Revisão de Tabela para 2 e adicionou 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
6/5/2020 1.05 Edited formatting
9/1/2020 1.06 Formatação editada e link atualizado para especificação DBG2
2/17/2021 1.07 Correção da descrição incorreta no campo Parar Bits. Desfazer a remoção acidental do campo Controle de Fluxo. Edited formatting.
10/7/2021 1.08 Alteração da revisão de tabela para 3 e campo criado para frequência de relógio UART. Edited formatting.
4/10/2023 1.09 Alteração da revisão de tabela para 4. Adicionado RISC-V e suporte sondado ao campo Tipo de Interrupção. Novos campos adicionados: 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 de Relógio UART.