Freigeben über


Testvoraussetzungen für WITT I2C

Die Controller-Tests des Windows Inter-Integrated Circuit (I2C) Testing Tools (WITT) überprüfen die Konformität des Windows Hardware Lab Kit (Windows HLK) mit dem Windows Simple Peripheral Bus (SPB) und die Zuverlässigkeit des I2C-Controllers und seines zugehörigen Treibers. WITT I2C-Controller-Tests bestehen aus Hardware (WITT-Adapter) und Software (ausführbare Testdatei, Testtreiber und Dienstprogramme). Eine Liste der WITT I2C-Tests finden Sie unter Device.BusController-Tests.

In diesem Artikel:

WITT I2C Controller-Test-Hardware-Setup

Abbildung 1. Typisches WITT-Testsetup zeigt die Test-, Testtreibereinrichtungs- undI2C-Verbindungen an, die Sie zum Ausführen von WITT-Tests herstellen müssen.

witzige Verbindungen

Abbildung 2. WITT-Vorstand mit I2C Header zeigt die LEDs, I2C-Header, USB-Anschluss, Teststift, EEPROM Jumper und Spannungsspringer auf einem typischen WITT-Board.

Netzwerkschnittstellenkarte mit i2c-Header

Sie müssen die Pins Serial Clock (SCL), Serial Data (SDA) und Masse (GND) mit dem I2C-Controller des Hosts verbinden. Die Universell Input/Output (GPIO) Verbindung wird für die WITT I2C Controller Tests nicht benötigt. Die SCL-, SDA- und GND-Pins sind in Abbildung 3 dargestellt. I2C 10-Pin-Header:

i2c-Header

USB

Verbinden Sie ein USB-Kabel mit einem USB-Anschluss (Typ B). Sie können die USB-Verbindung verwenden, um die WITT-Firmware zu aktualisieren (dies erfordert einen Microsoft USB Test Tool (MUTT)-Treiber und das Dienstprogramm Muttutil.exe, das Sie aus dem MUTT-Softwarepaket erhalten können. Da WITT bereits über eine I2C-Controller-Test-Firmware verfügt, dient der USB-Anschluss lediglich der Stromversorgung. Wenn ein Firmware-Upgrade erforderlich ist, führen Sie die folgenden Schritte aus:

  1. Richten Sie die WITT I2C-Ziele wie in WITT I< superscript xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">2</superscript>C controller test software setup beschrieben ein.

  2. Führen Sie in einem Eingabeaufforderungsfenster mit Administratorrechten den folgenden Befehl aus:

    WITTUpgrade.exe I2C9665.iic /f
    

    Wobei I2C9665.iic die Firmware-Datei ist und /f das Upgrade erzwingt. (Die .iic-Firmwaredatei wird im Windows HLK zusammen mit anderen Testbinärdateien veröffentlicht.)

Prüfstift

Die SCL/SDA/GND-Anschlüsse auf der Teststiftleiste können gelötet und verwendet werden, um einen I2C mit dem Host-Controller zu verbinden. Die Spannung der I2C-Leitungen muss mit der des Host-Controllers übereinstimmen; diese sind typischerweise 1,8 V oder 3,3 V und können durch Umschalten des Spannungs-Jumpers auf der WITT-Platine eingestellt werden (siehe Abbildung 2. WITT-Platine).

EEPROM-Jumper

Der EEPROM-Jumper steuert, ob vom EEPROM gebootet werden soll. Sie sollten den Jumper auf die Position setzen, die in Abbildung 2 gezeigt wird. WITT Board. (Sie müssen nur in die andere Position wechseln, um die WITT-Firmware über die USB-Methode wiederherzustellen.)

LED

Sie können die LEDs wie folgt interpretieren:

  • ROTE LED: POWER ON.

  • GELBE LED: Leuchtet konstant, wenn kein I2C-BUS-Verkehr vorhanden ist (SCL und SDA sind hoch).

  • BLAUE LED: Blinkt, wenn I2C-Datenverkehr zwischen dem Host und dem WITT-Board läuft.

I2C-Spannungsjumper

Dieser Jumper kann zur Pegelverschiebung eines I2C-Signals auf WITT verwendet werden. Stellen Sie die Jumperposition 1-2 für 3,3 V oder die Jumperposition 2-3 für 1,8 V ein. Verbinden Sie die Stromquelle mit Pin2 für zusätzliche Spannungspegel außer 1,8 V und 3,3 V.

WITT I2C Controller-Test-Software-Setup

WITT-Testbinärdateien werden zusammen mit dem Windows HLK ausgeliefert und befinden sich auf einem Windows HLK-Controller oder -Server im Ordner \\{$HCKServer}\Tests\{$PROCESSOR_ARCHITECTURE}\spb, wobei HCKServer der Name des Windows HLK-Servers ist und $PROCESSOR_ARCHITECTURE ist die Geräteplattform (AMD64, x86 oder Arm). Die WITT I2C-Tests erfordern die folgenden Binärdateien:

  • Peripherietreiber testen: WITTTest.inf, WITTTest.sys, und WITTTest.cat.

  • WITTTest.exe

Sie müssen während der Tests einen Kernel-Debugger verwenden. Sie können einen Kernel-Debugger von Download and Install Debugging Tools for Windows herunterladen und installieren.

Typischer Einrichtungsschritt (einzelne Controller-Instanz)

Um eine typische Testkonfiguration einzurichten, die einen einzelnen Controller verwendet, führen Sie die folgenden Schritte aus.

Um eine typische Testkonfiguration einzurichten

  1. Öffnen Sie eine Eingabeaufforderung mit Administratorrechten.

  2. Führen Sie den folgenden Befehl aus, um den Testperipherietreiber zu installieren:

    pnputil -a witttest.inf
    

    Das Flag -a fügt das Treiberpaket dem Windows-Treiberspeicher hinzu.

  3. Aktualisieren Sie die ACPI-Tabelle (Advanced Configuration and Power Interface), um die Testgeräteknoten aufzulisten. Diese sind üblicherweise in der SSDT (Secondary System Descriptor Table) oder der DSDT (Differentiated System Description Table) definiert.

    • Führen Sie im Eingabeaufforderungsfenster den folgenden Befehl aus, um die SSDT zu generieren:

      asl.exe /tab:ssdt
      
    • Bearbeiten Sie die generierte SSDT.asl-Tabelle wie folgt:

      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)
          }
      }
      

      In diesem Test wird TP1 als Testschnittstelle (0x7F) verwendet, TP2 (0x11) ist als Standard-I2C-Target konfiguriert, TP3 (0x12) ist als schnelles I2C-Target konfiguriert und TP4 (0x13) ist als schnelles plus konfiguriert I2C-Ziel.

      Hinweis

      Ändern Sie die I2C-Controller-Adresse, die in der Tabelle aufgeführt ist, auf die des tatsächlichen I2C-Controllers.

  4. Führen Sie im Eingabeaufforderungsfenster den folgenden Befehl aus, um eine Ssdt.aml-Datei aus der geänderten Ssdt.asl-Datei zu generieren:

    asl.exe ssdt.asl
    
  5. Führen Sie im Eingabeaufforderungsfenster den folgenden Befehl aus, um die überarbeitete ACPI-Tabelle zu aktualisieren:

    asl.exe /loadtable ssdt.aml
    
  6. Aktivieren Sie die Treiberüberprüfung auf dem I2C-Controller und in Spbcx.sys, indem Sie die Standardeinstellungen verwenden.

  7. Starten Sie das System neu: Vier Geräteinstanzen sollten unter dem Knoten WITT-Testklasse im Geräte-Manager im Windows HLK angezeigt werden.

  8. Sie können überprüfen, ob die WITT-Testumgebung korrekt eingerichtet ist, indem Sie Spbcmd.exe über die Befehlszeile ausführen. Es folgt eine beispielhafte Befehlsausgabe des Spbcmd-Tools, wobei 7F die Signatur für die Testschnittstelle und 01, 02 und 03 Signaturen für drei Testziele sind.

    > 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
    

    Verwenden Sie die Befehle Öffnen und Schließen, um Ziele zu öffnen und zu schließen. Read, Write und WriteRead sind manuelle E/A-Befehle.

    Sie können auch den List-Befehl verwenden, um alle verfügbaren I2C-Testziele I2C aufzulisten: I2C 0x0 0x21. Schalten Sie die WITT-Testadresse so um, dass sie mit 0x21 (0x21,0x22,0x23) beginnt; beispielsweise 0, wenn Sie eine nicht standardmäßige I2C-Adresse in der ASL konfiguriert haben.

I2C Controller-Verifizierungstests manuelle Anweisungen

Sie können den I2C-Controller-Überprüfungstest zusätzlich zur Ausführung in Windows HLK Studio manuell ausführen. In diesem Abschnitt wird beschrieben, wie Sie die WITT I2C-Controller-Tests manuell ausführen. Spezifische Informationen zu jedem Test finden Sie in den einzelnen Testthemen.

Sie müssen jeden Test in einem Eingabeaufforderungsfenster ausführen, das über Administratorrechte verfügt.

Kopieren Sie wttlog.dll aus \\${HCKServer}\TaefBinaries in dasselbe Verzeichnis, in dem sich Witttest.exe befindet, wobei HCKServer der Name des Windows HLK-Servers ist.

Um alle verfügbaren Tests und Befehlszeilenparameter aufzulisten, geben Sie wittest.exe /? an einer Eingabeaufforderung. Zum Beispiel:

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

Um einen einzelnen Test mit den Standardwerten auszuführen, geben Sie Witttest.exe /test:<Testname> ein, wobei <Testname> der Name des Tests ist; B. Witttest.exe /test:BasicIORead. Um diesen Test mit einer anderen Instanz als der Standardinstanz 0 auszuführen, geben Sie Witttest.exe /test:BasicIORead /ins:0x1 ein. Um diesen Test mit einer anderen Test-I2C-Testadresse anstelle der standardmäßigen Test-I2C-Adresse 0x11,0x12,0x13 auszuführen, geben Sie Witttest.exe /test:BasicIORead /i2c:0x21 ein.

Um alle Tests auszuführen, geben Sie Witttest.exe /test:RunAll ein. Dieser Befehl durchläuft alle Tests und ein Testergebnis wird am Ende der Testsequenz gedruckt; zum Beispiel:

*****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

WITT (Windows I2C Test Tool) von JJG Technologies

Problembehandlung bei Buscontrollertests