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


Таблица перенаправления консоли последовательного порта (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 Byte Length Byte Offset Description
Header
Signature 4 0 'SPCR'. Подпись для таблицы перенаправления консоли последовательного порта.
Length 4 4 Длина в байтах всей таблицы перенаправления консоли последовательного порта, включая namespaceString.
Revision 1 8 Текущая версия таблицы — 4.
Checksum 1 9 Вся таблица должна суммироваться до нуля.
OEM ID 6 10 Исходный идентификатор изготовителя оборудования (OEM).
Идентификатор таблицы OEM 8 16 Для таблицы перенаправления консоли последовательного порта идентификатор таблицы — это идентификатор модели производителя.
OEM Revision 4 24 Редакция OEM таблицы перенаправления консоли последовательного порта для предоставленного идентификатора таблицы OEM.
Creator ID 4 28 Идентификатор поставщика служебной программы, создавшего таблицу.
Creator Revision 4 32 Редакция служебной программы, создающей таблицу.
Interface Type 1 36 Указывает тип интерфейса регистрации:
Для версии 1:
  • 0 = полный интерфейс 16550
  • 1 = полный интерфейс 16450 (также должен принимать запись в регистр FCR 16550)
  • 2-255 = зарезервировано
Для версии 2 или более поздней версии:
See the Serial Port Subtypes in Table 3 of the DBG2 Specification.
Reserved 3 37 Должно быть 0.
Base Address 12 40 Базовый адрес набора регистров последовательного порта, описанный с помощью структуры универсального адреса ACPI или 0, если перенаправление консоли отключено.

Note:
COM1 (0x3F8) будет:
  • Целочисленная форма: 0x 01 08 00 00 0000000000003F8
  • Просмотр в памяти: 0x01080000F803000000000000
COM2 (0x2F8) будет:
  • Целочисленная форма: 0x 01 08 00 00 0000000000002F8
  • Просмотр в памяти: 0x01080000F802000000000000
Interrupt Type 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)
Where
  • 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, поэтому для этого поля запрещено задать любое значение в {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 = зарезервировано
Stop Bits 1 60
  • 1 = 1 Стоп-бит
  • 0, 2-255 = зарезервировано
Flow Control 1 61
  • Bit[0]: DCD, необходимый для передачи
  • Bit[1]: управление аппаратным потоком RTS/CTS
  • Bit[2]: программное обеспечение XON/XOFF
  • Bit[3:7]: зарезервировано, должно быть 0
Terminal Type 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 Flags 4 71 Битовая маска флагов совместимости PCI. По умолчанию должно быть равно нулю.
  • Bit[0]: операционная система не должна подавлять перечисление устройств PNP или отключать управление питанием для этого устройства. Должно быть равно 0, если это не устройство PCI.
  • Bit[1-31]: зарезервировано, должно быть 0.
PCI Segment 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" содержит ненулевое значение, поле "Настроенная ставка" должно быть равно нулю.

Revision History

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 Edited formatting
9/1/2020 1.06 Измененное форматирование и обновленная ссылка на спецификацию DBG2
2/17/2021 1.07 Исправлено неправильное описание в поле Stop Bits. Отмена случайного удаления поля управления потоками. Edited formatting.
10/7/2021 1.08 Изменена версия таблицы на 3 и создано поле для частоты часов UART. Edited formatting.
4/10/2023 1.09 Изменена версия таблицы на 4. Добавлена RISC-V и опрашиваемая поддержка поля "Тип прерывания". Добавлены новые поля: Точный показатель Baud, namespaceStringLength, NamespaceStringOffset и NamespaceString[].
5/1/2023 1.10 Уточненная формулировка в полях глобальной системы прерывания и частоты часов UART.