Serial Port Console Redirection Table (SPCR)
このドキュメントでは、Serial Port Console Redirection Table の内容を定義します。 このテーブルは、シリアル ポートや非レガシ UART インターフェイスを Microsoft® Windows® 緊急管理サービス (EMS) で使用できるかどうかを示すために使用されます。
このテーブルは、シリアル ポートまたは非レガシ UART インターフェイスの構成と使用に関する情報を提供します。 BIOS またはシステム ファームウェアがシリアル ポートを使用してコンソールの入出力を行うシステムでは、設定に関する情報を伝達し、ファームウェア コンソールの出力と Windows EMS 出力の間の移行を円滑なものにするために、このテーブルを使用する必要があります。
このテーブルは、他の ACPI テーブルと一緒にシステム メモリに配置し、ACPI RSDT テーブルで参照されている必要があります。
特許通知: Microsoft は、以下の 2 つのオプションのいずれかに基づいて、特定の特許権を利用してこの仕様を実装することを認めています。
- https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx で入手可能な Microsoft の Community Promise
- 2012 年 10 月 1 日の時点で Open Web Foundation の Web サイトで入手可能な Open Web Foundation Final Specification Agreement Version 1.0 ("OWF 1.0")
フィールド | バイト長 | バイト オフセット | 説明 |
---|---|---|---|
ヘッダー | |||
署名 | 4 | 0 | "SPCR"。 Serial Port Console Redirection Table の署名です。 |
Length | 4 | 4 | NamespaceString を含む Serial Port Console Redirection Table 全体の長さ (バイト単位) です。 |
リビジョン | 1 | 8 | 現在のテーブル リビジョンは 4 です。 |
チェックサム | 1 | 9 | テーブル全体の合計を 0 にする必要があります。 |
OEM ID | 6 | 10 | OEM (相手先商標製品製造業者) ID です。 |
OEM Table ID (OEM テーブル ID) | 8 | 16 | Serial Port Console Redirection Table では、テーブル ID は製造元モデル ID になります。 |
OEM Revision (OEM リビジョン) | 4 | 24 | 提供された OEM テーブル ID に対応する Serial Port Console Redirection Table の OEM リビジョンです。 |
Creator ID | 4 | 28 | テーブルを作成したユーティリティのベンダー ID です。 |
Creator Revision (作成者リビジョン) | 4 | 32 | テーブルを作成したユーティリティのリビジョンです。 |
インターフェイスの種類 | 1 | 36 | レジスタ インターフェイスの種類を表します。 リビジョン 1 の場合:
「DBG2 仕様」の表 3 のシリアル ポート サブタイプを参照してください。 |
予約されています。 | 3 | 37 | 0 を指定する必要があります。 |
ベース アドレス | 12 | 40 | ACPI 汎用アドレス構造体を使用して記述されたシリアル ポート レジスタ セットのベース アドレスです。コンソールのリダイレクトが無効になっている場合は 0 になります。 注: COM1 (0x3F8) は次のようになります。
|
Interrupt Type (割り込みの種類) | 1 | 52 | UART で使用される割り込みの種類です。
デュアル 8259 と I/O APIC か I/O SAPIC をどちらも使用するプラットフォームでは、IRQ ビット (Bit[0]) と対応する Global System Interrupt ビット (たとえば 8259 と SAPIC をサポートするシステムは 5) を設定する必要があります。 |
IRQ | 1 | 53 | UART によって使用される PC-AT 互換 IRQ です。
|
Global System Interrupt | 4 | 54 | UART によって使用される Global System Interrupt (GSI) です。 Interrupt Type フィールドの Bit[1 から 7] が 0 の場合は無効です。 ビット 3 の Interrupt Type フィールドが設定されている場合 (ARMH GIC)、Arm GIC 割り込みコントローラーが使用されます。 UART では Arm GIC SGI 割り込みと PPI 割り込みは使用できないため、このフィールドを {0、...、31} または {1056,..., 1119} の任意の値に設定することは禁止されています。 |
Configured Baud Rate (設定されたボー レート) | 1 | 58 | リダイレクトに使用される BIOS のボー レートです。
|
パリティ | 1 | 59 |
|
Stop Bits (ストップ ビット) | 1 | 60 |
|
フロー制御 | 1 | 61 |
|
Terminal Type (ターミナルの種類) | 1 | 62 | BIOS がコンソール リダイレクトに使用していたターミナル プロトコルです。
|
Language | 1 | 63 | BIOS がリダイレクトしていた言語です。 0 を指定する必要があります。 |
PCI Device ID (PCI デバイス ID) | 2 | 64 | ヘッドレス ポートとして使用される UART が含まれる PCI デバイスのデバイス ID を指定します。 PCI デバイスでない場合は、0xFFFF にする必要があります。 |
PCI Vendor ID (PCI ベンダー ID) | 2 | 66 | ヘッドレス ポートとして使用される UART が含まれる PCI デバイスのベンダー ID を指定します。 PCI デバイスでない場合は、0xFFFF にする必要があります。 |
PCI Bus Number (PCI バス番号) | 1 | 68 | テーブルに PCI デバイスが記述されている場合の PCI バス番号です。 PCI デバイスでない場合は、0x00 にする必要があります。 |
PCI Device Number (PCI デバイス番号) | 1 | 69 | テーブルに PCI デバイスが記述されている場合の PCI デバイス番号です。 PCI デバイスでない場合は、0x00 にする必要があります。 |
PCI Function Number (PCI 関数番号) | 1 | 70 | テーブルに PCI デバイスが記述されている場合の PCI 関数番号です。 PCI デバイスでない場合は、0x00 にする必要があります。 |
PCI Flags (PCI フラグ) | 4 | 71 | PCI 互換性フラグのビットマスクです。 既定で 0 になっているはずです。
|
PCI Segment | 1 | 75 | PCI のセグメント番号です。 PCI バスが 255 未満のシステムでは、この数は 0 である必要があります。 |
UART Clock Frequency (UART クロック周波数) | 4 | 76 | リビジョン 2 以下の場合:
|
Precise Baud Rate (正確なボー レート) | 4 | 80 | Configured Baud Rate フィールドの値をオーバーライドする、0 以外の具体的なボー レートが入力されます。 このフィールドが 0 または未入力の場合は、設定されたボー レートが使用されます。 下記の「注意」を参照。 |
NamespaceStringLength | 2 | 84 | NUL 文字を含む、NamespaceString の長さ (バイト単位) です。 |
NamespaceStringOffset | 2 | 86 | この構造体の先頭からフィールド NamespaceString[] までのオフセット (バイト単位) です。 この文字列が存在する必要があるため、この値は有効である必要があります。 |
NamespaceString[] | NamespaceStringLength | NamespaceStringOffset | このデバイスを一意に識別するための、NUL で終わる ASCII 文字列です。 この文字列は、ACPI 名前空間でこのデバイスを表すオブジェクトへの完全修飾参照で構成されます。 名前空間デバイスが存在しない場合、NamespaceString[] には "." (ASCII ピリオド) を 1 文字のみ含める必要があります。 |
ボー レート フィールドについての注意事項
SPCR テーブルを作成すると、それ以降 Configured Baud Rate フィールドは 1 バイト フィールドとして存在し、オペレーティング システムで広くサポートされるようになります。 ただし、列挙型であるため、高速 UART で使用されるものなど、従来とは異なるボー レートを正確に記述する機能には限界があります。 そこで追加されたのが、Precise Baud Rate フィールドです。このフィールドにより、ファームウェアは対応するオペレーティング システムに、特定のボー レート (1500000 など) を記述する DWORD 値を提供できるようになりました。 Precise Baud Rate フィールドに 0 以外の値が入力されていると、Configured Baud Rate フィールドは 0 になります。
リビジョン履歴
日 | ... | 説明 |
---|---|---|
2000/2/15 | 10. | 作成済 |
2000/3/1 | 50. | "SPCR" の 署名データを追加 |
2000/3/20 | 55. | ポートと IRQ が含まれるかたちでデータを変更 |
2000/3/22 | 56. | ポート識別を明確化、リダイレクトを無効にする機能を追加、 汎用レジスタ アドレス構造体へのポインターを追加 |
2000/3/23 | .56a | 書式設定、免責事項、コピー編集 |
2000/4/24 | 6. | WinHEC 向けに Web へ投稿 |
2000/4/24 | 6. | 公開レビューのドラフトを公開 |
2000/5/25 | 61. | BASE_ADDRESS の説明を修正 |
2000/5/25 | 61. | 公開レビューのドラフトを公開 |
2000/5/31 | 7. | BASE_ADDRESS の説明/例を修正、 16540 インターフェイスを追加 |
2000/5/31 | 71. | GRAS の情報を注から "*" に変更 |
2000/5/31 | 71. | 公開レビューのドラフトを公開 |
2000/6/1 | 72. | GRAS COM ポートの例をリトル エンディアンに変更、 行末にテキストを追加 |
2000/7/12 | .75 | IRQ の説明を修正、 さまざまな形式の問題を修正、PCI バス情報を追加 |
2000/7/26 | .76 | PCI フィールド名 "Device Number" を更新 冒頭の文章を非レガシ UART に言及するように変更 |
2000/8/10 | .77 | 割り込み情報を変更、APIC と SAPIC を追加するフロー制御を追加 |
2000/9/22 | .78 | PCI セグメントを追加 |
2000/10/25 | 80。 | PCI フラグのセクションを修正 ターミナルの種類を追加、16450 FCR 情報を追加 |
2001/10/1 | .95 | 言語コードを削除 |
2002/1/11 | 1.00 | ライセンス仕様を 1.00 に追加 |
2014/3/12 | 1.01 | Microsoft Community Promise に基づいてリリース |
2014/6/2 | 1.02 | テーブルのリビジョンを 2 に変更、DBG2 仕様で定義されている追加のインターフェイスの種類のサポートを追加 |
2015/8/10 | 1.03 | 特許通知を更新 |
7/23/2018 | 1.04 | |
2020/6/5 | 1.05 | 書式設定を編集 |
9/1/2020 | 1.06 | 書式設定を編集、DBG2 仕様へのリンクを更新 |
2021/2/17 | 1.07 | Stop Bits (ストップ ビット) フィールドの不正確な説明を修正 誤って削除された Flow Control (フロー制御) フィールドを原状復帰、 書式設定を編集 |
2021/10/7 | 1.08 | テーブルのリビジョンを 3 に変更、UART Clock Frequency (UART クロック周波数) のフィールドを作成 書式設定を編集 |
4/10/2023 | 1.09 | テーブルのリビジョンを 4 に変更 Interrupt Type (割り込みの種類) フィールドに RISC-V とポーリングされたサポートを追加 新しいフィールドを追加: Precise Baud Rate、NamespaceStringLength、NamespaceStringOffset、NamespaceString[] |
2023/5/1 | 1.10 | Global System Interrupt (GSI) と UART Clock Frequency (クロック周波数フィールド) の表現を明確化 |