Condividi tramite


Prerequisiti di test di WITT I2C

Lo strumento di test di Windows Inter-Integrated Circuit (I2C) Test (WITT) verifica la conformità di Windows Hardware Lab Kit (Windows HLK) Windows Simple Peripheral Bus (SPB) e l'affidabilità del controller I2C e del driver associato. I test del controller WITT I2C sono costituiti da hardware (adattatore WITT) e software (eseguibile di test, driver di test e utilità). Per un elenco dei test WITT I2C, vedere Test Device.BusController.

Contenuto dell'articolo:

Configurazione hardware di test del controller WITT I2C

Figura 1. Configurazione tipica del test WITT mostra il test, il programma di installazione del driver di test e le connessioni I2C che è necessario eseguire test WITT.

connessioni witt

Figura 2. Scheda WITT con L'intestazione I2C mostra i LED, l'intestazione I2C, il connettore USB, il pin di test, il jumper EEPROM e il jumper di tensione su una tipica scheda WITT.

scheda di interfaccia di rete con intestazione i2c

È necessario connettere l'orologio seriale (SCL), i dati seriali (SDA) e i pin di terra (GND) all'host I2C controller. La connessione per utilizzo generico GPIO (Input/Output) non è necessaria per i test controller WITT I2C. I pin SCL, SDA e GND sono visualizzati nella figura 3. Intestazione I2C 10-Pin:

Intestazione i2c

USB

Connettere un cavo USB a un connettore USB (tipo B). È possibile usare la connessione USB per aggiornare il firmware WITT (questo richiede un driver MICROSOFT USB Test Tool (MUTT) e l'utilità Muttutil.exe , che è possibile ottenere dal pacchetto software MUTT. Poiché WITT ha già il firmware di test del controller I2C, la connessione USB viene usata solo a scopo di alimentazione. Se è necessario un aggiornamento del firmware, seguire questa procedura:

  1. Configurare le destinazioni WITT I2C come descritto in WITT I<superscript xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"> Configurazione del software di test del controller C 2</superscript>.

  2. Da una finestra del prompt dei comandi con privilegi amministrativi eseguire il comando seguente:

    WITTUpgrade.exe I2C9665.iic /f
    

    Dove I2C9665.iic è il file del firmware e /f forza l'aggiornamento a verificarsi. Il file con estensione iic del firmware viene rilasciato in Windows HLK insieme ad altri file binari di test.

Pin di test

I connettori SCL/SDA/GND nell'intestazione del pin di test possono essere venduti e usati per connettere un I2C al controller host. La tensione delle linee I2C deve corrispondere a quelle del controller host; questi sono in genere 1,8v o 3,3v e possono essere impostati passando il jumper di tensione sulla scheda WITT (vedere La figura 2. WITT Board).

Jumper EEPROM

Il jumper EEPROM controlla se avviare da EEPROM. È consigliabile impostare il jumper nella posizione visualizzata nella figura 2. WITT Board. (È sufficiente passare all'altra posizione per ripristinare il firmware WITT tramite il metodo USB).

LED

È possibile interpretare i LED come indicato di seguito:

  • LED ROSSO: POWER ON.

  • LED GIALLO: costantemente acceso se non c'è traffico I2C BUS (SCL e SDA sono elevati).

  • LED BLU: flashing quando il traffico dati I2C è in corso tra l'host e la scheda WITT.

Jumper di tensione I2C

Questo jumper può essere usato per lo spostamento a livello di un segnale I2C a WITT. Impostare la posizione del jumper 1-2 per 3.3v o jumper posizione 2-3 per 1.8v. Connettere la fonte di alimentazione al pin2 per livelli di tensione aggiuntivi diversi da 1,8v e 3,3v.

Configurazione del software di test del controller WITT I2C

I file binari di test WITT vengono forniti insieme alla cartella Windows HLK e si trovano in un controller o server Windows HLK nella cartella \\{$HCKServer}\{$PROCESSOR_ARCHITECTURE}\spb, dove HCKServer è il nome del server Windows HLK e $PROCESSOR_ARCHITECTURE è la piattaforma del dispositivo (AMD64, x86 o Arm). I test WITT I2C richiedono i file binari seguenti:

  • Test del driver di periferica: WITTTest.inf, WITTTest.syse WITTTest.cat.

  • WITTTest.exe

È necessario usare un debugger del kernel durante i test. È possibile scaricare e installare un debugger del kernel da Download e Installare strumenti di debug per Windows.

Passaggio di configurazione tipico (istanza del controller singolo)

Per configurare una configurazione di test tipica che usa un singolo controller, seguire questa procedura.

Per configurare una configurazione di test tipica

  1. Aprire un prompt dei comandi con privilegi amministrativi.

  2. Eseguire il comando seguente per installare il driver di periferica di test:

    pnputil -a witttest.inf
    

    Il flag -a aggiunge il pacchetto driver all'archivio driver di Windows.

  3. Aggiornare la tabella Advanced Configuration and Power Interface (ACPI) per enumerare i nodi del dispositivo di test. Questi sono in genere definiti nella tabella ssdT (descrittore di sistema secondario) o DSDT (tabella di descrizione del sistema differenziata).

    • Nella finestra del prompt dei comandi eseguire il comando seguente per generare SSDT:

      asl.exe /tab:ssdt
      
    • Modificare la tabella SSDT.asl generata come segue:

      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 questo test, TP1 viene usato come interfaccia di test (0x7F),TP2(0x11) è configurato come destinazione I 2 C standard, TP3 (0x12) viene configurato come veloce destinazione I2C e TP4 (0x13) è configurato come destinazione più veloce I2C.

      Nota

      Modificare l'indirizzo controller I2C elencato nella tabella in quello del controller I2C effettivo.

  4. Nella finestra del prompt dei comandi eseguire il comando seguente per generare un file Ssdt.aml dal file Ssdt.asl modificato:

    asl.exe ssdt.asl
    
  5. Nella finestra del prompt dei comandi eseguire il comando seguente per aggiornare la tabella ACPI modificata:

    asl.exe /loadtable ssdt.aml
    
  6. Abilitare il verificatore driver nel controller I2C e in Spbcx.sys usando le impostazioni predefinite.

  7. Riavviare il sistema: quattro istanze del dispositivo devono essere visualizzate nel nodo Classe di test WITT in Gestione dispositivi in Windows HLK.

  8. È possibile verificare che l'ambiente di test WITT sia configurato correttamente eseguendo Spbcmd.exe dalla riga di comando. L'output dei comandi di esempio dello strumento Spbcmd segue, dove 7F è la firma per l'interfaccia di test e 01, 02 e 03 sono firme per tre destinazioni di test.

    > 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
    

    Usare i comandi Apri e Chiudi per aprire e chiudere le destinazioni. Le operazioni di lettura, scrittura e writeRead sono comandi di I/O manuali.

    È anche possibile usare il comando List per elencare tutte le destinazioni di test I 2 C disponibili I2C: I2C 0x0 0x21. Passare all'indirizzo di test WITT per iniziare con 0x21(0x21,0x22,0x23); ad esempio, 0 se si è configurato un indirizzo I2C non predefinito nell'ASL.

Istruzioni manuali sui test di verifica del controller I2C

È possibile eseguire manualmente il test di verifica del controller I2C oltre a eseguirlo in Windows HLK Studio. Questa sezione descrive come eseguire manualmente i test controller WITT I2C. Per informazioni specifiche su ogni test, vedere i singoli argomenti di test.

È necessario eseguire ogni test da una finestra del prompt dei comandi con privilegi amministrativi.

Copiare wttlog.dll da \\${HCKServer}\TaefBinaries alla stessa directory in cui risiede Witttest.exe , dove HCKServer è il nome del server Windows HLK.

Per elencare tutti i test e i parametri della riga di comando disponibili, digitare wittest.exe /? al prompt dei comandi. Ad esempio:

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

Per eseguire un singolo test usando i valori predefiniti, digitare Witttest.exe /test:Testname>, dove< Nome test è il nome del test, ad esempio Witttest.exe /test:<BasicIORead.> Per eseguire questo test con un'istanza diversa rispetto all'istanza predefinita di 0, digitare Witttest.exe /test:BasicIORead /ins:0x1. Per eseguire questo test con un indirizzo di test I 2 C diverso anziché l'indirizzo di test predefinito I2C address 0x11,0x12,0x13, digitare Witttest.exe /test:BasicIORead /i2c:0x21.

Per eseguire tutti i test, digitare Witttest.exe /test:RunAll. Questo comando esegue il ciclo di tutti i test e un risultato del test viene stampato alla fine della sequenza di test; Per esempio:

*****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 (Strumento di test windows I2C) di JJG Technologies

Risoluzione dei problemi relativi ai test del controller del bus