Test funzionali e di stress GPIO WinRT
I test GPIO eseguono test funzionali e di stress dei driver GPIO tramite le API WinRT. L'ambito dei test include:
- Verifica che la lettura, la scrittura e l'interruzione funzionino su tutti i pin usando i loopback. Per specificare la configurazione del loopback, vedere la descrizione di Board.xml seguente.
- Verifica che un pin venga ripristinato lo stato predefinito quando viene chiuso il relativo handle.
- Verifica che i pin previsti siano esposti confrontando i pin enumerati su un file di configurazione (vedere la descrizione di Board.xml di seguito).
- Verifica che lo stato di un pin possa essere monitorato in modo affidabile usando gli interruzioni.
- Verifica che i driver si comportano correttamente in condizioni di stress. I test di stress attivano due set di pin di loopback in parallelo e verificare che il valore del pin restituito da Read() sia corretto e che gli interruzioni vengano attivati al momento corretto.
Dettagli del test
Specifiche |
|
Piattaforme | |
Versioni supportate |
|
Tempo di esecuzione previsto (in minuti) | 5 |
Categoria | Sviluppo |
Timeout (in minuti) | 10000 |
Richiede il riavvio | false |
Richiede una configurazione speciale | true |
Tipo | automatic |
Documentazione aggiuntiva
I test in questa area di funzionalità potrebbero avere documentazione aggiuntiva, inclusi prerequisiti, configurazione e informazioni sulla risoluzione dei problemi, disponibili negli argomenti seguenti:
Esecuzione del test
I test funzionali e di stress GPIO richiedono almeno 4 pin da eseguire. Questi numeri di pin sono definiti A1, A2, B1 e B2. A1 deve essere connesso a A2 tramite un resistore 1k e B1 deve essere connesso a B2 tramite un resistore 1k, come illustrato nello schema seguente:
I resistori proteggono l'hardware da danni durante la contesa di output e sono necessari per i test per convalidare le modalità di unità. Verrà richiesto di specificare i numeri di pin di A1, A2, B1 e B2 quando si pianificano i test per l'esecuzione. Se si eseguono i test dalla riga di comando, è necessario specificare i numeri di pin con il parametro di runtime "Pins" come illustrato nella sezione Risoluzione dei problemi.
Nella configurazione predefinita dei test verranno eseguiti solo i 4 pin specificati in precedenza. Sebbene ciò sia sufficiente per ottenere copertura del driver del controller, è anche necessario verificare che ogni pin esposto possa essere usato per I/O e interruzioni. Per eseguire i test di loopback su tutti i pin, connettere ogni due pin insieme tramite un resistore a 1k, quindi modificare %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Test<\arch>\iot\Board.xml come indicato di seguito:
Nell'elemento <Table Id="Pins"> aggiungere una <riga> per ogni pin esposto, in cui DefaultDriveMode specifica la modalità unità in cui si prevede che il pin sia attivo quando la scheda è attivata. DefaultDriveMode deve essere uno dei valori dell'enumerazione Windows.Devices.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>
Nell'elemento <Table Id="Loopbacks"> aggiungere una <riga> per ogni coppia di pin connessi nella configurazione di loopback. Ad esempio, i dati seguenti specificano che il pin 0 è connesso al pin 2 e il pin 1 è connesso al pin 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 sono disponibili in %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Testing<\arch>\iot come esempi per le piattaforme Raspberry Pi e MinnowBoardMax.
Board.xml deve essere presente nella stessa directory di Windows.Devices.LowLevel.UnitTests.dll quando vengono eseguiti i test. Se si eseguono i test tramite gestione HLK, verrà copiata automaticamente Board.xml dalla directory HLK alla posizione corretta nel dispositivo. Se si eseguono i test nella riga di comando, è necessario distribuire Board.xml autonomamente.
Risoluzione dei problemi relativi
Per la risoluzione dei problemi generici degli errori di test HLK, vedere Risoluzione dei problemi di test di Windows HLK.
È consigliabile eseguire i test nella riga di comando per ottenere informazioni dettagliate sugli errori e per eseguire rapidamente l'iterazione sulle soluzioni. Ecco come eseguire i test nella riga di comando:
Copiare %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF<\arch>\MinTe to c:\data\minte
Copiare tutti i file in %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Testing<\arch>\iot in c:\data nel dispositivo.
Telnet o ssh nel dispositivo
Modificare le directory in c:\data
Esegui
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=A1,A2,B1,B2 /name:GpioTests::*
Utilizzo test della riga di comando:
minte\te.exe windows.devices.lowlevel.unittests.dll [/p:Pins=pin_numbers] [/name:test_name] [/p:Duration=duration]
- pin_numbers : i numeri di pin da usare per il test, del modulo A1,A2,B1,B2 in cui A1 è connesso a A2 tramite un resistore 1k e B1 è connesso a B2 tramite un resistore 1k. Se non specificato, A1 viene impostato per impostazione predefinita sul numero di pin più basso disponibile, A2 viene predefinito con il numero di pin più alto disponibile, B1 viene predefinito al secondo numero di pin disponibile più basso e B2 viene predefinito al secondo numero di pin disponibile più alto. Esempio: /p:Pins=4,27,5,26
- test_name : il nome del test da eseguire che può includere caratteri jolly. Esempi: /name:GpioTests::*, /name:GpioTests::VerifySetDriveMode#metadataSet0
- durata: quanto tempo eseguire test di stress. Esempi: /p:Duration=10s (10 secondi), /p:Duration=1m (1 minuto), /p:Duration=2h (2 ore), /p:Duration=1d (1 giorno)
Per eseguire i test nella configurazione predefinita,
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::*
Per eseguire un test specifico, passare il nome completo del test al parametro /name:
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::VerifyInterruptStateTracking
Per eseguire i test di stress per la durata consigliata di 2 ore, eseguire:
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::* /p:Duration=2h
Uno strumento che può essere utile per la risoluzione dei problemi manuali è GpioTestTool, un'utilità semplice per interagire con GPIO dalla riga di comando.
Altre informazioni
Parametri
Nome parametro | Descrizione dei parametri |
---|---|
Segnaposto | Pin di loopback del modulo <A1,A2,B1,B2<>><< in cui A1> è connesso a A2> e B1 è connesso a B2 |
Duration | Specifica quanto tempo eseguire ognuno dei test di stress. ad esempio 30, 1m, 1h, 1d |