Compartir a través de


Requisitos previos de prueba de WITT I2C

El controlador de la herramienta de pruebas de Windows Inter-Integrated Circuit (WITT I2C) comprueba el cumplimiento de Windows Hardware Lab Kit (Windows HLK), Windows Simple Peripheral Bus (SPB) y la fiabilidad del controlador I2C y su controlador asociado. Las pruebas del controlador WITT I2C constan de hardware (adaptador de WITT) y software (ejecutable de prueba, controlador de prueba y utilidades). Para obtener una lista de las pruebas para WITT I2C, consulte Pruebas de Device.BusController.

En este artículo:

Configuración del hardware de prueba del controlador WITT I2C

Figura 1. Configuración típica de pruebas de WITT muestra la prueba, la configuración del controlador de pruebas y las conexiones I2C que debe realizar para ejecutar pruebas WITT.

conexiones de witt

Ilustración 2. Panel WITT con I2C Header muestra los LED, I2C header, USB connector, test pin, EEPROM jumper, and voltage jumper on a typical WITT board.

tarjeta de interfaz de red con encabezado i2c

Debe conectar los pines Reloj de serie (SCL), Datos de serie (SDA) y terrestre (GND) al controlador I2C del host. La conexión de entrada y salida (GPIO) de uso general no es necesaria para las pruebas del controlador WITT I2C. Los pines SCL, SDA y GND se muestran en la figura 3. Encabezado I2C de 10 pines:

Encabezado i2c

USB

Conecte un cable USB a un conector USB (tipo B). Puede usar la conexión USB para actualizar el firmware de WITT (esto requiere un controlador de Microsoft USB Test Tool (MUTT) y la utilidad Muttutil.exe, que puede obtener del paquete de software MUTT. Dado que WITT ya tiene firmware de prueba del controlador I2C, la conexión USB solo se usa con fines de fuente de alimentación. Si es necesario realizar una actualización de firmware, siga estos pasos:

  1. Configure los destinos de WITT I2C como se indica en Configuración del software de prueba del controlador WITT I<superscript xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">2</superscript>C.

  2. En una ventana del símbolo del sistema que tenga privilegios administrativos, ejecute el siguiente comando:

    WITTUpgrade.exe I2C9665.iic /f
    

    Donde I2C9665.iic es el archivo de firmware y /f obliga a que se produzca la actualización. (El archivo .iic de firmware se publica en Windows HLK junto con otros archivos binarios de prueba).

Pin de prueba

Los conectores SCL/SDA/GND del encabezado del pin de prueba se pueden soldar y usar para conectar un dispositivo I2C al controlador del host. El voltaje de las líneas I2C debe coincidir con el del controlador host; estos suelen ser de 1,8 v o 3,3 v, y se pueden establecer cambiando el puente de voltaje en la placa WITT (consulte la figura 2. Placa WITT).

Puente EEPROM

El puente EEPROM controla si se va a arrancar desde EEPROM. Debe establecer el puente en la posición que se muestra en la figura 2. Placa WITT. (Solo tiene que cambiar a la otra posición para recuperar el firmware de WITT a través del método USB).

LED

Puede interpretar los indicadores LED de la siguiente manera:

  • LED ROJO: ENCENDIDO.

  • LED AMARILLO: encendido constantemente si no hay tráfico I2C BUS (SCL y SDA son altos).

  • LED AZUL: parpadeando cuando el tráfico de datos I2C se está realizando entre el host y la placa WITT.

Puente de voltaje I2C

Este puente se puede usar para cambiar de nivel una señal I2C a WITT. Establezca la posición del puente 1-2 en 3,3 v o la posición del puente 2-3 en 1,8 v. Conecte la fuente de alimentación a pin2 para niveles de voltaje adicionales distintos de 1,8 v y 3,3 v.

Configuración del software de prueba del controlador WITT I2C

Los archivos binarios de prueba de WITT se envían junto con Windows HLK y se encuentran en un controlador o servidor de Windows HLK en la carpeta \\{$HCKServer}\Tests\{$PROCESSOR_ARCHITECTURE}\spb, donde HCKServer es el nombre del servidor de Windows HLK y $PROCESSOR_ARCHITECTURE es la plataforma de dispositivo (AMD64, x86 o Arm). Las pruebas de WITT I2C requieren los siguientes archivos binarios:

  • Controlador periférico de prueba: WITTTest.inf, WITTTest.sysy WITTTest.cat.

  • WITTTest.exe

Debe usar un depurador de kernel durante las pruebas. Puede descargar e instalar un depurador de kernel en Descarga e instalación de herramientas de depuración de Windows.

Paso de configuración típico (instancia de controlador único)

Para configurar una configuración de prueba típica que usa un único controlador, realice los pasos siguientes.

Para establecer una configuración de prueba típica

  1. Abra un símbolo del sistema con privilegios administrativos.

  2. Ejecute el siguiente comando para instalar el controlador periférico de prueba:

    pnputil -a witttest.inf
    

    La marca -a agrega el paquete de controladores al almacén de controladores de Windows.

  3. Actualice la tabla Interfaz avanzada de configuración y energía (ACPI) para enumerar los nodos del dispositivo de prueba. Normalmente se definen en la SSDT (tabla de descriptores del sistema secundario) o la DSDT (tabla de descriptores del sistema diferenciado).

    • En la ventana del símbolo del sistema, ejecute el siguiente comando para generar la SSDT:

      asl.exe /tab:ssdt
      
    • Edite la tabla SSDT.asl generada de la siguiente manera:

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

      En esta prueba, TP1 se usa como interfaz de prueba (0x7F), TP2 (0x11) se configura como destino estándar de I2C, TP3 (0x12) se configura como destino I2C rápido y TP4 (0x13) está configurado como destino I2C más rápido.

      Nota:

      Cambie la dirección del controlador I2C que aparece en la tabla por la del controlador I2C real.

  4. En la ventana del símbolo del sistema, ejecute el siguiente comando para generar un archivo Ssdt.aml a partir del archivo Ssdt.asl modificado:

    asl.exe ssdt.asl
    
  5. En la ventana del símbolo del sistema, ejecute el siguiente comando para actualizar la tabla ACPI revisada:

    asl.exe /loadtable ssdt.aml
    
  6. Habilite el comprobador de controladores en el controlador I2C y en Spbcx.sys mediante la configuración predeterminada.

  7. Reinicie el sistema: cuatro instancias de dispositivo deben aparecer en el nodo Clase de prueba WITT en el Administrador de dispositivos de Windows HLK.

  8. Puede comprobar que el entorno de prueba de WITT está configurado correctamente ejecutando Spbcmd.exe en la línea de comandos. La salida del comando de ejemplo de la herramienta Spbcmd se muestra a continuación, donde 7F es la firma de la interfaz de prueba y 01, 02 y 03 son firmas de tres destinos de prueba.

    > 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
    

    Use los comandos Open y Close para abrir y cerrar destinos. Read, Write y WriteRead son comandos de E/S manuales.

    También puede usar el comando List para enumerar todos los destinos de prueba de I2C disponibles I2C: I2C 0x0 0x21. Cambie la dirección de prueba de WITT para que empiece por 0x21(0x21,0x22,0x23); por ejemplo, 0 si configuró una dirección I2C no predeterminada en el ASL.

Instrucciones manuales de las pruebas de verificación del controlador I2C

Puede ejecutar manualmente la prueba de comprobación del controlador I2C, además de ejecutarla en Windows HLK Studio. En esta sección se describe cómo ejecutar manualmente las pruebas del controlador WITT I2C. Para obtener información específica sobre cada prueba, consulte los temas de prueba individuales.

Debe ejecutar cada prueba desde una ventana del símbolo del sistema que tenga privilegios administrativos.

Copie wttlog.dll de \\${HCKServer}\TaefBinaries en el mismo directorio donde reside Witttest.exe, donde HCKServer es el nombre del servidor de Windows HLK.

Para mostrar todas las pruebas disponibles y los parámetros de la línea de comandos, escriba wittest.exe /? en un símbolo del sistema. Por ejemplo:

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

Para ejecutar una prueba individual con los valores predeterminados, escriba Witttest.exe /test:<Testname>, donde <Testname> es el nombre de la prueba; por ejemplo, Witttest.exe /test:BasicIORead. Para ejecutar esta prueba con una instancia diferente a la predeterminada de 0, escriba Witttest.exe /test:BasicIORead /ins:0x1. Para ejecutar esta prueba con una dirección de prueba de I2C diferente en lugar de la dirección I2C predeterminada 0x11,0x12,0x13, escriba Witttest.exe /test:BasicIORead /i2c:0x21.

Para ejecutar todas las pruebas, escriba Witttest.exe /test:RunAll. Este comando recorre todas las pruebas y se imprime un resultado de prueba al final de la secuencia de pruebas; por ejemplo:

*****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) de JJG Technologies

Solución de problemas de pruebas del controlador de bus