Partilhar via


Pré-requisitos de Teste do WITT I2C

Os testes de controlador do WITT (Windows Inter-Integrated Circuit) (I2C) verificam a conformidade do Windows HLK (Windows Hardware Lab Kit) com o SPB (Barramento Periférico Simples) do Windows e a confiabilidade do controlador I2C e do driver associado. Os testes de controlador WITT I2C são compostos por hardware (adaptador WITT) e software (executável de teste, driver de teste e utilitários). Para obter uma lista de testes WITT I2C, confira Testes do Device.BusController.

Neste artigo:

WITT I2C Instalação de hardware de teste do controlador

Figura 1. Configuração típica de teste do WITT mostra o teste, a configuração do driver de teste e as conexões I2C que você deve fazer para executar testes WITT.

conexões witt

Figura 2. Placa WITT com o Cabeçalho I2C mostra os LEDs, o cabeçalho I2C, o conector USB, o pino de teste, o jumper EEPROM e o jumper de tensão em uma placa WITT típica.

placa de interface de rede com cabeçalho i2c

Você precisa conectar os pinos SCL (Serial Clock), SDA (Serial Data) e GND (Ground) ao controlador de host I2C. A conexão GPIO (Entrada/Saída de Uso Geral) não é necessária para os testes do controlador WITT I2C. Os pinos SCL, SDA e GND são mostrados na Figura 3. Cabeçalho de 10 pinos do I2C:

Cabeçalho do i2c

USB

Conecte um cabo USB a um conector USB (tipo B). Você pode usar a conexão USB para atualizar o firmware WITT. Isso requer um driver da MUTT (Ferramenta de Teste USB da Microsoft) e o utilitário Muttutil.exe, que podem ser obtidos no Pacote de Software da MUTT. Como o WITT já tem o firmware de teste do controlador I2C, a conexão USB é usada apenas para alimentação de energia. Se for necessário realizar uma atualização de firmware, use as seguintes etapas:

  1. Defina os destinos WITT I2C conforme descrito na WITT I<superscript xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">2</superscript>Configuração do software de teste do controlador.

  2. Em uma janela de prompt de comando que tenha privilégios administrativos, execute o seguinte comando:

    WITTUpgrade.exe I2C9665.iic /f
    

    Em que I2C9665.iic é o arquivo de firmware e /f força que ocorra a atualização. (O arquivo de firmware .iic é liberado no Windows HLK, juntamente com outros binários de teste.)

Pino de teste

Os conectores SCL/SDA/GND no cabeçalho do pino de teste podem ser soldados e usados para conectar um I2C ao controlador de host. A tensão das linhas do I2C deve corresponder à tensão do controlador de host: normalmente são de 1,8 V ou de 3,3 V e podem ser definidas alternando o jumper de tensão na placa do WITT (confira a Figura 2. Placa do WITT).

Jumper EEPROM

O jumper EEPROM controla se a inicialização será realizada por meio do EEPROM. Você deve definir o jumper na posição mostrada na Figura 2. Placa do WITT. (Você só precisa alternar para a outra posição para recuperar o firmware do WITT por meio do método USB.)

LED

Você pode interpretar os LEDs da seguinte maneira:

  • LED VERMELHO: LIGAR.

  • LED AMARELO: fica aceso constante se não há tráfego do BARRAMENTO I2C (SCL e SDA estão altos).

  • LED AZUL: pisca quando há tráfego de dados do I2C ocorrendo entre o host e a placa do WITT.

Jumper de tensão do I2C

Este jumper pode ser usado para mudar o nível de um sinal do I2C para o WITT. Defina a posição do jumper 1-2 para 3,3 V ou 2-3 para 1,8 V. Conecte a fonte de energia ao pino 2 para níveis de tensão adicionais diferentes de 1,8 V e 3,3 V.

WITT I2C Configuração do software de teste do controlador

Os binários de teste do WITT são enviados junto com o Windows HLK e estão localizados em um controlador ou servidor do Windows HLK, na pasta \\{$HCKServer}\Tests\{$PROCESSOR_ARCHITECTURE}\spb, em que HCKServer é o nome do servidor do Windows HLK e $PROCESSOR_ARCHITECTURE é a plataforma do dispositivo (AMD64, x86 ou Arm). Os testes do WITT I2C exigem os seguintes binários:

  • Driver periférico de teste: WITTTest.inf, WITTTest.sys e WITTTest.cat.

  • WITTTest.exe

É preciso usar um depurador de kernel durante os testes. É possível baixar e instalar um depurador de kernel em Baixar e instalar ferramentas de depuração para Windows.

Etapa de instalação típica (instância de controlador único)

Para definir uma configuração de teste típica que usa controlador único, execute as etapas a seguir.

Para configurar uma configuração de teste típica

  1. Abra um prompt de comando com privilégios administrativos.

  2. Execute o seguinte comando para instalar o driver periférico de teste:

    pnputil -a witttest.inf
    

    O sinalizador -a adiciona o pacote de driver ao repositório de drivers do Windows.

  3. Atualize a tabela ACPI (Advanced Configuration and Power Interface) para enumerar os nós do dispositivo de teste. Geralmente, eles são definidos na SSDT (tabela descritiva de sistema secundária) ou na DSDT (tabela descritiva de sistema diferenciada).

    • Na janela do prompt de comando, execute o seguinte comando para gerar a SSDT:

      asl.exe /tab:ssdt
      
    • Edite a tabela SSDT.asl gerada da seguinte maneira:

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

      Nesse teste, TP1 é usado como interface de teste (0x7F), TP2 (0x11) é configurado como o destino padrão do I2C, TP3 (0x12) é configurado como o destino rápido do I2C e TP4 (0x13) é configurado como o destino rápido plus do I2C.

      Observação

      Altere o endereço do controlador I2C listado na tabela para o endereço do controlador I2C real.

  4. Na janela do prompt de comando, execute o seguinte comando para gerar um arquivo Ssdt.aml com base no arquivo Ssdt.asl modificado:

    asl.exe ssdt.asl
    
  5. Na janela do prompt de comando, execute o seguinte comando para atualizar a tabela ACPI revisada:

    asl.exe /loadtable ssdt.aml
    
  6. Habilite o verificador de driver no Controlador I2C e no Spbcx.sys usando as configurações padrão.

  7. Reinicie o sistema: quatro instâncias de dispositivo devem ser exibidas no nó Classe de Testes do WITT, no Gerenciador de Dispositivos do Windows HLK.

  8. Você pode verificar se o ambiente de teste do WITT está configurado corretamente executando Spbcmd.exe na linha de comando. A seguir temos um exemplo de saída do comando da ferramenta Spbcmd, em que 7F é a assinatura da interface de teste e 01, 02 e 03 são as assinaturas de três destinos de teste.

    > 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 os comandos Open e Close para abrir e fechar os destinos. Read, Write e WriteRead são comandos manuais de E/S.

    Você também pode usar o comando List para listar todos os destinos de teste do I2C disponíveis I2C: I2C 0x0 0x21. Alterne o endereço de teste do WITT para começar com 0x21(0x21,0x22,0x23); por exemplo, 0 se você configurou o endereço I2C não padrão no ASL.

Instruções manuais de testes de verificação do controlador I2C

Você pode executar o teste de verificação do controlador I2C manualmente, além de executá-lo no Windows HLK Studio. Esta seção descreve como executar manualmente os testes do controlador I2C do WITT. Para obter informações específicas sobre cada teste, confira os tópicos de teste individuais.

Você deve executar cada teste em uma janela de prompt de comando que tenha privilégios administrativos.

Copie wttlog.dll da pasta \\${HCKServer}\TaefBinaries para o mesmo diretório que contém o arquivo Witttest.exe, em que HCKServer é o nome do servidor do Windows HLK.

Para listar todos os testes e parâmetros de linha de comando disponíveis, digite witttest.exe /? em um prompt de comando. Por exemplo:

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 executar um teste individual usando os valores padrão, digite Witttest.exe /test:<Testname>, em que <Testname> é o nome do teste; por exemplo, Witttest.exe /test:BasicIORead. Para executar esse teste com uma instância diferente da instância padrão de 0, digite Witttest.exe /test:BasicIORead /ins:0x1. Para executar esse teste com um endereço de teste I2C diferente em vez do endereço de teste I2C padrão 0x11,0x12,0x13, digite Witttest.exe /test:BasicIORead /i2c:0x21.

Para executar todos os testes, digite Witttest.exe /test:RunAll. Esse comando percorre todos os testes e imprime o resultado ao final da sequência de testes; por exemplo:

*****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 (Ferramenta de Teste I2C do Windows) da JJG Technologies

Solução de problemas de Testes do Controlador de Barramento