GPIO WinRT 機能とストレス テスト

GPIO テストでは、WinRT API を使用して GPIO ドライバーの機能テストとストレス テストを行います。 テストの範囲は次のとおりです:

  • ループバックを使用して、すべてのピンで読み取り、書き込み、割り込みが機能する検証。 ループバック構成を指定するには以下の Board.xml の説明を参照してください。
  • ハンドルを閉じたときにピンが既定の状態に戻る検証。
  • 列挙されたピンと構成ファイルを比較して、予期されたピンが公開される検証 (以下の Board.xml の説明を参照)。
  • 割り込みを使用してピンの状態を確実に追跡できる検証。
  • ストレス条件下でドライバーが正しく動作することの検証。 ストレス テストでは、2 セットのループバック ピンを並列で切り替え、Read() によって返されたピン値が正しく、割り込みが正しい時間に発生していることを検証します。

テストの詳細

   
仕様
  • Device.BusController.Gpio.WinRT.Discretional
プラットフォーム
    サポートされているリリース
    • Windows 10
    • Windows 10 バージョン 1511
    • Windows 10 Version 1607
    • Windows 10 Version 1703
    • Windows 10 バージョン 1709
    • Windows 10 バージョン 1803
    • Windows 10 Version 1809
    • Windows 10 バージョン 1903
    • Windows 10 への次の更新プログラム
    予想される実行時間 (分) 5
    カテゴリ 開発
    タイムアウト (分) 10000
    再起動が必要です false
    特別な構成が必要です true
    Type automatic

     

    その他のドキュメント

    この機能領域のテストには、前提条件、セットアップ、トラブルシューティング情報など、次のトピックに記載されている追加のドキュメントが含まれている場合があります。

    テストの実行

    GPIO 機能テストとストレス テストを実行するには、少なくとも 4 つのピンを実行する必要があります。 これらのピン番号は、A1、A2、B1、B2 と呼ばれます。 次の回路図に示すように、A1 は 1k 抵抗を介して A2 に接続し、B1 は 1k 抵抗を介して B2 に接続する必要があります。

    gpio ループバック回路図

    抵抗は、出力の問題時のハードウェアの破損を防ぎ、テストでドライブ モードを検証するために必要です。 テストの実行スケジュールを設定するときに、A1、A2、B1、B2 のピン番号を指定するように求めるメッセージが表示されます。 コマンド ラインからテストを実行している場合は、「トラブルシューティング」セクションに示すように、ピン番号を 'Pin' ランタイム パラメーターで指定する必要があります。

    テストの既定の構成では、上記で指定した 4 つのピンだけが実行されます。 コントローラー ドライバーのカバレッジを取得するにはこれで十分ですが、公開されているすべてのピンを IO および割り込みで使用できることも検証する必要があります。 すべてのピンでループバック テストを実行するには、1k 抵抗を介して 2 つのピンごとに接続し、%programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot\Board.xml を次のように変更します。

    • <Table Id="Pins"> 要素の下に、公開されている各ピンの <行>を追加します。DefaultDriveMode は、ボードの電源が入っているときにピンが入るドライブ モードを指定します。 DefaultDriveMode は、Windows.Devices.Gpio.GpioPinDriveMode 列挙の 1 つの値です。

                <Table Id="Pins">
                  <Row>
                    <Parameter Name="PinNumber">0</Parameter>
                    <Parameter Name="Enabled">True</Parameter>
                    <Parameter Name="DefaultDriveMode">Input</Parameter>
                  </Row>
                  <Row>
                    <Parameter Name="PinNumber">1</Parameter>
                    <Parameter Name="Enabled">True</Parameter>
                    <Parameter Name="DefaultDriveMode">InputPullUp</Parameter>
                  </Row>
                  <!-- By setting Enabled to False, you can also assert that a pin should NOT be accessible -->
                  <Row>
                    <Parameter Name="PinNumber">2</Parameter>
                    <Parameter Name="Enabled">False</Parameter>
                  </Row>
                </Table>
      
      
    • <Table Id="Loopbacks"> 要素の下に、ループバック構成で接続されている 1 組のピンごとに<行>を追加します。 たとえば、次のデータでは、ピン 0 がピン 2 に接続され、ピン 1 がピン 3 に接続されていることを指定します。

                <Table Id="Loopbacks">
                  <Row>
                    <Parameter Name="Pin1">0</Parameter>
                    <Parameter Name="Pin2">2</Parameter>
                  </Row>
                  <Row>
                    <Parameter Name="Pin1">1</Parameter>
                    <Parameter Name="Pin2">3</Parameter>
                  </Row>
                </Table>
      
      

    Board-rpi.xml および Board-mbm.xml は {1} 、Raspberry Pi および MinnowBoardMax プラットフォームの例として、Board-mbm.xml are provided in %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot で提供されています。

    Board.xml は、テストの実行時にWindows.Devices.LowLevel.UnitTests.dll と同じディレクトリに存在する必要があります。 HLK マネージャーを使用してテストを実行すると、HLK ディレクトリから Board.xml がデバイスの正しい場所に自動的にコピーされます。 コマンド ラインでテストを実行する場合は、自分でテストをBoard.xml 配置する必要があります。

    トラブルシューティング

    HLK テスト エラーの一般的なトラブルシューティングについては、「Windows HLK テストのエラーのトラブルシューティング」を参照してください。

    コマンド ラインでテストを実行して、エラーに関する分析情報を取得し、ソリューションをすばやく反復処理することをお勧めします。 以下にコマンド ラインでテストを実行する方法を示します。

    1. %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe を c:\data\minte にコピーします

    2. %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot のすべてのファイルををデバイス上の c:\data にコピーします。

    3. デバイスに Telnet または ssh で接続します

    4. ディレクトリを c:\data に移動します

    5. 実行

      minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=A1,A2,B1,B2 /name:GpioTests::*
      

    コマンド ライン テストの使用法:

    minte\te.exe windows.devices.lowlevel.unittests.dll [/p:Pins=pin_numbers] [/name:test_name] [/p:Duration=duration]
    
    • pin_numbers - A1 が 1k の抵抗を介して A2 に接続され、B1 が 1k 抵抗を介して B2 に接続されている場合の A1、A2、B1、B2 形式のテストに使用するピン番号。 指定しない場合、A1 は既定で使用可能な最も小さいピン番号に設定され、A2 は既定で使用可能な最大のピン番号に設定されます。また、B1 は既定で使用可能な 2 番目に小さいピン番号に設定され、B2 は既定で使用可能な 2 番目に高いピン番号に設定されます。 例: /p:Pins=4,27,5,26
    • test_name - 実行するテストの名前。ワイルドカードを含む場合があります。 例: /name:GpioTests::*, /name:GpioTests::VerifySetDriveMode#metadataSet0
    • duration - ストレス テストを実行する期間。 例:/p: Duration = 10s (10 秒)、/p: Duration = 1m (1 分)、/p: Duration = 2h (2 時間)、/p: Duration = 1d (1 日)

    既定の構成でテストを実行するには、

    minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::*
    

    特定のテストを実行するには、完全なテスト名を/name パラメーターに渡します:

    minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::VerifyInterruptStateTracking
    

    推奨される 2 時間のストレス テストを実行するには、次を実行します。

    minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::* /p:Duration=2h
    

    手動でのトラブルシューティングに役立つツールは GpioTestTool で、コマンド ラインから GPIO と対話するためのシンプルなユーティリティです。

    詳細情報

    パラメーター

    パラメーター名 パラメーターの説明
    ピン A1 が A2 に接続され、B1 が B2 に接続されている場合の <A1>、<A2>、<B1>、<B2> 形式のループバック ピン。
    期間 各ストレス テストを実行する期間を指定します。 例: 30s、1m、1h、1d