Microsoftデバッグポートテーブル2 (DBG2)

この仕様では、システムで使用可能なデバッグポートを記述するためにプラットフォームファームウェアで使用されるデバッグポートテーブル2 (DBG2) の形式を定義します。 この情報は、次のオペレーティングシステムに適用されます。Windows 8以降。

ここで説明する参照とリソースは、このホワイトペーパーの最後に記載されています。

特許通知: Microsoftは、次の2つのオプションの下で、この仕様の実装に対して特定の特許権を利用できるようにしています。

  1. Microsoft's Community Promise (Microsoftのコミュニティの約束) https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
  2. 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で記述できるすべてのシリアルポートと、汎用アドレス構造体で従来とは異なるアクセスサイズとビット幅を必要とするものなど、新しいシリアルポートをサポートしています。

リソース

ACPI 仕様