Поделиться через


Таблица перенаправления консоли последовательного порта (SPCR)

В этом документе определяется содержимое таблицы перенаправления консоли последовательного порта. Эта таблица используется для указания того, доступен ли последовательный порт или не устаревший интерфейс UART для использования со службами® microsoft Windows® Emergency Management Services (EMS).

В таблице приведены сведения о конфигурации и использовании последовательного порта или не устаревшего интерфейса UART. В системе, где BIOS или встроенное ПО использует последовательный порт для ввода-вывода консоли, эту таблицу следует использовать для передачи сведений о параметрах, чтобы обеспечить простой переход между выходными данными консоли встроенного ПО и выходными данными Windows EMS.

Эта таблица должна находиться в системной памяти вместе с другими таблицами ACPI, и на нее должна быть ссылка в таблице ACPI RSDT.

Уведомление о патенте. Корпорация Майкрософт предоставляет определенные патентные права для реализации этой спецификации в двух вариантах:

  1. Обещание сообщества Майкрософт, доступное по адресу https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx; или
  2. Соглашение о окончательной спецификации Open Web Foundation версии 1.0 ("OWF 1.0") с 1 октября 2012 г., доступное на веб-сайте Open Web Foundation .
Поле Длина байтов Смещение в байтах Описание
Заголовок
Сигнатура 4 0 SPCR. Сигнатура для таблицы перенаправления консоли последовательного порта.
Длина 4 4 Длина в байтах всей таблицы перенаправления консоли последовательного порта, включая NamespaceString.
Редакция 1 8 Текущая редакция таблицы — 4.
Контрольная сумма 1 9 Вся таблица должна суммироваться до нуля.
ИДЕНТИФИКАТОР ИЗГОТОВИТЕЛЯ ОБОРУДОВАНИЯ 6 10 Исходный идентификатор изготовителя оборудования (OEM).
Идентификатор таблицы OEM 8 16 Для таблицы перенаправления консоли последовательного порта идентификатором таблицы является идентификатор модели производителя.
Редакция OEM 4 24 Версия OEM таблицы перенаправления консоли последовательных портов для предоставленного идентификатора таблицы OEM.
Идентификатор создателя 4 28 Идентификатор поставщика служебной программы, создающей таблицу.
Редакция creator 4 32 Редакция служебной программы, создающей таблицу.
Тип интерфейса 1 36 Указывает тип интерфейса регистрации:
Для редакции 1:
  • 0 = полный интерфейс 16550
  • 1 = полный интерфейс 16450 (также должен принимать запись в регистр FCR 16550)
  • 2–255 = зарезервировано
Для редакции 2 или более поздней версии:
См. подтипы последовательных портов в таблице 3 спецификации DBG2.
Зарезервировано 3 37 Должно быть равно 0.
Базовый адрес 12 40 Базовый адрес набора регистров последовательных портов, описанный с помощью универсальной структуры адресов ACPI, или 0, если перенаправление консоли отключено.

Примечание.
COM1 (0x3F8) будет иметь значение:
  • Целочисленная форма: 0x 01 08 00 00 000000000000003F8
  • Просмотр в памяти: 0x01080000F803000000000000
COM2 (0x2F8) будет следующим:
  • Целочисленная форма: 0x 01 08 00 00 000000000000002F8
  • Просмотр в памяти: 0x01080000F802000000000000
Тип прерывания 1 52 Типы прерываний, используемые UART:
  • Bit[0]: pc-AT-compatible dual-8259 IRQ прерывание
  • Бит[1]: прерывание APIC ввода-вывода (глобальное системное прерывание)
  • Бит[2]: прерывание операций ввода-вывода SAPIC (глобальное системное прерывание)
  • Бит[3]: прерывание GIC ARMH (глобальное системное прерывание)
  • Бит[4]: прерывание RISC-V PLIC/APLIC (глобальное системное прерывание)
  • Бит[5:7]: зарезервировано (должно быть установлено значение 0)
Where
  • 0 = не поддерживается
  • 1 = поддерживается
Задайте для этого поля значение 0, если описанный интерфейс поддерживает только опрашивываемую операцию.
Платформы с двойным значением 8259 и API-интерфейсом ввода-вывода или SAPIC ввода-вывода должны задавать бит IRQ (Bit[0]) и соответствующий бит прерывания глобальной системы (например, система, которая поддерживает 8259 и SAPIC, будет иметь значение 5).
IRQ 1 53 Совместимая с PC-AT IRQ, используемая UART:
  • 2-7, 9-12, 14-15 = допустимые irqs соответственно
  • 0-1, 8, 13, 16-255 = зарезервировано
Допустимо, только если задано значение Bit[0] поля Тип прерывания.
Прерывание глобальной системы 4 54 Глобальное системное прерывание (GSIV), используемое UART.
Недействителен, если значение Bit[1:7] поля Тип прерывания равно 0.
Если задан бит 3 поля Тип прерывания (ARMH GIC), то используется контроллер прерываний Arm GIC. Прерывания SGI и PPI arm GIC нельзя использовать для UART, поэтому для этого поля запрещено задавать любое значение в {0, ..., 31} или {1056, ..., 1119}.
Настроенная ставка Baud 1 58 Скорость передачи данных BIOS, используемая для перенаправления:
  • 0 = как есть, операционная система зависит от текущей конфигурации последовательного порта до тех пор, пока не будет инициализирован полнофункциональный драйвер.
  • 3 = 9600
  • 4 = 19200
  • 6 = 57600
  • 7 = 115200
  • 1-2, 5, 8-255 = зарезервировано
Parity 1 59
  • 0 = нет четности
  • 1-255 = зарезервировано
Стоп-биты 1 60
  • 1 = 1 стоп-бит
  • 0, 2–255 = зарезервировано
Управление потоком 1 61
  • Bit[0]: dcd требуется для передачи
  • Бит[1]: управление аппаратным потоком RTS/CTS
  • Bit[2]: управление программным обеспечением XON/XOFF
  • Бит[3:7]: зарезервировано, должно быть 0
Тип терминала 1 62 Протокол терминала, используемый BIOS для перенаправления консоли:
  • 0 = VT100
  • 1 = расширенный VT100 (VT100+)
  • 2 = VT-UTF8
  • 3 = ANSI
  • 4–255 = зарезервировано
Язык 1 63 Язык, который перенаправлял BIOS. Должно быть равно 0.
Идентификатор устройства PCI 2 64 Указывает идентификатор устройства PCI, содержащего UART, который будет использоваться в качестве порта без головного устройства.
Должен быть 0xFFFF, если это не устройство PCI.
Идентификатор поставщика PCI 2 66 Указывает идентификатор поставщика устройства PCI, содержащего UART, который будет использоваться в качестве порта без головного устройства.
Должен быть 0xFFFF, если это не устройство PCI.
Номер шины PCI 1 68 Номер шины PCI, если таблица описывает устройство PCI.
Должен быть 0x00, если это не устройство PCI.
Номер устройства PCI 1 69 Номер устройства PCI, если таблица описывает устройство PCI.
Должен быть 0x00, если это не устройство PCI.
Номер функции PCI 1 70 Номер функции PCI, если таблица описывает устройство PCI.
Должен быть 0x00, если это не устройство PCI.
Флаги PCI 4 71 Битовая маска флагов совместимости PCI. Значение должно быть равно нулю по умолчанию.
  • Bit[0]: операционная система НЕ должна подавлять перечисление устройств PNP или отключать управление питанием для этого устройства. Значение должно быть равно 0, если это не устройство PCI.
  • Бит[1-31]: зарезервировано, должно быть 0.
Сегмент PCI 1 75 Номер сегмента PCI.

Для систем с менее чем 255 шинами PCI это число должно быть равно 0.

Частота часов UART 4 76 Для редакции 2 или более ранней версии:
  • Должно быть равно 0.
Для редакции 3 или более поздней версии:
  • Нуль, указывающий на то, что частота часов UART не определена.
  • Ненулевое значение, указывающее тактовую частоту UART в Гц.
Точная скорость Baud 4 80 Содержит определенную ненулевой скорость передачи данных, которая переопределяет значение поля Настроенная ставка Baud. Если это поле равно нулю или отсутствует, используется настроенная ставка Baud. См. примечание ниже.
NamespaceStringLength 2 84 Длина NamespaceString в байтах, включая символы NUL.
NamespaceStringOffset 2 86 Смещение в байтах от начала этой структуры до поля NamespaceString[]. Это значение должно быть допустимым, так как эта строка должна присутствовать.
NamespaceString[] NamespaceStringLength NamespaceStringOffset Строка ASCII с символом NUL для уникальной идентификации этого устройства. Эта строка состоит из полной ссылки на объект , представляющий это устройство в пространстве имен ACPI. Если устройство пространства имен не существует, NamespaceString[] должен содержать только один "". (точка ASCII).

Примечание о полях скорости Baud

Поле Настроенная ставка Baud существует в виде однобайтового поля с момента создания таблицы SPCR и широко поддерживается операционными системами. Однако, поскольку это перечисление, оно ограничено в его способности точно описывать нетрадиционные скорости baud, например те, которые используются высокоскоростными UART. Таким образом, было добавлено поле Точная скорость передачи данных, чтобы встроенное ПО предоставляло вспомогательным операционным системам значение DWORD, описывающее определенную скорость передачи (например, 1500000). Если поле Точное значение скорости передачи данных содержит ненулевое значение, поле Настроенная ставка Baud должно быть равно нулю.

История редакций

Дата Редакция Описание
2/15/00 0,10 Создание
3/1/00 0,50 SPCR. Добавленные данные подписи
3/20/00 0,55 Измененные данные для включения порта и irq
3/22/00 .56 Уточнена идентификация портов Добавлена возможность отключения перенаправления. Добавлен указатель на структуру адресов универсального регистра
3/23/00 .56a Форматирование, отказ от ответственности, редактирование копии
4/24/00 .6 Опубликовано в Интернете для WinHEC
4/24/00 .6 Опубликовано общедоступное рецензирование проекта
5/25/00 .61 Исправление BASE_ADDRESS описания
5/25/00 .61 Опубликовано общедоступное рецензирование проекта
5/31/00 .7 Исправление BASE_ADDRESS примеров описания. Добавлен интерфейс 16540.
5/31/00 .71 Изменены сведения о GRAS с заметки на "*"
5/31/00 .71 Опубликовано общедоступное рецензирование проекта
6/1/00 .72 Изменены примеры COM-портов GRAS на маленькие байтовые. Добавлен текст в конец строки
7/12/00 .75 Исправлено описание IRQ. Исправлены различные проблемы с форматом. Добавлены сведения о шине PCI.
7/26/00 .76 Обновите имя поля PCI "Номер устройства". Изменен язык интро для включения не устаревшего UART.
8/10/00 .77 Изменены сведения об прерывании, добавлены APIC и SAPIC Добавлено управление потоком.
9/22/00 .78 Добавлен сегмент PCI
10/25/00 0,80 Исправлен раздел флагов PCI. Добавлены типы терминалов, добавлены сведения о FCR 16450
10/1/01 .95 Удалены коды языков
1/11/02 1.00 добавлена обновленная спецификация лицензирования до версии 1.00
3/12/14 1.01 Выпущено в рамках обещания сообщества Майкрософт
6/2/14 1.02 Изменена версия таблицы на 2 и добавлена поддержка дополнительных типов интерфейсов, как определено в спецификации DBG2.
8/10/15 1,03 % Обновлено уведомление о патенте.
7/23/2018 1,04
05.06.2020 1.05 Измененное форматирование
9/1/2020 1,06 Изменено форматирование и обновлена ссылка на спецификацию DBG2
17.02.2021 1.07 Исправлено неправильное описание в поле Stop Bits. Отмените случайное удаление поля Управления потоком. Измененное форматирование.
10/7/2021 1.08 Исправление таблицы изменено на 3 и создано поле для параметра "Частота часов UART". Измененное форматирование.
4/10/2023 1,09 Исправление таблицы изменено на 4. Добавлена поддержка RISC-V и опрашиваемая поддержка в поле Тип прерывания. Добавлены новые поля: Точная скорость передачи данных, NamespaceStringLength, NamespaceStringOffset и NamespaceString[].
5/1/2023 1,10 Уточнена формулировка в полях Глобальные системные прерывания и частота часов UART.