Microsoftデバッグポートテーブル2 (DBG2)
この仕様では、システムで使用可能なデバッグポートを記述するためにプラットフォームファームウェアで使用されるデバッグポートテーブル2 (DBG2) の形式を定義します。 この情報は、次のオペレーティングシステムに適用されます。Windows 8以降。
ここで説明する参照とリソースは、このホワイトペーパーの最後に記載されています。
特許通知: Microsoftは、次の2つのオプションの下で、この仕様の実装に対して特定の特許権を利用できるようにしています。
- Microsoft's Community Promise (Microsoftのコミュニティの約束)
https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
- Open Web Foundation Final Specification Agreement Version 1.0("OWF 1.0") (2012年10月1日現在
http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0
で入手できます
ドキュメントの履歴
日 | Change |
---|---|
2011年11月29日 | 初版。 |
2012年5月22日 | Windows 8の最終的にサポートされているプラットフォームごとに表3を更新します。 |
2015 年 8 月 10 日 | 特許通知を更新しました。 |
2015年10月06日 | 新しいシリアルデバッグサブタイプを追加しました(Arm SBSA UART、Arm DCC) |
2015 年 12 月 10 日 | 新しいシリアルデバッグサブタイプを追加 (BCM2835) |
2017年5月31日 | 新しいシリアルデバッグサブタイプを追加しました(i。MX6, Generic Address Structure 16550互換) |
2020 年 6 月 11 日 | 新しいシリアルデバッグサブタイプを追加しました (SDM845v2) |
2020 年 9 月 1 日 | Markdown構文と書式設定の変更にドキュメントを変換しました。 |
2020 年 9 月 21 日 | 新しいシリアルデバッグサブタイプ (IALPSS) を追加 |
2021 年 2 月 17 日 | 既知のすべてのシリアルデバッグサブタイプを文書化 |
2023 年 4 月 10 日 | 新しいシリアルデバッグサブタイプ (RISC-V) が追加され、16550の互換性のあるサブタイプに関する説明が追加されました。 |
はじめに
Microsoftでは、すべてのシステムにデバッグポートが必要です。 プラットフォームで使用できるデバッグポート (s) を記述するために、Microsoftはオペレーティングシステム固有のテーブル (DBG2) を定義します。 このテーブルでは、デバッグ目的で1つまたは複数の独立したポート を指定します。 デバッグポートテーブルが存在する場合は、システムにデバッグポートが含まれていることを示します。 テーブルには、デバッグポートの構成に関する情報が含まれています。 テーブルは、他のAdvanced Configuration and Power Interface (ACPI) テーブルと共にシステムメモリに配置され、ACPIルートシステム記述テーブル (RSDT) で参照する必要があります。
DBG2テーブルは、デバッグポートの実装がDBGPを使用して記述できないプラットフォームのACPIデバッグポートテーブル (DBGP) を置き換えます。
デバッグ ポート テーブル 2 (DBG2)
表 1 デバッグポートテーブル2形式
表1は、DBG2のフィールドを定義します。
フィールド | バイト長 | バイトオフセット | 説明 |
---|---|---|---|
ヘッダー | |||
署名 | 4 | 0 | 'DBG2'。 デバッグポートテーブル2の署名。 |
Length | 4 | 4 | デバッグポートテーブル2全体の長さ (バイト単位) 。 |
リビジョン | 1 | 8 | このバージョンの仕様では、この値は0です。 |
チェックサム | 1 | 9 | テーブル全体の合計を0にする必要があります。 |
OEM ID | 6 | 10 | 相手先ブランド供給 (OEM) ID。 |
OEMテーブルID | 8 | 16 | デバッグポートテーブル2の場合、テーブルIDは製造元のモデルIDです。 |
OEMリビジョン | 4 | 24 | 指定されたOEMテーブルIDのデバッグポートテーブル2のOEMリビジョン。 |
Creator ID | 4 | 28 | テーブルを作成したユーティリティのベンダーID。 |
作成者リビジョン | 4 | 32 | テーブルを作成したユーティリティのリビジョン。 |
OffsetDbgDeviceInfo | 4 | 36 | このテーブルの先頭から最初のデバッグデバイス情報構造体エントリまでのオフセット (バイト単位) 。 |
NumberDbgDeviceInfo | 4 | 40 | デバッグデバイス情報構造体エントリの数を示します。 |
デバッグデバイス情報構造体 [NumberDbgDeviceInfo] | 変数 | OffsetDbgDeviceInfo | このプラットフォームのデバッグデバイス情報構造体の一覧。 構造体の形式は、このドキュメントで後述する 「デバイス情報のデバッグ」 セクションで定義されています。 |
デバッグデバイス情報構造体
表 2 デバッグデバイス情報構造体の形式
フィールド | バイト長 | バイトオフセット | 説明 |
---|---|---|---|
リビジョン | 1 | 0 | デバッグデバイス情報構造体のリビジョン。 このバージョンの仕様では、0にする必要があります。 |
Length | 2 | 1 | NamespaceStringとOEMDataを含む、この構造体の長さ (バイト単位) 。 |
NumberofGenericAddressRegisters | 1 | 3 | 使用中の汎用アドレスレジスタの数。 |
NamespaceStringLength | 2 | 4 | NUL文字を含む、NamespaceStringの長さ (バイト単位) 。 |
NamespaceStringOffset | 2 | 6 | この構造体の先頭からフィールドNamespaceString[]までのオフセット (バイト単位) 。 この文字列が存在する必要があるため、この値は有効である必要があります。 |
OemDataLength | 2 | 8 | OEMデータブロックの長さ (バイト単位) 。 |
OemDataOffset | 2 | 10 | この構造体の先頭からOemData[]フィールドまでのオフセット (バイト単位) 。 OEMデータが存在しない場合、この値は0になります。 |
ポートの種類 | 2 | 12 | このデバッグデバイスのデバッグポートの種類。 これらの各値には、表3に示すように、対応するサブタイプの値があります。 |
ポートのサブタイプ | 2 | 14 | このデバッグデバイスのデバッグポートのサブタイプ。 表3を参照してください。 |
予約済み | 2 | 16 | 予約済み、0にする必要があります。 |
BaseAddressRegisterOffset | 2 | 18 | この構造体の先頭からフィールドBaseaddressRegister[]までのオフセット (バイト単位) 。 |
AddressSizeOffset | 2 | 20 | この構造体の先頭からフィールドAddressSize[]までのオフセット (バイト単位) 。 |
BaseAddressRegister[] | (NumberofGenericAddressRegisters) *12 | BaseAddressRegisterOffset | 汎用アドレスの配列。 |
AddressSize[] | (NumberofGenericAddressRegisters) *4 | AddressSizeOffset | 上記の各汎用アドレスに対応するアドレスサイズの配列。 |
NamespaceString[] | NamespaceStringLength | NamespaceStringOffset | このデバイスを一意に識別するためのNULで終わるASCII文字列。 この文字列は、ACPI名前空間でこのデバイスを表すオブジェクトへの完全修飾参照で構成されます。 名前空間デバイスが存在しない場合、NamespaceString[]には1つの'のみを含める必要があります。'(ASCIIピリオド) 文字。 |
OemData[] | OemDataLength | OemDataOffset | 省略可能な可変長のOEM固有のデータ。 |
表 3. デバッグポートの種類とサブタイプ
ポート | Type | Subtype | 説明 |
---|---|---|---|
予約済み | 0x0000–0x7FFFおよび0xFFFF | すべて | 予約済み (使用しないでください) |
シリアル | 0x8000 | 0x0000 | 完全16550互換 |
0x0001 | DBGPリビジョン1と互換性のある16550サブセット | ||
0x0002 | MAX311xE SPI UART | ||
0x0003 | Arm PL011 UART | ||
0x0004 | MSM8x60 (例:8960) | ||
0x0005 | Nvidia 16550 | ||
0x0006 | TI OMAP | ||
0x0007 | 予約済み (使用しないでください) | ||
0x0008 | APM88xxxx | ||
0x0009 | MSM8974 | ||
0x000A | SAM5250 | ||
0x000B | Intel USIF | ||
0x000C | i。MX 6 | ||
0x000D | Arm SBSA (2.xのみ) 32ビットアクセスのみをサポートする汎用UART | ||
0x000E | Arm SBSA汎用UART | ||
0x000F | Arm DCC | ||
0x0010 | BCM2835 | ||
0x0011 | クロックレート1.8432 MHzのSDM845 | ||
0x0012 | Generic Address Structureで定義されたパラメータと互換性のある16550 | ||
0x0013 | クロックレート7.372 MHzのSDM845 | ||
0x0014 | Intel LPSS | ||
0x0015 | RISC-V SBIコンソール (サポートされている任意のSBIメカニズム) | ||
0x0016–0xFFFF | 予約済み (将来の使用のため) | ||
1394 | 0x8001 | 0x0000 | IEEE1394標準ホストコントローラインターフェイス |
0x0001–0xFFFF | 予約済み (将来の使用のため) | ||
USB | 0x8002 | 0x0000 | 0 x 0007–0 xFFFF |
0x0001 | NNNNNNデバッグインターフェイスを持つEHCI準拠のコントローラー | ||
0x0002–0x0006 | 予約済み (使用しないでください) | ||
0x0007–0xFFFF | 予約済み (将来の使用のため) | ||
正味 | 0x8003 | NNNN | NNNNは有効なPCI割り当てベンダーIDである必要があります。 |
0x8004 | すべて | 予約済み (使用しないでください) | |
予約済み | 0x8005–0xFFFE | すべて | 予約済み (将来の使用のため) |
汎用アドレス構造体のフィールドに関する注意
BaseAddressRegister [0] の汎用アドレス構造体は、いくつかのシリアルサブタイプで使用されるレジスタビット幅とアクセスサイズを指定するために使用されます。
アドレス空間IDとレジスタビットオフセットフィールドは0である必要があります。
レジスタビット幅フィールドには、レジスタのstrideが含まれており、少なくともアクセスサイズと同じ大きさの2の累乗である必要があります。 32ビットプラットフォームでは、この値は32を超えることはできません。 64ビットプラットフォームでは、この値は64を超えることはできません。
アクセスサイズフィールドは、バイト、ワード、DWORD、またはQWORDアクセスを使用するかどうかを決定するために使用されます。 QWORDアクセスは、64ビットアーキテクチャでのみ有効です。
16550ベースのUARTに関する注意事項
16550ベースのUARTに使用できるインターフェイスサブタイプは三つあります。 これらの違いは微妙ですが重要です。
インターフェイスサブタイプ0x0は、x86ベースのプラットフォームで見られるように、"レガシ"ポートI/Oを使用するシリアルポートを指します。 このタイプは、ARMやRISC-VなどのメモリマップトI/Oを使用するプラットフォームでは避ける必要があります。
インターフェイスサブタイプ0x1は、メモリマップトUARTをサポートしていますが、DBGP ACPIテーブルに記述されているもののみをサポートしています。 オペレーティングシステムの実装では、これをDBGPが提供するデバッグポートと同等として扱い、汎用アドレス構造体のベースアドレスフィールドのみを受け入れることができます。
インターフェイスサブタイプ0x12は最も柔軟な選択肢であり、新しいプラットフォームで互換性のあるオペレーティングシステムを実行する場合に推奨されます。 このサブタイプは、サブタイプ0x0と0x1で記述できるすべてのシリアルポートと、汎用アドレス構造体で従来とは異なるアクセスサイズとビット幅を必要とするものなど、新しいシリアルポートをサポートしています。