共用方式為


序列埠控制台重定向資料表(SPCR)

本文檔定義了串列埠控制檯重定向表的內容。 此表格可用來指出序列埠或非舊版 UART 介面是否可與 Microsoft® Windows® 緊急管理服務 (EMS) 搭配使用。

下表提供有關串列埠或非傳統UART介面的配置和使用的資訊。 在 BIOS 或系統韌體使用序列埠進行主控台輸入/輸出的系統上,應該使用此表格來傳達設定的相關資訊,以確保韌體主控台輸出與 Windows EMS 輸出之間的順暢轉換。

此數據表必須與其他 ACPI 數據表一起位於系統記憶體中,而且必須在 ACPI RSDT 數據表中參考。

專利聲明: Microsoft 在兩個選項下提供某些專利權,以實作此規格:

  1. Microsoft 的社群承諾,可在 https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx;或
  2. 截至 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) 識別碼。
OEM 資料表 ID 8 16 對於串列埠控制檯重定向表,表ID是製造商型號ID。
OEM Revision 4 24 針對提供的 OEM 資料表識別碼的序列埠主控台重新導向資料表的 OEM 修訂。
Creator ID 4 28 建立資料表之公用程式的廠商識別碼。
Creator Revision 4 32 建立表格的公用程式修訂。
Interface Type 1 36 指出暫存器介面的類型:
對於修訂版 1:
  • 0 = 完整 16550 介面
  • 1 = 完整的 16450 介面 (也必須接受寫入 16550 FCR 暫存器)
  • 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 000000000000003F8
  • 在記憶體中查看:0x01080000F803000000000000
COM2 (0x2F8) 會是:
  • 整數形式:0x 01 08 00 00 000000000000002F8
  • 在記憶中查看:0x01080000F802000000000000
Interrupt Type 1 52 UART使用的中斷型別:
  • 位元[0]:PC-AT 相容雙 8259 IRQ 中斷
  • 位[1]:I/O APIC中斷(全域系統中斷)
  • 位元[2]:I/O SAPIC 中斷(全域系統中斷)
  • 位[3]:ARMH GIC中斷(全域系統中斷)
  • Bit[4]: RISC-V PLIC/APLIC 中斷 (全域系統中斷)
  • 位元[5:7]:保留 (必須設定為 0)
Where
  • 0 = 不支援
  • 1 = 支援
如果所述介面僅支援輪詢作業,請將此欄位設定為零。
同時具有雙8259和I/O APIC或I/O SAPIC的平台必須設定IRQ位(位[0])和相應的全域性系統中斷位(例如,支援8259和SAPIC的系統為5)。
IRQ 1 53 UART 所使用的 PC-AT 相容 IRQ:
  • 2-7、9-12、14-15 = 有效 IRQ 分別
  • 0-1、8、13、16-255 = 保留
只有在設定了 [中斷類型] 欄位的 [0] 時才有效。
全域系統中斷 4 54 UART使用的全域系統中斷(GSIV)。
如果 [中斷類型] 欄位的 [位元[1:7] 為 0,則無效。
如果 [插斷類型] 字段的位 3 已設定 (ARMH GIC),則會使用 Arm GIC 插斷控制器。 Arm GIC SGI 和 PPI 中斷不能用於 UART,因此禁止將此欄位設定為 {0, ..., 31} 或 {1056, ..., 1119} 中的任何值。
配置的波特率 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
  • 位[0]:傳輸所需的DCD
  • 位元[1]:RTS/CTS硬體流量控制
  • 位元[2]:XON/XOFF軟體控制
  • 位元[3:7]:保留,必須為 0
Terminal Type 1 62 BIOS 用於控制台重定向的終端機協定:
  • 0 = VT100
  • 1 = 擴充 VT100 (VT100+)
  • 2 = VT-UTF8
  • 3 = ANSI
  • 4-255 = 保留
語言 1 63 BIOS 重新導向的語言。 必須是 0。
PCI 裝置 ID 2 64 指定包含要用作無周邊埠的 UART 的 PCI 裝置的裝置識別碼。
如果不是PCI裝置,則必須0xFFFF。
PCI 供應商 ID 2 66 指定包含要用作無周邊埠的 UART 的 PCI 裝置的廠商識別碼。
如果不是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 相容性會旗標位遮罩。 預設情況下應該為零。
  • 位 [0]:作業系統不應該隱藏 PNP 裝置列舉或停用此裝置的電源管理。 如果不是 PCI 裝置,則必須是 0。
  • 位元[1-31]:保留,必須為0。
PCI Segment 1 75 PCI 區段號碼。

對於 PCI 匯流排少於 255 個的系統,此數字必須是 0。

UART 時脈頻率 4 76 對於修訂 2 或更低版本:
  • 必須是 0。
對於修訂版 3 或更高版本:
  • 零,表示UART時鐘頻率不確定。
  • 表示 UART 時鐘頻率(以 Hz 為單位)的非零值。
精確波特率 4 80 包含特定的非零波特率,該波特率會覆蓋已配置波特率欄位的值。 如果此欄位為零或不存在,則使用已配置的波特率。 請參閱下列注意事項。
NamespaceStringLength 2 84 NamespaceString 的長度 (以位元組為單位),包括 NUL 字元。
NamespaceStringOffset 2 86 從此結構開頭到欄位 NamespaceString[] 的位移量 (以位元組為單位)。 此值必須有效,因為此字串必須存在。
NamespaceString[] NamespaceStringLength NamespaceStringOffset NUL 終止的 ASCII 字串,以唯一識別此裝置。 此字串包含代表 ACPI 命名空間中此裝置之物件的完整參考。 如果命名空間裝置不存在,NamespaceString[] 必須只包含單一 '.'(ASCII 句號) 字元。

關於波特率欄位的注意事項

自建立 SPCR 表格以來,「已配置的波特率」欄位一直作為單位元組欄位存在,並受到作業系統的廣泛支援。 然而,由於它是一個枚舉,因此它精確描述非傳統波特率的能力有限,例如高速 UART 使用的波特率。 因此,添加了精確波特率字段,使固件能夠為支持操作系統提供描述特定波特率(例如 1500000)的 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 的網絡上
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 連接埠範例變更為小端。 在行尾新增文字
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 時鐘頻率字段中的措辭。