Partager via


Table de redirection de la console de port série (SPCR)

Ce document définit le contenu de la table de redirection de la console de port série. Ce tableau est utilisé pour indiquer si un port série ou une interface UART non héritée peut être utilisé avec microsoft® Windows® Emergency Management Services (EMS).

Le tableau fournit des informations sur la configuration et l’utilisation du port série ou de l’interface UART non héritée. Sur un système où le BIOS ou le microprogramme système utilise le port série pour l’entrée/sortie de la console, ce tableau doit être utilisé pour transmettre des informations sur les paramètres, afin de garantir une transition transparente entre la sortie de la console du microprogramme et la sortie Windows EMS.

Cette table doit se trouver dans la mémoire système avec d’autres tables ACPI, et elle doit être référencée dans la table ACPI RSDT.

Avis de brevet : Microsoft rend certains droits de brevet disponibles pour les implémentations de cette spécification selon deux options :

  1. Promesse de la communauté microsoft, disponible à l’adresse https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx; ou
  2. Le contrat de spécification final d’Open Web Foundation version 1.0 (« OWF 1.0 ») à compter du 1er octobre 2012, disponible sur le site web d’Open Web Foundation .
Champ Longueur des octets Décalage d’octet Description
En-tête
Signature 4 0 'SPCR'. Signature pour la table de redirection de la console de port série.
Longueur 4 4 Longueur, en octets, de la table de redirection de la console de port série entière, y compris NamespaceString.
Révision 1 8 La révision de table actuelle est 4.
Somme de contrôle 1 9 La table entière doit être égale à zéro.
OEM ID 6 10 ID du fabricant d’équipement d’origine (OEM).
OEM Table ID 8 16 Pour la table de redirection de la console de port série, l’ID de table est l’ID de modèle du fabricant.
Révision OEM 4 24 Révision OEM de la table de redirection de la console de port série pour l’ID de table OEM fourni.
ID du créateur 4 28 ID de fournisseur de l’utilitaire qui a créé la table.
Révision du créateur 4 32 Révision de l’utilitaire qui a créé la table.
Type d'interface 1 36 Indique le type de l’interface register :
Pour la révision 1 :
  • 0 = Interface complète 16550
  • 1 = Interface 16450 complète (doit également accepter l’écriture dans le registre 16550 FCR)
  • 2-255 = Réservé
Pour la révision 2 ou ultérieure :
Consultez les sous-types de ports série dans le tableau 3 de la spécification DBG2.
Réservé 3 37 Doit être égal à 0.
Adresse de base 12 40 Adresse de base du jeu de registres de ports série décrit à l’aide de la structure d’adresse générique ACPI, ou 0 si la redirection de la console est désactivée.

Remarque :
COM1 (0x3F8) serait :
  • Forme entière : 0x 01 08 00 00 0000000000003F8
  • Affichage en mémoire : 0x01080000F803000000000000
COM2 (0x2F8) serait :
  • Forme entière : 0x 01 08 00 00 00000000000002F8
  • Affichage en mémoire : 0x01080000F802000000000000
Type d’interruption 1 52 Type(s) d’interruption utilisé(s) par l’UART :
  • Bit[0] : interruption IRQ double 8259 compatible PC-AT
  • Bit[1] : Interruption APIC d’E/O (Interruption système globale)
  • Bit[2] : Interruption SAPIC d’E/O (Interruption système globale)
  • Bit[3] : Interruption du GIC ARMH (Interruption système globale)
  • Bit[4] : Interruption PLIC/APLIC RISC-V (Interruption système globale)
  • Bit[5:7] : réservé (doit être défini sur 0)
Where
  • 0 = Non pris en charge
  • 1 = Pris en charge
Définissez ce champ sur zéro si l’interface décrite prend uniquement en charge l’opération interrogée.
Les plateformes avec un double 8259 et un APIC d’E/S ou d’E/S SAPIC doivent définir le bit IRQ (Bit[0]) et le bit d’interruption du système global correspondant (par exemple, un système prenant en charge 8259 et SAPIC serait 5).
IRQ 1 53 IRQ compatible PC-AT utilisé par l’UART :
  • 2-7, 9-12, 14-15 = IrQs valides respectivement
  • 0-1, 8, 13, 16-255 = Réservé
Valide uniquement si Bit[0] du champ Type d’interruption est défini.
Interruption globale du système 4 54 L’interruption globale du système (GSIV) utilisée par l’UART.
Non valide si Bit[1:7] du champ Type d’interruption est 0.
Si le bit 3 du champ Type d’interruption est défini (ARMH GIC), un contrôleur d’interruption Arm GIC est utilisé. Les interruptions SGI et PPI Arm GIC ne pouvant pas être utilisées pour l’UART, il est interdit de définir ce champ sur une valeur dans {0, ..., 31} ou dans {1056, ..., 1119}.
Taux de bauds configuré 1 58 Débit en bauds utilisé par le BIOS pour la redirection :
  • 0 = En l’état, le système d’exploitation s’appuie sur la configuration actuelle du port série jusqu’à ce que le pilote complet soit initialisé.
  • 3 = 9600
  • 4 = 19200
  • 6 = 57600
  • 7 = 115200
  • 1-2, 5, 8-255 = Réservé
Parité 1 59
  • 0 = Aucune parité
  • 1-255 = Réservé
Arrêter les bits 1 60
  • 1 = 1 bit d’arrêt
  • 0, 2-255 = Réservé
Contrôle de flux 1 61
  • Bit[0] : DCD requis pour la transmission
  • Bit[1] : contrôle du flux matériel RTS/CTS
  • Bit[2] : contrôle logiciel XON/XOFF
  • Bit[3:7] : réservé, doit être 0
Terminal Type 1 62 Protocole terminal utilisé par le BIOS pour la redirection de console :
  • 0 = VT100
  • 1 = VT100 étendu (VT100+)
  • 2 = VT-UTF8
  • 3 = ANSI
  • 4-255 = Réservé
Langage 1 63 Langue que le BIOS redirigeait. Doit être égal à 0.
ID d’appareil PCI 2 64 Désigne l’ID d’appareil d’un appareil PCI qui contient un UART à utiliser comme port sans tête.
Doit être 0xFFFF s’il ne s’agit pas d’un appareil PCI.
ID du fournisseur PCI 2 66 Désigne l’ID de fournisseur d’un appareil PCI qui contient un UART à utiliser comme port sans tête.
Doit être 0xFFFF s’il ne s’agit pas d’un appareil PCI.
Numéro de bus PCI 1 68 Le numéro de bus PCI si la table décrit un appareil PCI.
Doit être 0x00 s’il ne s’agit pas d’un appareil PCI.
Numéro d’appareil PCI 1 69 Le numéro d’appareil PCI si la table décrit un appareil PCI.
Doit être 0x00 s’il ne s’agit pas d’un appareil PCI.
Numéro de fonction PCI 1 70 Le numéro de fonction PCI si la table décrit un appareil PCI.
Doit être 0x00 s’il ne s’agit pas d’un appareil PCI.
Indicateurs PCI 4 71 Masque de bits d’indicateur de compatibilité PCI. Doit être égal à zéro par défaut.
  • Bit[0] : Le système d’exploitation ne doit PAS supprimer l’énumération d’appareil PNP ou désactiver la gestion de l’alimentation pour cet appareil. Doit être 0 s’il ne s’agit pas d’un appareil PCI.
  • Bit[1-31] : réservé, doit être 0.
PCI Segment 1 75 Numéro de segment PCI.

Pour les systèmes avec moins de 255 bus PCI, ce nombre doit être égal à 0.

Fréquence d’horloge UART 4 76 Pour la révision 2 ou une version ultérieure :
  • Doit être égal à 0.
Pour la révision 3 ou ultérieure :
  • Zéro, indiquant que la fréquence d’horloge UART est indéterminée.
  • Valeur autre que zéro indiquant la fréquence d’horloge UART en Hz.
Débit en bauds précis 4 80 Contient une fréquence de bauds non nulle spécifique qui remplace la valeur du champ Taux de bauds configuré. Si ce champ est égal à zéro ou qu’il n’est pas présent, le taux de bauds configuré est utilisé. Voir la remarque ci-dessous.
NamespaceStringLength 2 84 Longueur, en octets, de NamespaceString, y compris les caractères NUL.
NamespaceStringOffset 2 86 Décalage, en octets, du début de cette structure vers le champ NamespaceString[]. Cette valeur doit être valide, car cette chaîne doit être présente.
NamespaceString[] NamespaceStringLength NamespaceStringOffset Chaîne ASCII terminée par nul pour identifier de manière unique cet appareil. Cette chaîne se compose d’une référence complète à l’objet qui représente cet appareil dans l’espace de noms ACPI. S’il n’existe aucun périphérique d’espace de noms, NamespaceString[] ne doit contenir qu’un seul ' . Caractère (période ASCII).

Remarque sur les champs de taux de bauds

Le champ Taux de bauds configuré existe en tant que champ codé sur un octet depuis la création de la table SPCR et est largement pris en charge par les systèmes d’exploitation. Toutefois, étant donné qu’il s’agit d’une énumération, il est limité dans sa capacité à décrire précisément les débits de bauds non traditionnels, tels que ceux utilisés par les UART à grande vitesse. Ainsi, le champ Débit précis de bauds a été ajouté pour permettre au microprogramme de fournir aux systèmes d’exploitation de prise en charge une valeur DWORD qui décrit un taux de bauds spécifique (par exemple, 1500000). Lorsque le champ Taux de bauds précis contient une valeur différente de zéro, le champ Taux de bauds configuré doit être égal à zéro.

Historique des révisions

Date Rev Description
2/15/00 .10 Date de création
3/1/00 0,50 'SPCR'. Données de signature ajoutées
3/20/00 0,55 Données révisées pour inclure le port et l’irq
3/22/00 .56 Identification de port clarifiée Ajout de la possibilité de désactiver la redirection. Ajout du pointeur vers la structure d’adresse de registre générique
3/23/00 .56a Mise en forme, exclusion de responsabilité, modification de copie
4/24/00 .6 Publié sur le web pour WinHEC
4/24/00 .6 Version préliminaire de l’examen public publiée
5/25/00 .61 Correction de BASE_ADDRESS description
5/25/00 .61 Version préliminaire de l’examen public publiée
5/31/00 .7 Correction de BASE_ADDRESS exemples de description. Ajout de l’interface 16540.
5/31/00 .71 Modification des informations sur le GRAS d’une note en « * »
5/31/00 .71 Version préliminaire de l’examen public publiée
6/1/00 .72 Modification des exemples de ports GRAS COM pour qu’ils soient little-endian. Ajout de texte à la fin de la ligne
7/12/00 .75 Correction de la description de l’IRQ. Correction de divers problèmes de format Ajout d’informations de bus PCI.
7/26/00 .76 Mettez à jour vers le nom de champ PCI « Numéro d’appareil ». Modification de la langue d’introduction pour inclure l’UART non hérité.
8/10/00 .77 Modification des informations d’interruption, ajout du contrôle de flux APIC et SAPIC Ajouté
9/22/00 .78 Ajout du segment PCI
10/25/00 0,80 Correction de la section Indicateurs PCI. Ajout des types de terminal Ajout d’informations 16450 FCR
10/1/01 .95 Codes de langue supprimés
1/11/02 1.00 ajout d’une spécification de licence mise à jour à la version 1.00
3/12/14 1.01 Publication dans le cadre de la promesse de la communauté Microsoft
6/2/14 1.02 Modification de la révision de table en 2 et ajout de la prise en charge des types d’interface supplémentaires, comme défini dans la spécification DBG2.
8/10/15 1,03 Mise à jour de l’avis de brevet.
7/23/2018 1.04
05/06/2020 1.05 Mise en forme modifiée
9/1/2020 1,06 Mise en forme modifiée et lien mis à jour vers la spécification DBG2
17/02/2021 1.07 Correction d’une description incorrecte dans le champ Stop Bits. Annuler la suppression accidentelle du champ Contrôle de flux. Mise en forme modifiée.
10/7/2021 1.08 Modification de la révision de table en 3 et création d’un champ pour la fréquence d’horloge UART. Mise en forme modifiée.
4/10/2023 1,09 Modification de la révision de table en 4. Ajout de RISC-V et de la prise en charge interrogée au champ Type d’interruption. Ajout de nouveaux champs : Precise Baud Rate, NamespaceStringLength, NamespaceStringOffset et NamespaceString[].
5/1/2023 1,10 Formulation clarifiée dans les champs Interruption du système global et Fréquence d’horloge UART.