WITT I2C のテストの前提条件
Windows Inter-Integrated Circuit (I2c) テストツール (WITT) コントローラーテストでは、Windows Hardware Lab Kit (Windows HLK) Windows Simple Peripheral Bus (SPB) 準拠と、I2C コントローラーとそれに関連付けられているドライバーの信頼性を検証します。 WITT I2C コントローラー テストは、ハードウェア (WITT アダプター) とソフトウェア (テスト実行可能ファイル、テスト ドライバー、ユーティリティ) で構成されます。 WITT I2C テストの一覧については、「Device.BusController テスト」を参照してください。
この記事の内容:
WITT I2C コントローラー テスト ハードウェアのセットアップ
図 1. 一般的な WITT テストのセットアップ は、テスト、テスト ドライバーのセットアップ、および WITT テストを実行するために行う必要がある I2C 接続を示しています。
図 2. WITT ボード I2C ヘッダーでは、LED、I2C ヘッダー、USB コネクタ、テスト ピン、EEPROM ジャンパー、電圧ジャンパーが一般的な WITT ボードに表示されます。
シリアル クロック (SCL)、シリアル データ (SDA)、そしてグラウンド (GND) ピンをホスト I2C コントローラーに接続する必要があります。 汎用入出力 (GPIO) 接続は、WITT I2C コントローラー テストには必要ではありません。 SCL、SDA、GND ピンを図 3 に示します。 I2C 10 ピン ヘッダー:
USB
USB ケーブルを USB コネクタ (タイプ B) に接続します。 USB 接続を使用して、WITT ファームウェアを更新できます (これには Microsoft USB Test Tool (MUTT) ドライバーと Muttutil.exe ユーティリティが必要です。これは、MUTT ソフトウェア パッケージから入手できます。) WITT には既に I2C コントローラー テスト ファームウェアがあるため、USB 接続は電源装置の目的でのみ使用されます。 ファームウェアのアップグレードが必要な場合は、次の手順を実行します。
WITT I<superscript xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">2</superscript>C コントローラー テスト ソフトウェアのセットアップ の説明に従い、WITT I2C ターゲットをセットアップします。
管理者特権を持つコマンド プロンプト ウィンドウで、次のコマンドを実行します。
WITTUpgrade.exe I2C9665.iic /f
ここで I2C9665.iic はファームウェア ファイルで、/f はアップグレードを強制的に実行します。 (ファームウェア .iic ファイルは、他のテスト バイナリと共に Windows HLK でリリースされます)。
テスト ピン
テスト ピン ヘッダーの SCL/SDA/GND コネクタをはんだ付けし、I2C をホスト コントローラーに接続するために使用できます。 I2C 線の電圧は、ホストコントローラーの電圧と一致している必要があります。これらは一般に 1.8 v または 3.3 v であり、WITT ボードの電圧ジャンパーを切り替えることによって設定できます (図2. WITT ボードを参照してください) 。
EEPROM ジャンパー
EEPROM ジャンパーは、EEPROM から起動するかどうかを制御します。 ジャンパーは、図2 WITT ボード に示す位置に設定する必要があり ます。 (他の位置に切り替えるだけで、USB メソッドで WITT ファームウェアを回復することができます)。
LED
LED は次のように解釈できます。
赤色の LED: 電源オン。
黄色の LED: I2C バス トラフィックがない場合は、常に点灯します (SCL と SDA は高)。
青い LED: ホストと WITT ボードの間で I2C データ トラフィックが進行しているときに点滅します。
I2C 電圧 ジャンパー
このジャンパーを使用すると、I2C 信号を WITT にレベルシフトできます。 3.3 v の場合はジャンパー位置 1 から 2、1.8 v の場合はジャンパー位置 2 から 3 を設定します。 1.8 v および 3.3 v 以外の追加の電圧レベルの場合は、pin2 に電源を接続します。
WITT I2C コントローラー テスト ソフトウェアのセットアップ
WITT テスト バイナリは Windows HLK と共に配布され、\ \{$HCKServer}\Tests\{$PROCESSOR_ARCHITECTURE}\spb フォルダー内の Windows HLK コントローラーまたはサーバーにあります。 HCKServer は Windows HLK サーバーの名前で 、$PROCESSOR_ARCHITECTURE はデバイス プラットフォーム (AMD64、x86、または Arm) です。 WITT I2C テストでは、次のバイナリが必要です。
テスト周辺機器ドライバー: WITTTest.inf、WITTTest.sys、および WITTTest.cat。
WITTTest.exe
テスト中にカーネル デバッガーを使用する必要があります。 カーネル デバッガーは、Windows 用のデバッグ ツールをダウンロードしてインストールする からダウンロードしてインストールできます。
一般的なセットアップ手順 (単一のコントローラー インスタンス)
単一のコントローラーを使用する一般的なテスト構成をセットアップするには、次の手順を実行します。
一般的なテスト構成を設定するには
管理者特権を持つコマンド プロンプトを開きます。
次のコマンドを実行して、テスト周辺機器ドライバーをインストールします。
pnputil -a witttest.inf
-a フラグは、ドライバー パッケージを Windows ドライバー ストアに追加します。
Advanced Configuration and Power Interface (ACPI) テーブルを更新して、テスト デバイス ノードを列挙します。 これらは通常、SSDT (セカンダリ システム記述子テーブル) または DSDT (差別化システム記述テーブル) で定義されています。
コマンド プロンプト ウィンドウで、次のコマンドを実行して SSDT を生成します。
asl.exe /tab:ssdt
生成された SSDT.asl テーブルを次のように編集します。
Device(TP1) { Name(_ADR,0) Name (_HID, "STK0001") Name (_CID, "WITTTest") Method(_CRS, 0x0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2CSerialBus ( 0x7F, ControllerInitiated, 100000,AddressingMode7Bit, "\\_SB_.I2C3",,, , ) }) Return(RBUF) } } Device(TP2) { Name(_ADR,0) Name (_HID, "STK0002") Name (_CID, "WITTTest") Method(_CRS, 0x0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2CSerialBus ( 0x11, ControllerInitiated, 100000,AddressingMode7Bit, "\\_SB_.I2C3",,, , ) }) Return(RBUF) } } Device(TP3) { Name(_ADR,0) Name (_HID, "STK0003") Name (_CID, "WITTTest") Method(_CRS, 0x0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2CSerialBus ( 0x12, ControllerInitiated, 400000,AddressingMode7Bit, "\\_SB_.I2C3",,, , ) }) Return(RBUF) } } Device(TP4) { Name(_ADR,0) Name (_HID, "STK0004") Name (_CID, "WITTTest") Method(_CRS, 0x0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2CSerialBus ( 0x13, ControllerInitiated, 1000000,AddressingMode7Bit, "\\_SB_.I2C3",,, , ) }) Return(RBUF) } }
このテストでは、TP1 がテスト インターフェイス (0x7F) として使用されます。 TP2 (0x11) は 標準 I2C ターゲットとして構成され、TP3 (0x12) は高速 I2C ターゲットとして、TP4 (0x13) は高速プラス I2C ターゲットとして構成されます。
Note
表に示されている I2C コントローラー アドレスを、実際の I2C コントローラーのアドレスに変更します。
コマンド プロンプト ウィンドウで、次のコマンドを実行して、変更された Ssdt.asl ファイルから Ssdt.aml ファイルを生成します。
asl.exe ssdt.asl
コマンド プロンプト ウィンドウで、次のコマンドを実行して、修正された ACPI テーブルを更新します。
asl.exe /loadtable ssdt.aml
既定の設定を使用して、I2C コントローラーと Spbcx.sys でドライバーの検証を有効にします。
システムを再起動します。4つのデバイス インスタンスが、Windows HLK の デバイス マネージャーの WITT テスト クラス ノードの下に表示されます。
コマンド ラインから Spbcmd.exe を実行することで、WITT テスト環境が正しく設定されていることを検証できます。 Spbcmd ツールのサンプル コマンド出力は次のようになります。ここで、7F はテスト インターフェイスの署名で、01、02、03は3つのテスト ターゲットの署名です。
> list list Available connection ID: Target:53, Instance:0x0 Target:54, Instance:0x0 Target:55, Instance:0x0 Target:56, Instance:0x0 > i2c 0x0 0x21 //this step is not necessary if you are not testing multiple instances i2c 0x0 0x21 Instance requested:0x0 I2C address requested:0x21 Found WITT test interface at \\.\RESOURCE_HUB\0000000000000035 WITT Testing I2C address successfully changed to 0x21 for instance 0x0 > open 53 open 53 Address 53 opened > read 53 1 read 53 1 1 bytes read 7f > open 54 open 54 Address 54 opened > read 54 1 read 54 1 1 bytes read 01 > write 54 {01 02 03} write 54 {01 02 03} 3 bytes written > writeread 54 {01 02 03} 2 writeread 54 {01 02 03} 2 5 bytes transferred 01 01 52 00 c0
Open と Close コマンドを使用して、ターゲットを開いたり閉じたりします。 Read、Write、および WriteRead は、手動の I/O コマンドです。
List コマンドを使用して、使用可能なすべての I2C テスト ターゲット I2C: I2C 0x0 0x21 を一覧表示することもできます。 WITT テスト アドレスを、0x21(0x21,0x22,0x23) で始まるように切り替えます。たとえば、ASL で既定ではない I2C アドレスを構成した場合は 0 になります。
I2C コントローラー検証テストの手動手順
I2C コントローラー検証テストは、Windows HLK Studio で実行するだけでなく、手動で実行することもできます。 このセクションでは、WITT I2C コントローラーテストを手動で実行する方法について説明します。 各テストの具体的な情報については、個々のテスト トピックを参照してください。
各テストは、管理者特権を持つコマンド プロンプト ウィンドウから実行する必要があります。
wttlog.dll を、\\${HCKServer}\TaefBinaries から Witttest.exe が存在する同じディレクトリへコピーします。ここで、HCKServer は Windows HLK サーバーの名前です。
使用可能なすべてのテストとコマンド ライン パラメーターの一覧を表示するには、コマンド プロンプトで wittest.exe /? と入力します。 次に例を示します。
Witttest.exe /?
Supported command line arguments are:
/rs:<Seed>
/sm internal use of acpsim load
/fw:firmwareware iic
/i2c:address
/ins:witt instance number
/dip:device instance path
/duration:stress duration in minutes
/test:<test_id>
Example:
WITTTest.exe /test:BasicIORead
Currently the following test id's are supported:
/test:BasicIORead
/test:BasicIOWrite
/test:BasicIOSeq
/test:BasicIOKernel
/test:ClkStretch
/test:DeviceNack
/test:LockUnlock
/test:CancelRead
/test:CancelWrite
/test:CancelSeq
/test:PerfRead
/test:PerfWrite
/test:PerfSeq
/test:MultipleTargets
/test:BusRecovery
/test:Power
/test:Stress
/test:RunAll
既定値を使用して個々のテストを実行するには、Witttest.exe /test:<Testname> と入力します。ここで <Testname> はテストの名前です。たとえば、Witttest.exe /test:BasicIORead です。 既定のインスタンス "0" とは異なるインスタンスを使用してこのテストを実行するには、Witttest.exe /test:BasicIORead /ins:0x1 と入力します。 既定のテストI2C アドレス 0x11,0x12,0x13 の代わりに別のテスト I2C テスト アドレスを使用してこのテストを実行する場合、Witttest.exe /test:BasicIORead /i2c:0x21 と入力します。
すべてのテストを実行するには、Witttest.exe /test:RunAll と入力します。 このコマンドは、すべてのテストを繰り返し実行し、テスト結果はテストシーケンスの最後に出力されます。例えば:
*****Test run results*****
# Test cases passed:
BasicIORead
BasicIOWrite
BasicIOSeq
BasicIOKernel
ClkStretch
LockUnlock
PerfRead
PerfWrite
PerfSeq
MultipleTargets
Stress
# Test Cases passed with warning:
CancelRead
CancelWrite
CancelSeq
# Test Cases Failed:
DeviceNack
# Total:
Pass:11 Fail:1 Warn:3
関連トピック
JJG テクノロジによって提供されるWITT (Windows の I2C テスト ツール)