串行端口控制台重定向表 (SPCR)
本文档定义串行端口控制台重定向表的内容。 此表用于指示串行端口或非旧 UART 接口是否可用于 Microsoft® Windows® Emergency Management Services (EMS) 。
该表提供有关串行端口或非旧 UART 接口的配置和使用的信息。 在 BIOS 或系统固件使用串行端口进行控制台输入/输出的系统上,此表应用于传达有关设置的信息,以确保固件控制台输出和 Windows EMS 输出之间无缝转换。
此表必须与其他 ACPI 表一起位于系统内存中,并且必须在 ACPI RSDT 表中引用它。
专利通知:Microsoft 根据两个选项为本规范的实现提供某些专利权:
- Microsoft 的社区承诺,可从 https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx获取;或
- Open Web Foundation 最终规范协议版本 1.0 (“OWF 1.0”) 自 2012 年 10 月 1 日起,可在 Open Web Foundation 网站上获取。
字段 | 字节长度 | 字节偏移量 | 描述 |
---|---|---|---|
标头 | |||
签名 | 4 | 0 | “SPCR”。 串行端口控制台重定向表的签名。 |
长度 | 4 | 4 | 整个串行端口控制台重定向表(包括 NamespaceString)的长度(以字节为单位)。 |
修订 | 1 | 8 | 当前表修订版为 4。 |
校验和 | 1 | 9 | 整个表格的总和必须为零。 |
OEM ID | 6 | 10 | 原始设备制造商 (OEM) ID。 |
OEM 表格 ID | 8 | 16 | 对于串行端口控制台重定向表,表 ID 是制造商型号 ID。 |
OEM 修订 | 4 | 24 | 提供的 OEM 表 ID 的串行端口控制台重定向表的 OEM 修订版。 |
创建者 ID | 4 | 28 | 创建该表的实用工具的供应商 ID。 |
创建者修订 | 4 | 32 | 创建该表的实用工具的修订。 |
接口类型 | 1 | 36 | 指示寄存器接口的类型: 对于修订版 1:
请参阅 DBG2 规范表 3 中的串行端口子类型。 |
预留 | 3 | 37 | 必须为 0。 |
基址 | 12 | 40 | 使用 ACPI 通用地址结构描述的串行端口寄存器集的基址;如果禁用控制台重定向,则为 0。 注意: COM1 (0x3F8) 为:
|
中断类型 | 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 |
|
停止位 | 1 | 60 |
|
流控制 | 1 | 61 |
|
终端类型 | 1 | 62 | BIOS 用于控制台重定向的终端协议:
|
语言 | 1 | 63 | BIOS 重定向的语言。 必须为 0。 |
PCI 设备 ID | 2 | 64 | 指定 PCI 设备的设备 ID,其中包含要用作无外设端口的 UART。 如果不是 PCI 设备,则必须0xFFFF。 |
PCI 供应商 ID | 2 | 66 | 指定 PCI 设备的供应商 ID,该设备包含要用作无外设端口的 UART。 如果不是 PCI 设备,则必须0xFFFF。 |
PCI 总线编号 | 1 | 68 | PCI 总线编号(如果表描述 PCI 设备)。 如果不是 PCI 设备,则必须0x00。 |
PCI 设备编号 | 1 | 69 | PCI 设备编号(如果表描述 PCI 设备)。 如果不是 PCI 设备,则必须0x00。 |
PCI 函数编号 | 1 | 70 | PCI 函数编号(如果表描述 PCI 设备)。 如果不是 PCI 设备,则必须0x00。 |
PCI 标志 | 4 | 71 | PCI 兼容性标志位掩码。 默认情况下应为零。
|
PCI 细分市场 | 1 | 75 | PCI 段编号。 对于 PCI 总线少于 255 个的系统,此数字必须为 0。 |
UART 时钟频率 | 4 | 76 | 对于修订版 2 或更低版本:
|
精确波特率 | 4 | 80 | 包含一个特定的非零波特率,该速率替代配置的波特率字段的值。 如果此字段为零或不存在,则使用配置的波特率。 参阅下面的说明。 |
NamespaceStringLength | 2 | 84 | NamespaceString 的长度(以字节为单位),包括 NUL 字符。 |
NamespaceStringOffset | 2 | 86 | 从此结构的开头到字段 NamespaceString[] 的偏移量(以字节为单位)。 此值必须有效,因为此字符串必须存在。 |
NamespaceString[] | NamespaceStringLength | NamespaceStringOffset | 以 NUL 结尾的 ASCII 字符串,用于唯一标识此设备。 此字符串包含对对象的完全限定引用,该对象表示 ACPI 命名空间中的此设备。 如果命名空间设备不存在,NamespaceString[] 只能包含单个“.” (ASCII 句点) 字符。 |
有关波特率字段的说明
自创建 SPCR 表以来,“配置的波特率”字段一直作为单字节字段存在,并受到操作系统的广泛支持。 但是,由于它是一个枚举,因此它精确描述非传统波特率(如高速 UART 使用的波特率)的能力受到限制。 因此,添加了“精确波特率”字段,使固件能够向支持操作系统提供描述特定波特率 ((例如 15000000) )的 DWORD 值。 当“精确波特率”字段包含非零值时,“配置的波特率”字段应为零。
修订历史
Date | 审阅 | 说明 |
---|---|---|
2/15/00 | .10 | 创建 |
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 | |
2020/6/5 | 1.05 | 已编辑格式 |
9/1/2020 | 1.06 | 编辑了格式并更新了 DBG2 规范的链接 |
2021/2/17 | 1.07 | 修复了“停止位”字段中的错误说明。 撤消意外删除流控制字段。 已编辑格式。 |
10/7/2021 | 1.08 | 已将表修订版更改为 3,并为 UART 时钟频率创建了字段。 已编辑格式。 |
4/10/2023 | 1.09 | 已将表修订版更改为 4。 向“中断类型”字段添加了 RISC-V 和轮询支持。 添加了新字段:精确波特率、NamespaceStringLength、NamespaceStringOffset 和 NamespaceString[]。 |
5/1/2023 | 1.10 | 阐明了“全局系统中断”和“UART 时钟频率”字段中的措辞。 |