Freigeben über


GPIO WinRT – Funktions- und Belastungstests

Die GPIO-Tests führen Funktions- und Belastungstests von GPIO-Treibern über die WinRT-APIs durch. Der Prüfumfang umfasst:

  • Überprüfung, ob Lesen, Schreiben und Interrupts auf allen Pins funktionieren, indem Loopbacks verwendet werden. Siehe Beschreibung von Board.xml unten, um die Loopback-Konfiguration anzugeben.
  • Überprüfung, ob ein Pin in seinen Standardzustand zurückkehrt, wenn sein Handle geschlossen wird.
  • Überprüfung, ob die erwarteten Pins verfügbar gemacht werden, indem die aufgezählten Pins mit einer Konfigurationsdatei verglichen werden (siehe Beschreibung von Board.xml unten).
  • Überprüfung, ob der Zustand eines Pins zuverlässig mit Hilfe von Interrupts nachverfolgt werden kann.
  • Überprüfung, ob sich die Treiber unter Belastungsbedingungen korrekt verhalten. Die Belastungstests schalten zwei Sätze von Loopback-Pins parallel um und stellen sicher, dass der von Read() zurückgegebene Pin-Wert korrekt ist und dass Interrupts zu den richtigen Zeiten ausgelöst werden.

Testdetails

   
Spezifikationen
  • Device.BusController.Gpio.WinRT.Discretional
Plattformen
    Unterstützte Versionen
    • Windows 10
    • Windows 10, Version 1511
    • Windows 10, Version 1607
    • Windows 10, Version 1703
    • Windows 10, Version 1709
    • Windows 10, Version 1803
    • Windows 10, Version 1809
    • Windows 10, Version 1903
    • Nächstes Update auf Windows 10
    Voraussichtliche Laufzeit (in Minuten) 5
    Kategorie Entwicklung
    Timeout (in Minuten) 10000
    Neustart erforderlich false
    Erfordert eine spezielle Konfiguration true
    Typ automatic

     

    Zusätzliche Dokumentation

    Tests in diesem Funktionsbereich enthalten möglicherweise zusätzliche Dokumentation, einschließlich Informationen zu Voraussetzungen, Einrichtung und Fehlerbehebung, die in den folgenden Themen zu finden sind:

    Ausführen des Tests

    Die GPIO-Funktions- und Belastungstests erfordern mindestens 4 Pins, um ausgeführt zu werden. Diese Pin-Nummern werden als A1, A2, B1 und B2 bezeichnet. A1 muss mit A2 über einen 1k-Widerstand und B1 mit B2 über einen 1k-Widerstand verbunden werden, wie im folgenden Schema gezeigt:

    GPIO-Loopback-Schema

    Die Widerstände schützen die Hardware vor Schäden während der Ausgangskonkurrenz und sind für die Tests zur Überprüfung der Laufwerksmodi erforderlich. Sie werden aufgefordert, die Pin-Nummern von A1, A2, B1 und B2 anzugeben, wenn Sie die Tests für die Ausführung planen. Wenn Sie die Tests über die Befehlszeile ausführen, müssen Sie die Pin-Nummern mit dem Laufzeitparameter „Pins“ angeben, wie im Abschnitt „Fehlerbehebung“ gezeigt.

    In der Standardkonfiguration der Tests werden nur die oben angegebenen 4 Pins ausgeführt. Dies reicht zwar aus, um den Controller-Treiber abzudecken, es muss aber auch überprüft werden, ob jeder verfügbar gemachte Pin für E/A und Interrupts verwendet werden kann. Um Loopback-Tests an allen Pins durchzuführen, verbinden Sie alle zwei Pins über einen 1k-Widerstand miteinander und ändern Sie dann %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot\Board.xml wie folgt:

    • Fügen Sie unter dem Element <Table Id="Pins"> eine <Zeile> für jeden verfügbar gemachten Pin hinzu, wobei DefaultDriveMode den Laufwerksmodus angibt, in dem sich der Pin voraussichtlich befindet, wenn das Board eingeschaltet wird. DefaultDriveMode muss einer der Werte in der Aufzählung Windows.Devices.Gpio.GpioPinDriveMode sein.

                <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>
      
      
    • Fügen Sie unter dem Element <Table Id="Loopbacks"> eine <Zeile> für jedes Pin-Paar hinzu, das in der Loopback-Konfiguration verbunden ist. Die folgenden Daten geben beispielsweise an, dass Pin 0 mit Pin 2 und Pin 1 mit Pin 3 verbunden ist.

                <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 und Board-mbm.xml werden in %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot als Beispiele für die Plattformen „Raspberry Pi“ und „MinnowBoardMax“ bereitgestellt.

    Board.xml muss im selben Verzeichnis wie Windows.Devices.LowLevel.UnitTests.dll vorhanden sein, wenn die Tests ausgeführt werden. Wenn Sie die Tests über den HLK-Manager ausführen, wird Board.xml automatisch aus dem HLK-Verzeichnis an den richtigen Speicherort auf dem Gerät kopiert. Wenn Sie die Tests in der Befehlszeile ausführen, müssen Sie Board.xml selbst bereitstellen.

    Problembehandlung

    Informationen zur allgemeinen Problembehandlung bei HLK-Testfehlern finden Sie unter Problembehandlung bei Windows HLK-Testfehlern.

    Wir empfehlen, die Tests in der Befehlszeile auszuführen, um Einblicke in Fehler zu erhalten und Lösungen schnell zu iterieren. So führen Sie die Tests in der Befehlszeile aus:

    1. Kopieren Sie %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe nach c:\data\minte

    2. Kopieren Sie alle Dateien in %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot nach c:\data auf Ihrem Gerät.

    3. Telnet oder SSH in Ihr Gerät

    4. Ändern von Verzeichnissen in „c:\data“

    5. Ausführen

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

    Verwendung des Befehlszeilentests:

    minte\te.exe windows.devices.lowlevel.unittests.dll [/p:Pins=pin_numbers] [/name:test_name] [/p:Duration=duration]
    
    • pin_numbers – die zum Testen zu verwendenden Pin-Nummern in der Form A1, A2, B1, B2, wobei A1 über einen 1k-Widerstand mit A2 und B1 über einen 1k-Widerstand mit B2 verbunden ist. Wenn nicht angegeben, verwendet A1 standardmäßig die niedrigste verfügbare PIN-Nummer, A2 standardmäßig die höchste verfügbare PIN-Nummer, B1 standardmäßig die zweitniedrigste verfügbare PIN-Nummer und B2 standardmäßig die zweithöchste verfügbare PIN-Nummer. Beispiel: /p:Pins=4,27,5,26
    • test_name – der Name des auszuführenden Tests, der Platzhalter enthalten kann. Examples: /name:GpioTests::*, /name:GpioTests::VerifySetDriveMode#metadataSet0
    • Dauer – wie lange Belastungstests ausgeführt werden sollen. Beispiele: /p:Duration=10s (10 Sekunden), /p:Duration=1m (1 Minute), /p:Duration=2h (2 Stunden), /p:Duration=1d (1 Tag)

    So führen Sie die Tests in der Standardkonfiguration aus.

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

    Um einen bestimmten Test auszuführen, übergeben Sie den vollständigen Testnamen an den Parameter „/name“:

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

    Um die Belastungstests für die empfohlene Dauer von jeweils 2 Stunden auszuführen, führen Sie Folgendes aus:

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

    Ein Tool, das bei der manuellen Problembehandlung helfen kann, ist GpioTestTool, ein einfaches Dienstprogramm für die Interaktion mit GPIO über die Befehlszeile.

    Weitere Informationen

    Parameter

    Parametername Parameterbeschreibung
    Pins Loopback-Pins des Formulars <A1>,<A2>,<B1>,<B2>, wobei A1 mit A2 und B1 mit B2 verbunden ist
    Duration Gibt an, wie lange die einzelnen Belastungstests ausgeführt werden sollen. z. B. 30s, 1m, 1h, 1d