Serial Port Console Redirection Table (SPCR)

In diesem Dokument wird der Inhalt der Umleitungstabelle der Konsole für serielle Ports definiert. Diese Tabelle wird verwendet, um anzugeben, ob ein serieller Port oder eine Nicht-Legacy-UART-Schnittstelle für die Verwendung mit Microsoft® Windows® Emergency Management Services (EMS) verfügbar ist.

Die Tabelle enthält Informationen zur Konfiguration und Verwendung des seriellen Ports oder der nicht älteren UART-Schnittstelle. Auf einem System, auf dem das BIOS oder die Systemfirmware den seriellen Port für die Konsoleneingabe/-ausgabe verwendet, sollte diese Tabelle verwendet werden, um Informationen zu den Einstellungen zu übermitteln, um einen nahtlosen Übergang zwischen der Ausgabe der Firmwarekonsole und der Windows EMS-Ausgabe sicherzustellen.

Diese Tabelle muss sich im Systemspeicher mit anderen ACPI-Tabellen befinden und in der ACPI RSDT-Tabelle darauf verwiesen werden.

Patenthinweis: Microsoft stellt bestimmte Patentrechte für die Umsetzung dieser Spezifikation unter zwei Optionen zur Verfügung:

  1. Microsofts Community-Zusage, verfügbar unter https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspxoder
  2. Die Open Web Foundation Final Specification Agreement Version 1.0 ("OWF 1.0") ab dem 1. Oktober 2012, verfügbar auf der Open Web Foundation-Website .
Feld Byte-Länge Byteoffset Beschreibung
Header
Signatur 4 0 "SPCR". Signatur für die Umleitungstabelle der Seriellen Portkonsole.
Länge 4 4 Länge der gesamten Umleitungstabelle der Seriellen Portkonsole in Byte, einschließlich NamespaceString.
Revision 1 8 Die aktuelle Tabellenrevision ist 4.
Checksum 1 9 Die gesamte Tabelle muss zu 0 (null) summiert werden.
OEM ID 6 10 OEM-ID (Original Equipment Manufacturer).
OEM-Tabellen-ID 8 16 Für die Umleitungstabelle der Seriellen Portkonsole ist die Tabellen-ID die Modell-ID des Herstellers.
OEM Revision 4 24 OEM-Revision der Umleitungstabelle der Seriellen Portkonsole für die angegebene OEM-Tabellen-ID.
Ersteller-ID 4 28 Anbieter-ID des Dienstprogramms, das die Tabelle erstellt hat.
Ersteller-Revision 4 32 Revision des Dienstprogramms, das die Tabelle erstellt hat.
Schnittstellentyp 1 36 Gibt den Typ der Registerschnittstelle an:
Für Revision 1:
  • 0 = Vollständige 16550-Schnittstelle
  • 1 = Vollständige 16450-Schnittstelle (muss auch das Schreiben in das 16550 FCR-Register akzeptieren)
  • 2-255 = Reserviert
Für Revision 2 oder höher:
Weitere Informationen finden Sie unter den Untertypen des seriellen Ports in Tabelle 3 der DBG2-Spezifikation.
Reserviert 3 37 Muss den Wert 0 (null) haben.
Basisadresse 12 40 Die Basisadresse des Registersatzes für serielle Ports, der mithilfe der generischen ACPI-Adressstruktur beschrieben wird, oder 0, wenn die Konsolenumleitung deaktiviert ist.

Hinweis:
COM1 (0x3F8) wäre:
  • Integer Form: 0x 01 08 00 00 000000000000003F8
  • Im Arbeitsspeicher angezeigt: 0x01080000F803000000000000
COM2 (0x2F8) wäre:
  • Integer Form: 0x 01 08 00 00 0000000000000000002F8
  • Im Arbeitsspeicher angezeigt: 0x01080000F802000000000000
Interrupttyp 1 52 Vom UART verwendete(n) Interrupt-Typen:
  • Bit[0]: PC-AT-kompatibler Dual-8259 IRQ-Interrupt
  • Bit[1]: E/A-APIC-Interrupt (globaler System interrupt)
  • Bit[2]: E/A-SAPIC-Interrupt (globaler Systemunterbrechung)
  • Bit[3]: ARMH GIC-Interrupt (Globaler System-Interrupt)
  • Bit[4]: RISC-V PLIC/APLIC-Interrupt (Globaler System interrupt)
  • Bit[5:7]: Reserviert (muss auf 0 festgelegt werden)
Hierbei gilt:
  • 0 = Nicht unterstützt
  • 1 = Unterstützt
Legen Sie dieses Feld auf 0 (null) fest, wenn die beschriebene Schnittstelle nur den Abrufvorgang unterstützt.
Plattformen mit einem Dual-8259 und einem E/A-APIC oder E/A-SAPIC müssen das IRQ-Bit (Bit[0]) und das entsprechende globale Systemunterbrechungsbit festlegen (z. B. ein System, das 8259 unterstützt und SAPIC wäre 5).
IRQ 1 53 Der PC-AT-kompatible IRQ, der vom UART verwendet wird:
  • 2-7, 9-12, 14-15 = Gültige IRQs
  • 0-1, 8, 13, 16-255 = Reserviert
Nur gültig, wenn Bit[0] des Felds Interrupttyp festgelegt ist.
Globaler Systemunterbrechung 4 54 Der vom UART verwendete globale Systemunterbrechung (Global System Interrupt, GSIV).
Ungültig, wenn Bit[1:7] des Felds Interrupttyp 0 ist.
Wenn Bit 3 des Felds Interrupttyp (ARMH GIC) festgelegt ist, wird ein Arm GIC-Interruptcontroller verwendet. Arm-GIC-SGI- und PPI-Interrupts können nicht für die UART verwendet werden. Daher ist es verboten, dass dieses Feld auf einen beliebigen Wert in {0, ..., 31} oder in {1056, ..., 1119} festgelegt wird.
Konfigurierte Baudrate 1 58 Die Baudrate, die das BIOS für die Umleitung verwendet:
  • 0 = Das Betriebssystem basiert auf der aktuellen Konfiguration des seriellen Ports, bis der vollständige Treiber initialisiert wird.
  • 3 = 9600
  • 4 = 19200
  • 6 = 57600
  • 7 = 115200
  • 1-2, 5, 8-255 = Reserviert
Parität 1 59
  • 0 = Keine Parität
  • 1-255 = Reserviert
Stop Bits 1 60
  • 1 = 1 Stoppbit
  • 0, 2-255 = Reserviert
Flusssteuerung 1 61
  • Bit[0]: DCD für die Übertragung erforderlich
  • Bit[1]: RTS/CTS-Hardwareflusssteuerung
  • Bit[2]: XON/XOFF-Softwaresteuerung
  • Bit[3:7]: Reserviert, muss 0 sein
Terminaltyp 1 62 Das Terminalprotokoll, das das BIOS für die Konsolenumleitung verwendet hat:
  • 0 = VT100
  • 1 = Erweiterte VT100 (VT100+)
  • 2 = VT-UTF8
  • 3 = ANSI
  • 4-255 = Reserviert
Sprache 1 63 Sprache, die das BIOS umgeleitet hat. Muss den Wert 0 (null) haben.
PCI-Geräte-ID 2 64 Gibt die Geräte-ID eines PCI-Geräts an, das eine UART enthält, die als headless-Port verwendet werden soll.
Muss 0xFFFF werden, wenn es sich nicht um ein PCI-Gerät handelt.
PCI-Anbieter-ID 2 66 Gibt die Anbieter-ID eines PCI-Geräts an, das eine UART enthält, die als headless-Port verwendet werden soll.
Muss 0xFFFF werden, wenn es sich nicht um ein PCI-Gerät handelt.
PCI-Busnummer 1 68 PCI-Busnummer, wenn die Tabelle ein PCI-Gerät beschreibt.
Muss 0x00 werden, wenn es sich nicht um ein PCI-Gerät handelt.
PCI-Gerätenummer 1 69 PCI-Gerätenummer, wenn die Tabelle ein PCI-Gerät beschreibt.
Muss 0x00 werden, wenn es sich nicht um ein PCI-Gerät handelt.
PCI-Funktionsnummer 1 70 PCI-Funktionsnummer, wenn die Tabelle ein PCI-Gerät beschreibt.
Muss 0x00 werden, wenn es sich nicht um ein PCI-Gerät handelt.
PCI-Flags 4 71 PCI-Kompatibilitätsflags für Bitmasken. Sollte standardmäßig 0 sein.
  • Bit[0]: Das Betriebssystem sollte die PNP-Geräteaufzählung NICHT unterdrücken oder die Energieverwaltung für dieses Gerät deaktivieren. Muss 0 sein, wenn es sich nicht um ein PCI-Gerät handelt.
  • Bit[1-31]: Reserviert, muss 0 sein.
PCI-Segment 1 75 PCI-Segmentnummer.

Bei Systemen mit weniger als 255 PCI-Bussen muss diese Zahl 0 sein.

UART-Taktfrequenz 4 76 Für Version 2 oder niedriger:
  • Muss den Wert 0 (null) haben.
Für Revision 3 oder höher:
  • Null, die angibt, dass die UART-Taktfrequenz unbestimmt ist.
  • Ein Wert ungleich 0, der die UART-Taktfrequenz in Hz angibt.
Präzise Baudrate 4 80 Enthält eine bestimmte Nicht-Null-Baudrate, die den Wert des Felds Konfigurierte Baudrate überschreibt. Wenn dieses Feld null oder nicht vorhanden ist, wird die konfigurierte Baudrate verwendet. Siehe Hinweis weiter unten.
NamespaceStringLength 2 84 Länge von NamespaceString in Byte, einschließlich NUL-Zeichen.
NamespaceStringOffset 2 86 Offset in Bytes vom Anfang dieser Struktur bis zum Feld NamespaceString[]. Dieser Wert muss gültig sein, da diese Zeichenfolge vorhanden sein muss.
NamespaceString[] NamespaceStringLength NamespaceStringOffset NUL-beendete ASCII-Zeichenfolge, um dieses Gerät eindeutig zu identifizieren. Diese Zeichenfolge besteht aus einem vollqualifizierten Verweis auf das Objekt, das dieses Gerät im ACPI-Namespace darstellt. Wenn kein Namespacegerät vorhanden ist, darf NamespaceString[] nur ein einzelnes "." enthalten. (ASCII-Zeitraum) Zeichen.

Hinweis zu den Baudrate-Feldern

Das Feld Konfigurierte Baudrate existiert seit der Erstellung der SPCR-Tabelle als Einzelbytefeld und wird von Betriebssystemen weitgehend unterstützt. Da es sich jedoch um eine Enumeration handelt, ist es in seiner Fähigkeit eingeschränkt, nicht herkömmliche Baudraten genau zu beschreiben, wie sie von Hochgeschwindigkeits-UARTs verwendet werden. Daher wurde das Feld Genaue Baudrate hinzugefügt, um firmwarefähigen Betriebssystemen einen DWORD-Wert bereitzustellen, der eine bestimmte Baudrate (z. B. 1500000) beschreibt. Wenn das Feld Genaue Baudrate einen Wert ungleich Null enthält, muss das Feld Konfigurierte Baudrate null sein.

Revisionen

Date Rev BESCHREIBUNG
2/15/00 .10 Erstellt
3/1/00 0,50 "SPCR". Hinzugefügte Signaturdaten
3/20/00 0,55 Überarbeitete Daten, um Port und IRQ einzuschließen
3/22/00 .56 Geklärte Portidentifikation Die Möglichkeit zum Deaktivieren der Umleitung wurde hinzugefügt. Zeiger auf die Generische Registeradressstruktur hinzugefügt
3/23/00 .56a Formatierung, Haftungsausschluss, Kopierbearbeitung
4/24/00 .6 Veröffentlicht im Web für WinHEC
4/24/00 .6 Öffentlicher Überprüfungsentwurf veröffentlicht
5/25/00 .61 Korrektur an BASE_ADDRESS Beschreibung
5/25/00 .61 Öffentlicher Überprüfungsentwurf veröffentlicht
5/31/00 .7 Korrektur an BASE_ADDRESS Beschreibungsbeispielen. 16540-Schnittstelle hinzugefügt.
5/31/00 .71 Die Informationen auf der GRAS wurden von einer Notiz in ein "*" geändert.
5/31/00 .71 Öffentlicher Überprüfungsentwurf veröffentlicht
6/1/00 .72 Gras COM-Portbeispiele wurden in Little-Endian geändert. Text am Ende der Zeile hinzugefügt
7/12/00 0,75 IrQ-Beschreibung wurde behoben. Verschiedene Formatprobleme behoben Pci-Businformationen hinzugefügt.
7/26/00 .76 Aktualisieren Sie auf den PCI-Feldnamen "Gerätenummer". Die Einführungssprache wurde geändert, um UART-älteren Typs einzuschließen.
8/10/00 .77 Geänderte Interruptinformationen, Hinzufügen von APIC und SAPIC: Flusssteuerung hinzugefügt
9/22/00 .78 PCI-Segment hinzugefügt
10/25/00 0,80 Der Abschnitt "PCI-Flags" wurde korrigiert. Hinzugefügte Terminaltypen 16450 FCR-Informationen hinzugefügt
10/1/01 .95 Sprachcodes wurden entfernt.
1/11/02 1.00 Hinzufügen einer aktualisierten Lizenzierungsspezifikation zu 1.00
3/12/14 1.01 Veröffentlicht unter Microsoft Community Promise
6/2/14 1.02 Die Tabellenrevision wurde in 2 geändert und unterstützung für zusätzliche Schnittstellentypen hinzugefügt, wie in der DBG2-Spezifikation definiert.
8/10/15 1,03 Aktualisierter Patenthinweis.
7/23/2018 1,04
05.06.2020 1.05 Bearbeitete Formatierung
9/1/2020 1.06 Bearbeitete Formatierung und aktualisierter Link zur DBG2-Spezifikation
17.2.2021 1.07 Falsche Beschreibung im Feld "Stoppbits" wurde behoben. Rückgängigmachen des versehentlichen Entfernens des Flusssteuerungsfelds. Bearbeitete Formatierung.
10/7/2021 1.08 Tabellenrevision in 3 geändert und Feld für UART Clock Frequency erstellt. Bearbeitete Formatierung.
4/10/2023 1,09 Tabellenrevision in 4 geändert. RisC-V und abgefragte Unterstützung für das Feld Interrupttyp hinzugefügt. Neue Felder hinzugefügt: Präzise Baudrate, NamespaceStringLength, NamespaceStringOffset und NamespaceString[].
5/1/2023 1.10 Klar formulierte Formulierungen in den Feldern Global System Interrupt und UART Clock Frequency.