本文档定义串行端口控制台重定向表的内容。 此表用于指示串行端口或非旧版 UART 接口是否可用于 Microsoft® Windows® 紧急管理服务(EMS)。
该表提供有关串行端口或非旧 UART 接口的配置和使用的信息。 在 BIOS 或系统固件将串行端口用于控制台输入/输出的系统上,此表应用于传达有关设置的信息,以确保固件控制台输出与 Windows EMS 输出之间的无缝转换。
此表必须与其他 ACPI 表位于系统内存中,并且必须在 ACPI RSDT 表中引用它。
专利通知:Microsoft在两个选项下使某些专利权可用于实施此规范:
- Microsoft的社区承诺,可在 https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx; 或
- 截至 2012 年 10 月 1 日,Open Web Foundation 最终规范协议版本 1.0(“OWF 1.0”)在 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)ID。 |
| OEM 表 ID | 8 | 16 | 对于串行端口控制台重定向表,表 ID 是制造商型号 ID。 |
| OEM Revision | 4 | 24 | 提供的 OEM 表 ID 的串行端口控制台重定向表的 OEM 修订版。 |
| Creator ID | 4 | 28 | 创建表的实用工具的供应商 ID。 |
| Creator Revision | 4 | 32 | 创建表的实用工具的修订。 |
| Interface Type | 1 | 36 | 指示寄存器接口的类型: 对于修订版 1:
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) 将是:
|
| Interrupt Type | 1 | 52 | UART 使用的中断类型:
具有双 8259 和 I/O APIC 或 I/O SAPIC 的平台必须设置 IRQ 位(Bit[0])和相应的全局系统中断位(例如支持 8259 和 SAPIC 的系统为 5)。 |
| IRQ | 1 | 53 | UART 使用的 PC-AT 兼容 IRQ:
|
| 全局系统中断 | 4 | 54 | UART 使用的全局系统中断 (GSIV)。 如果中断类型字段的 Bit[1:7] 为 0,则无效。 如果设置了中断类型字段的位 3(ARMH GIC),则使用 Arm GIC 中断控制器。 Arm GIC SGI 和 PPI 中断不能用于 UART,因此禁止将此字段设置为 {0、...、31} 或 {1056、...、1119} 中的任何值。 |
| 配置的波特率 | 1 | 58 | 用于重定向的 BIOS 的波特率:
|
| Parity | 1 | 59 |
|
| Stop Bits | 1 | 60 |
|
| Flow Control | 1 | 61 |
|
| Terminal Type | 1 | 62 | BIOS 用于控制台重定向的终端协议:
|
| 语言 | 1 | 63 | BIOS 重定向的语言。 必须为 0。 |
| PCI 设备 ID | 2 | 64 | 指定包含要用作无外设端口的 UART 的 PCI 设备的设备 ID。 如果不是 PCI 设备,则必须0xFFFF。 |
| PCI 供应商 ID | 2 | 66 | 指定包含要用作无外设端口的 UART 的 PCI 设备的供应商 ID。 如果不是 PCI 设备,则必须0xFFFF。 |
| PCI 总线编号 | 1 | 68 | PCI 总线编号(如果表描述了 PCI 设备)。 如果不是 PCI 设备,则必须0x00。 |
| PCI 设备编号 | 1 | 69 | PCI 设备编号(如果表描述了 PCI 设备)。 如果不是 PCI 设备,则必须0x00。 |
| PCI 函数号 | 1 | 70 | PCI 函数编号(如果表描述了 PCI 设备)。 如果不是 PCI 设备,则必须0x00。 |
| PCI Flags | 4 | 71 | PCI 兼容性标志位掩码。 默认情况下应为零。
|
| PCI Segment | 1 | 75 | PCI 段号。 对于少于 255 个 PCI 总线的系统,此数字必须为 0。 |
| UART 时钟频率 | 4 | 76 | 对于修订版 2 或更低版本:
|
| 精确波特率 | 4 | 80 | 包含一个特定的非零波特率,该速率替代配置的波特率字段的值。 如果此字段为零或不存在,则使用配置的 Baud Rate。 参阅下面的说明。 |
| NamespaceStringLength | 2 | 84 | NamespaceString 的长度(以字节为单位)包括 NUL 字符。 |
| NamespaceStringOffset | 2 | 86 | 从此结构的开头到 Field NamespaceString[] 的偏移量(以字节为单位)。 此值必须有效,因为此字符串必须存在。 |
| NamespaceString[] | NamespaceStringLength | NamespaceStringOffset | NUL 终止的 ASCII 字符串,用于唯一标识此设备。 此字符串包含对在 ACPI 命名空间中表示此设备的对象的完全限定引用。 如果不存在命名空间设备,则 NamespaceString[] 只能包含单个“.”(ASCII 句点) 字符。 |
有关“波特率”字段的注释
自创建 SPCR 表以来,配置的 Baud Rate 字段已作为单字节字段存在,并且受到作系统的广泛支持。 但是,由于它是枚举,因此其精确描述非传统波特率的能力有限,例如高速 UART 使用速率。 因此,添加了“精确波特率”字段,使固件能够提供支持作系统,并提供描述特定波特率(例如 15000000)的 DWORD 值。 当精确波特率字段包含非零值时,配置的波特率字段应为零。
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 的 Web 上 |
| 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 | 已将 GRAS COM 端口示例更改为 little-endian。 在行末尾添加了文本 |
| 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 标志部分。 添加了终端类型 16450 FCR 信息 |
| 10/1/01 | .95 | 已删除语言代码 |
| 1/11/02 | 1.00 | 将更新的许可规范添加到 1.00 |
| 3/12/14 | 1.01 | 在Microsoft社区承诺下发布 |
| 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 | 修复了“停止位”字段中的错误说明。 撤消意外删除流控制字段。 Edited formatting. |
| 10/7/2021 | 1.08 | 已将表修订更改为 3,并为 UART 时钟频率创建了字段。 Edited formatting. |
| 4/10/2023 | 1.09 | 已将表修订更改为 4。 向“中断类型”字段添加了 RISC-V 和轮询支持。 添加了新字段:Precise Baud Rate、NamespaceStringLength、NamespaceStringOffset 和 NamespaceString[]。 |
| 5/1/2023 | 1.10 | 阐明了全局系统中断和 UART 时钟频率字段中的措辞。 |