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

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

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

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

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

  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 .
Field Длина байтов Смещение байтов Description
Header
Signature 4 0 SpCR. Подпись для таблицы перенаправления консоли последовательного порта.
Length 4 4 Длина в байтах всей таблицы перенаправления консоли последовательного порта, включая namespaceString.
Revision 1 8 Текущая версия таблицы — 4.
Checksum 1 9 Вся таблица должна суммироваться до нуля.
Идентификатор OEM 6 10 Исходный идентификатор изготовителя оборудования (OEM).
Идентификатор таблицы OEM 8 16 Для таблицы перенаправления консоли последовательного порта идентификатор таблицы — это идентификатор модели производителя.
Редакция OEM 4 24 Редакция OEM таблицы перенаправления консоли последовательного порта для предоставленного идентификатора таблицы OEM.
Идентификатор создателя 4 28 Идентификатор поставщика служебной программы, создавшего таблицу.
Редакция создателя 4 32 Редакция служебной программы, создающей таблицу.
Тип интерфейса 1 36 Указывает тип интерфейса регистрации:
Для версии 1:
  • 0 = полный интерфейс 16550
  • 1 = полный интерфейс 16450 (также должен принимать запись в регистр FCR 16550)
  • 2-255 = зарезервировано
Для версии 2 или более поздней версии:
См. подтипы последовательного порта в таблице 3 спецификации DBG2.
Reserved 3 37 Должно быть 0.
Базовый адрес 12 40 Базовый адрес набора регистров последовательного порта, описанный с помощью структуры универсального адреса ACPI или 0, если перенаправление консоли отключено.

Note:
COM1 (0x3F8) будет:
  • Целочисленная форма: 0x 01 08 00 00 0000000000003F8
  • Просмотр в памяти: 0x01080000F803000000000000
COM2 (0x2F8) будет:
  • Целочисленная форма: 0x 01 08 00 00 0000000000002F8
  • Просмотр в памяти: 0x01080000F802000000000000
Тип прерывания 1 52 Тип прерывания, используемый UART:
  • Bit[0]: прерывание IRQ, совместимое с PC-AT-8259
  • Bit[1]: прерывание APIC ввода-вывода (глобальное прерывание системы)
  • Bit[2]: прерывание ввода-вывода SAPIC (глобальное прерывание системы)
  • Bit[3]: прерывание ARMH GIC (глобальное прерывание системы)
  • Bit[4]: RISC-V прерывание PLIC/APLIC (глобальное прерывание системы)
  • Bit[5:7]: зарезервировано (должно быть установлено значение 0)
Где
  • 0 = не поддерживается
  • 1 = поддерживается
Установите это поле равным нулю, если описанный интерфейс поддерживает только опрашивную операцию.
Платформы с двумя 8259 и APIC ввода-вывода или SAPIC должны задать бит IRQ (Bit[0]) и соответствующий бит прерывания глобальной системы (например, система, которая поддерживает 8259 и SAPIC будет 5).
IRQ 1 53 Среда IRQ, совместимая с PC-AT, используемая UART:
  • 2-7, 9-12, 14-15 = допустимые IRQ соответственно
  • 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.
Для GICv4 (и более низкого) для этого поля запрещено задать любое значение в {0, ..., 31} или {1056, ..., 1119}.
Для GICv5 (и более поздних версий) INTID. Тип не должен быть равен 1 (PPI), нет ограничений на значение INTID.ID.
Настроенная скорость 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, необходимый для передачи
  • Bit[1]: управление аппаратным потоком RTS/CTS
  • Bit[2]: программное обеспечение XON/XOFF
  • Bit[3:7]: зарезервировано, должно быть 0
Тип терминала 1 62 Протокол терминала, используемый BIOS для перенаправления консоли:
  • 0 = VT100
  • 1 = extended VT100 (VT100+)
  • 2 = VT-UTF8
  • 3 = ANSI
  • 4-255 = зарезервировано
Language 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.
  • Bit[1-31]: зарезервировано, должно быть 0.
Сегмент PCI 1 75 Номер сегмента PCI.

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

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

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

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

Журнал редакций

Date Rev Description
2/15/00 .10 Created
3/1/00 .50 SpCR. Добавленные данные подписи
3/20/00 .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 .80 Исправлен раздел флагов PCI. Добавлены типы терминалов, добавленные сведения о FCR 16450
10/1/01 .95 Удалены коды языка
1/11/02 1.00 добавление обновленной спецификации лицензирования до версии 1.00
3/12/14 1.01 Выпущено в рамках Microsoft Community Promise
6/2/14 1.02 Изменена версия таблицы на 2 и добавлена поддержка дополнительных типов интерфейсов, как определено в спецификации DBG2.
8/10/15 1.03 Обновлено уведомление о патенте.
7/23/2018 1.04
6/5/2020 1.05 Изменение форматирования
9/1/2020 1.06 Измененное форматирование и обновленная ссылка на спецификацию DBG2
2/17/2021 1.07 Исправлено неправильное описание в поле Stop Bits. Отмена случайного удаления поля управления потоками. Измененное форматирование.
10/7/2021 1.08 Изменена версия таблицы на 3 и создано поле для частоты часов UART. Измененное форматирование.
4/10/2023 1.09 Изменена версия таблицы на 4. Добавлена RISC-V и опрашиваемая поддержка поля "Тип прерывания". Добавлены новые поля: Точный показатель Baud, namespaceStringLength, NamespaceStringOffset и NamespaceString[].
01.05.2023 1.10 Уточненная формулировка в полях глобальной системы прерывания и частоты часов UART.