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 |
|
Plataformas | |
Versões com suporte |
|
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:
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:
Copiar %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe para c:\data\minte
Copie todos os arquivos em %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot para c:\data em seu dispositivo.
Telnet ou ssh em seu dispositivo
Alterar diretórios para c:\data
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 |