Compartilhar via


Testes funcionais e de resistência GPIO WinRT

Os testes de GPIO fazem testes funcionais e de estresse de drivers GPIO por meio das APIs do WinRT. O escopo do teste inclui:

  • A verificação de que a leitura, a gravação e as interrupções funcionam em todos os pinos usando loopbacks. Confira a descrição de Board.xml abaixo para especificar a configuração de loopback.
  • Verificação de que um pino é revertido para seu estado padrão quando seu identificador é fechado.
  • Verificação de que os pinos esperados são expostos comparando os pinos enumerados com um arquivo de configuração (consulte a descrição de Board.xml abaixo).
  • Verificação de que o estado de um pino pode ser rastreado de forma confiável usando interrupções.
  • Verificação de que os drivers se comportam corretamente sob condições de estresse. Os testes de estresse alternam dois conjuntos de pinos de loopback em paralelo e verificam se o valor do pino retornado por Read() está correto e se as interrupções são disparadas nos horários corretos.

Detalhes do teste

   
Especificações
  • Device.BusController.Gpio.WinRT.Discretional
Plataformas
    Versões com suporte
    • Windows 10
    • Windows 10, versão 1511
    • Windows 10, versão 1607
    • Windows 10, versão 1703
    • Windows 10, versão 1709
    • Windows 10, versão 1803
    • Windows 10, versão 1809
    • Windows 10, versão 1903
    • Próxima atualização para Windows 10
    Tempo de execução esperado (em minutos) 5
    Categoria Desenvolvimento
    Tempo limite (em minutos) 10000
    Requer reinicialização false
    Requer configuração especial true
    Tipo automático

     

    Documentação adicional

    Os testes nessa área de recurso podem ter documentação adicional, incluindo pré-requisitos, configuração e informações de solução de problemas, que podem ser encontradas nos tópicos a seguir:

    Executando o teste

    Os testes funcionais e de estresse do GPIO exigem um mínimo de 4 pinos para serem executados. Esses números de pino são chamados de A1, A2, B1 e B2. A1 deve estar conectada ao A2 por meio de um resistor de 1k e B1 deve estar conectado a B2 por meio de um resistor de 1k, conforme mostrado no seguinte esquema:

    esquema de loopback gpio

    Os resistores protegem o hardware contra danos durante a contenção de saída e são necessários para que os testes validem os modos de unidade. Você será solicitado a fornecer os números de pino de A1, A2, B1 e B2 ao agendar os testes para execução. Se você estiver executando os testes na linha de comando, deverá especificar os números de pino com o parâmetro de runtime 'Pins', conforme mostrado na seção Solução de problemas.

    Na configuração padrão dos testes, somente os 4 pinos especificados acima serão executados. Embora isso seja suficiente para obter cobertura do driver do controlador, também é necessário validar que cada pino exposto pode ser usado para E/S e interrupções. Para executar testes de loopback em todos os pinos, conecte a cada dois pinos por meio de um resistor de 1k e modifique %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot\Board.xml da seguinte maneira:

    • <No elemento Table Id="Pins>", adicione uma <Linha> para cada pino exposto, em que DefaultDriveMode especifica o modo de unidade em que você espera que o pino esteja quando a placa estiver ativada. DefaultDriveMode deve ser um dos valores na enumeração Windows.Devices.Gpio.GpioPinDriveMode .

                <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>
      
      
    • <No elemento Table Id="Loopbacks",> adicione uma <Linha> para cada par de pinos conectados na configuração de loopback. Por exemplo, os dados a seguir especificam que o pino 0 está conectado ao pino 2 e o pino 1 está conectado ao pino 3.

                <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 e Board-mbm.xml são fornecidos em %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot como exemplos para as plataformas Raspberry Pi e MinnowBoardMax.

    Board.xml deve estar presente no mesmo diretório que Windows.Devices.LowLevel.UnitTests.dll quando os testes são executados. Se você executar os testes por meio do gerenciador HLK, ele copiará automaticamente Board.xml do diretório HLK para o local correto no dispositivo. Se você executar os testes na linha de comando, deverá implantar Board.xml por conta própria.

    Solucionando problemas

    Para solução de problemas genéricos de falhas de teste do HLK, consulte Solução de problemas de falhas de teste do Windows HLK.

    É recomendável executar os testes na linha de comando para obter informações sobre falhas e iterar rapidamente em soluções. Veja como executar os testes na linha de comando:

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

    2. Copie todos os arquivos em %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot para c:\data em seu dispositivo.

    3. Telnet ou ssh em seu dispositivo

    4. Alterar diretórios para c:\data

    5. Executar

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

    Uso de teste de linha de comando:

    minte\te.exe windows.devices.lowlevel.unittests.dll [/p:Pins=pin_numbers] [/name:test_name] [/p:Duration=duration]
    
    • pin_numbers - os números de pino a serem usados para teste, do formato A1,A2,B1,B2 em que A1 está conectado ao A2 por meio de um resistor de 1k e B1 está conectado a B2 por meio de um resistor de 1k. Se não for especificado, A1 usará como padrão o menor número de pino disponível, A2 usará como padrão o número de pino mais alto disponível, B1 usará como padrão o segundo menor número de pino disponível e B2 usará como padrão o segundo número de pino mais alto disponível. Exemplo: /p:Pins=4,27,5,26
    • test_name - o nome do teste a ser executado, que pode incluir curingas. Exemplos: /name:GpioTests::*, /name:GpioTests::VerifySetDriveMode#metadataSet0
    • duração – quanto tempo executar testes de estresse. Exemplos: /p:Duration=10s (10 segundos), /p:Duration=1m (1 minuto), /p:Duration=2h (2 horas), /p:Duration=1d (1 dia)

    Para executar os testes na configuração padrão,

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

    Para executar um teste específico, passe o nome completo do teste para o parâmetro /name:

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

    Para executar os testes de estresse durante a duração recomendada de 2 horas cada, execute:

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

    Uma ferramenta que pode ajudar na solução de problemas manual é o GpioTestTool, um utilitário simples para interagir com o GPIO na linha de comando.

    Mais informações

    Parâmetros

    Nome do parâmetro Descrição do parâmetro
    Pins Pinos de loopback do formulário <A1,A2,B1,B2><<><>> em que A1 está conectado a A2 e B1 está conectado a B2
    Duration Especifica quanto tempo executar cada um dos testes de estresse. por exemplo, 30s, 1m, 1h, 1d