Tabella di reindirizzamento della console della porta seriale (SPCR)

Questo documento definisce il contenuto della tabella di reindirizzamento della console della porta seriale. Questa tabella viene usata per indicare se una porta seriale o un'interfaccia UART non legacy è disponibile per l'uso con Microsoft® Windows® Emergency Management Services (EMS).

La tabella fornisce informazioni sulla configurazione e sull'uso della porta seriale o dell'interfaccia UART non legacy. In un sistema in cui il firmware del BIOS o del sistema usa la porta seriale per l'input/output della console, questa tabella deve essere usata per trasmettere informazioni sulle impostazioni, per garantire una transizione semplice tra l'output della console del firmware e l'output di Windows EMS.

Questa tabella deve trovarsi nella memoria di sistema con altre tabelle ACPI e deve essere fatto riferimento nella tabella ACPI RSDT.

Nota sul brevetto: Microsoft sta rendendo disponibili determinati diritti di brevetto per le implementazioni di questa specifica in due opzioni:

  1. Microsoft Community Promise, disponibile in https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx; o
  2. Open Web Foundation Final Specification Agreement versione 1.0 ("OWF 1.0") a partire dal 1° ottobre 2012, disponibile nel sito Web Open Web Foundation .
Campo Lunghezza byte Byte Offset Descrizione
Intestazione
Firma 4 0 'SPCR'. Firma per la tabella di reindirizzamento della console della porta seriale.
Length 4 4 Lunghezza, in byte, dell'intera tabella di reindirizzamento della console della porta seriale, incluso NamespaceString.
Revisione 1 8 La revisione della tabella corrente è 4.
Checksum 1 9 L'intera tabella deve sommare a zero.
OEM ID 6 10 ID OEM (Original Equipment Manufacturer).
ID tabella OEM 8 16 Per la tabella di reindirizzamento della console della porta seriale, l'ID tabella è l'ID modello produttore.
Revisione OEM 4 24 Revisione OEM della tabella di reindirizzamento della console della porta seriale per l'ID tabella OEM fornito.
ID creatore 4 28 ID fornitore di utilità che ha creato la tabella.
Revisione creatore 4 32 Revisione dell'utilità che ha creato la tabella.
Tipo di interfaccia 1 36 Indica il tipo dell'interfaccia di registrazione:
Per la revisione 1:
  • 0 = Interfaccia completa 16550
  • 1 = Interfaccia full 16450 (deve anche accettare la scrittura nel registro FCR 16550)
  • 2-255 = Riservato
Per La revisione 2 o successiva:
Vedere i sottotipi di porta seriale nella tabella 3 della specifica DBG2.
Riservato 3 37 Deve essere 0.
Indirizzo di base 12 40 L'indirizzo di base del set di registrazione porta seriale descritto usando la struttura di indirizzi generici ACPI o 0 se il reindirizzamento della console è disabilitato.

Nota:
COM1 (0x3F8) sarà:
  • Formato intero: 0x 01 08 00 00 000000000000003F8
  • Visualizzato in memoria: 0x01080000F803000000000000
COM2 (0x2F8) sarà:
  • Formato intero: 0x 01 08 00 00 00000000000000002F8
  • Visualizzato in memoria: 0x01080000F802000000000000
Tipo di interruzione 1 52 Tipi di interruzione usati dall'UART:
  • Bit[0]: interruzione irQ compatibile con PC-AT-PC-8259
  • Bit[1]: Interruzione di I/O APIC (interruzione globale del sistema)
  • Bit[2]: interruzione SAPIC I/O (interruzione globale del sistema)
  • Bit[3]: interruzione GIC armH (interruzione globale del sistema)
  • Bit[4]: RISC-V PLIC/APLIC interrupt (Interruzione globale del sistema)
  • Bit[5:7]: Riservato (deve essere impostato su 0)
Where
  • 0 = Non supportato
  • 1 = Supportato
Impostare questo campo su zero se l'interfaccia descritta supporta solo l'operazione di polling.
Le piattaforme con un bit dual-8259 e un I/O APIC o I/O SAPIC devono impostare il bit IRQ (Bit[0]) e il corrispondente bit di interruzione del sistema globale (ad esempio un sistema che supportava 8259 e SAPIC sarebbe 5).
IRQ 1 53 IrQ compatibile con PC-AT usato dall'UART:
  • 2-7, 9-12, 14-15 = IrQs validi rispettivamente
  • 0-1, 8, 13, 16-255 = Riservato
Valido solo se è impostato Bit[0] del campo Tipo di interruzione.
Interruzione globale del sistema 4 54 L'interrupt di sistema globale (GSIV) utilizzato dall'UART.
Non valido se Bit[1:7] del campo Tipo di interruzione è 0.
Se viene impostato il bit 3 del campo Tipo di interruzione (ARMH GIC), viene usato un controller di interrupt arm GIC. Gli interrupt SGI e PPI di Arm GIC non possono essere usati per UART, pertanto non è consentito impostare questo campo su qualsiasi valore in {0, ..., 31} o in {1056, ..., 1119}.
Velocità baud configurata 1 58 Frequenza baud del BIOS usato per il reindirizzamento:
  • 0 = Così com'è, il sistema operativo si basa sulla configurazione corrente della porta seriale fino a quando non verrà inizializzato il driver completo.
  • 3 = 9600
  • 4 = 19200
  • 6 = 57600
  • 7 = 115200
  • 1-2, 5, 8-255 = Riservato
Parity 1 59
  • 0 = Nessuna parità
  • 1-255 = Riservato
Bit di arresto 1 60
  • 1 = 1 Bit di arresto
  • 0, 2-255 = Riservato
Controllo di flusso 1 61
  • Bit[0]: DCD necessario per la trasmissione
  • Bit[1]: controllo del flusso hardware RTS/CTS
  • Bit[2]: controllo software XON/XOFF
  • Bit[3:7]: Riservato, deve essere 0
Tipo di terminale 1 62 Il protocollo terminale usato dal BIOS per il reindirizzamento della console:
  • 0 = VT100
  • 1 = VT100 esteso (VT100+)
  • 2 = VT-UTF8
  • 3 = ANSI
  • 4-255 = Riservato
Linguaggio 1 63 Lingua di reindirizzamento del BIOS. Deve essere 0.
ID dispositivo PCI 2 64 Definisce l'ID dispositivo di un dispositivo PCI che contiene un UART da usare come porta headless.
Deve essere 0xFFFF se non è un dispositivo PCI.
ID fornitore PCI 2 66 Definisce l'ID fornitore di un dispositivo PCI che contiene un UART da usare come porta headless.
Deve essere 0xFFFF se non è un dispositivo PCI.
Numero bus PCI 1 68 Pci Bus Number se la tabella descrive un dispositivo PCI.
Deve essere 0x00 se non è un dispositivo PCI.
Numero di dispositivo PCI 1 69 Pci Device Number if table descrive un dispositivo PCI.
Deve essere 0x00 se non è un dispositivo PCI.
Numero di funzione PCI 1 70 Pci Function Number if table descrive un dispositivo PCI.
Deve essere 0x00 se non è un dispositivo PCI.
Flag PCI 4 71 Maschera di bit dei flag di compatibilità PCI. Deve essere zero per impostazione predefinita.
  • Bit[0]: il sistema operativo non deve eliminare l'enumerazione del dispositivo PNP o disabilitare il risparmio energia per questo dispositivo. Deve essere 0 se non è un dispositivo PCI.
  • Bit[1-31]: riservato, deve essere 0.
Segmento PCI 1 75 Numero di segmento PCI.

Per i sistemi con meno di 255 bus PCI, questo numero deve essere 0.

Frequenza clock UART 4 76 Per la revisione 2 o inferiore:
  • Deve essere 0.
Per la revisione 3 o successiva:
  • Zero, che indica che la frequenza di clock UART è indeterminato.
  • Valore diverso da zero che indica la frequenza di clock UART in Hz.
Velocità di baud precisa 4 80 Contiene una velocità baud non zero specifica che esegue l'override del valore del campo Velocità baud configurata. Se questo campo è zero o non presente, viene usata la velocità baud configurata. Vedere la nota che segue.
NamespaceStringLength 2 84 Lunghezza, in byte, di NamespaceString, inclusi i caratteri NUL.
NamespaceStringOffset 2 86 Offset, in byte, dall'inizio di questa struttura al campo NamespaceString[]. Questo valore deve essere valido perché questa stringa deve essere presente.
NamespaceString[] NamespaceStringLength NamespaceStringOffset Stringa ASCII con terminazione NUL per identificare in modo univoco questo dispositivo. Questa stringa è costituita da un riferimento completo all'oggetto che rappresenta questo dispositivo nello spazio dei nomi ACPI. Se non esiste alcun dispositivo dello spazio dei nomi, NamespaceString[] deve contenere solo un singolo '.' Carattere (punto ASCII).

Nota sui campi di frequenza baud

Il campo Velocità baud configurata esiste come campo a byte singolo dopo la creazione della tabella SPCR ed è ampiamente supportato dai sistemi operativi. Tuttavia, poiché è un'enumerazione, è limitata nella sua capacità di descrivere con precisione i tassi baud non tradizionali, ad esempio quelli usati da UART ad alta velocità. Pertanto, il campo Precision Baud Rate è stato aggiunto per abilitare il firmware per fornire sistemi operativi di supporto un valore DWORD che descrive una velocità baud specifica (ad esempio 1500000). Quando il campo Precision Baud Rate contiene un valore diverso da zero, il campo Velocità baud configurata deve essere zero.

Cronologia revisioni

Data Rev Descrizione
2/15/00 0,10 Data di creazione
3/1/00 0,50 'SPCR'. Dati di firma aggiunti
3/20/00 .55 Dati modificati per includere porta e irq
3/22/00 .56 Chiarimento dell'identificazione della porta Aggiunta possibilità di disabilitare il reindirizzamento. Aggiunta del puntatore alla struttura di indirizzi di registrazione generica
3/23/00 .56a Formattazione, dichiarazione di responsabilità, modifica della copia
4/24/00 .6 Pubblicato sul Web per WinHEC
4/24/00 .6 Bozza di revisione pubblica pubblicata
5/25/00 .61 Correzione alla descrizione di BASE_ADDRESS
5/25/00 .61 Bozza di revisione pubblica pubblicata
5/31/00 .7 Correzione degli esempi di descrizione BASE_ADDRESS. Aggiunta dell'interfaccia 16540.
5/31/00 .71 Modifica le informazioni sul GRAS da una nota a "*"
5/31/00 .71 Bozza di revisione pubblica pubblicata
6/1/00 .72 Gli esempi di porta COM di GRAS modificati devono essere little-endian. Aggiunta del testo alla fine della riga
7/12/00 .75 Correzione della descrizione irQ. È stato risolto vari problemi di formato Aggiunti informazioni sul bus PCI.
7/26/00 .76 Aggiornare il nome del campo PCI "Numero di dispositivo". Lingua di introduzione modificata per includere UART non legacy.
8/10/00 .77 Informazioni di interruzione modificate, aggiunta di controllo del flusso APIC e SAPIC Aggiunto
9/22/00 .78 Aggiunta del segmento PCI
10/25/00 0,80 Sezione Flag PCI fissa. Aggiunta di tipi di terminale aggiunti 16450 info FCR
10/1/01 .95 Codici linguistici rimossi
1/11/02 1,00 aggiunta di specifiche di licenza aggiornate a 1.00
3/12/14 1.01 Rilasciato in Microsoft Community Promise
6/2/14 1.02 Modifica della revisione tabella a 2 e aggiunto il supporto per tipi di interfaccia aggiuntivi, come definito nella specifica DBG2.
8/10/15 1,03 Avviso di brevetto aggiornato.
7/23/2018 1.04
05/06/2020 1,05 Formattazione modificata
9/1/2020 1,06 Formattazione modificata e collegamento aggiornato alla specifica DBG2
2/17/2021 1.07 Correzione della descrizione errata nel campo Bit di arresto. Annullare la rimozione accidentale del campo Controllo flusso. Formattazione modificata.
10/7/2021 1.08 Modifica della revisione tabella su 3 e il campo creato per la frequenza dell'orologio UART. Formattazione modificata.
4/10/2023 1.09 Modifica della revisione della tabella in 4. Aggiunta del supporto DI RISC-V e polled al campo Tipo di interruzione. Sono stati aggiunti nuovi campi: Precision Baud Rate, NamespaceStringLength, NamespaceStringOffset e NamespaceString[].
5/1/2023 1,10 Chiarimento della parola nei campi Global System Interrupt e UART Clock Frequency.