Tests fonctionnels et de contraintes GPIO WinRT
Les tests GPIO effectuent des tests fonctionnels et de stress des pilotes GPIO via les API WinRT. L’étendue des tests comprend les éléments suivants :
- Vérification que la lecture, l’écriture et les interruptions fonctionnent sur toutes les épingles à l’aide de bouclages. Consultez la description de Board.xml ci-dessous pour spécifier la configuration du bouclage.
- Vérification qu’une broche revient à son état par défaut lorsque son handle est fermé.
- Vérification que les broches attendues sont exposées en comparant les broches énumérées à un fichier de configuration (voir la description de Board.xml ci-dessous).
- Vérification que l’état d’une broche peut être suivi de manière fiable à l’aide d’interruptions.
- Vérification que les pilotes se comportent correctement dans des conditions de contrainte. Les tests de contrainte basculent deux ensembles de broches de bouclage en parallèle et vérifient que la valeur de broche retournée par Read() est correcte et que les interruptions sont déclenchées aux heures appropriées.
Détails du test
Spécifications |
|
Plateformes | |
Versions prises en charge |
|
Durée d’exécution attendue (en minutes) | 5 |
Catégorie | Développement |
Délai d’expiration (en minutes) | 10000 |
Nécessite un redémarrage | false |
Nécessite une configuration spéciale | true |
Type | automatique |
Documentation supplémentaire
Les tests de cette zone de fonctionnalités peuvent contenir une documentation supplémentaire, notamment des informations sur les prérequis, l’installation et la résolution des problèmes, que vous trouverez dans les rubriques suivantes :
Exécution du test
Les tests fonctionnels et de contrainte GPIO nécessitent au moins 4 broches pour s’exécuter. Ces numéros de broche sont appelés A1, A2, B1 et B2. A1 doit être connecté à A2 via une résistance de 1 k, et B1 doit être connecté à B2 via une résistance de 1 k, comme illustré dans le schéma suivant :
Les résistances protègent le matériel contre les dommages pendant la contention de sortie et sont nécessaires pour que les tests valident les modes de lecteur. Vous serez invité à fournir les numéros de broche de A1, A2, B1 et B2 lorsque vous planifiez l’exécution des tests. Si vous exécutez les tests à partir de la ligne de commande, vous devez spécifier les numéros d’épingle avec le paramètre d’exécution « Pins », comme indiqué dans la section Résolution des problèmes.
Dans la configuration par défaut des tests, seules les 4 broches spécifiées ci-dessus sont exécutées. Bien que cela soit suffisant pour obtenir une couverture du pilote du contrôleur, il est également nécessaire de vérifier que chaque broche exposée peut être utilisée pour les E/S et les interruptions. Pour exécuter des tests de bouclage sur toutes les broches, connectez toutes les deux broches via une résistance de 1 000, puis modifiez %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot\Board.xml comme suit :
Sous l’élément <Table Id="Pins »> , ajoutez une <ligne> pour chaque broche exposée, où DefaultDriveMode spécifie le mode de lecteur dans lequel vous attendez que la broche se trouve lorsque la carte est sous tension. DefaultDriveMode doit être l’une des valeurs de l’énumération 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>
Sous l’élément <Table Id="Loopbacks »> , ajoutez une <ligne> pour chaque paire de broches connectée dans la configuration du bouclage. Par exemple, les données suivantes spécifient que la broche 0 est connectée à la broche 2 et que la broche 1 est connectée à la broche 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 et Board-mbm.xml sont fournis dans %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot à titre d’exemples pour les plateformes Raspberry Pi et MinnowBoardMax.
Board.xml doit être présent dans le même répertoire que Windows.Devices.LowLevel.UnitTests.dll lors de l’exécution des tests. Si vous exécutez les tests via le gestionnaire HLK, il copie automatiquement Board.xml à partir du répertoire HLK vers l’emplacement approprié sur l’appareil. Si vous exécutez les tests sur la ligne de commande, vous devez déployer Board.xml vous-même.
Dépannage
Pour la résolution des problèmes génériques des échecs de test HLK, consultez Résolution des échecs de test Windows HLK.
Nous vous recommandons d’exécuter les tests sur la ligne de commande pour obtenir des informations sur les échecs et pour itérer rapidement sur les solutions. Voici comment exécuter les tests sur la ligne de commande :
Copiez %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe vers c:\data\minte
Copiez tous les fichiers dans %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot vers c:\data sur votre appareil.
Telnet ou ssh dans votre appareil
Remplacez les répertoires par c:\data
Exécuter
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=A1,A2,B1,B2 /name:GpioTests::*
Utilisation du test de ligne de commande :
minte\te.exe windows.devices.lowlevel.unittests.dll [/p:Pins=pin_numbers] [/name:test_name] [/p:Duration=duration]
- pin_numbers : numéros de broche à utiliser pour le test, sous la forme A1,A2,B1,B2 où A1 est connecté à A2 via une résistance 1k et B1 est connecté à B2 via une résistance 1k. S’il n’est pas spécifié, A1 utilise par défaut le numéro de broche disponible le plus bas, A2 par défaut le numéro de broche le plus élevé disponible, B1 le deuxième numéro de broche disponible le plus bas et B2 par défaut le numéro de broche le plus élevé disponible. Exemple : /p:Pins=4,27,5,26
- test_name : nom du test à exécuter, qui peut inclure des caractères génériques. Exemples : /name:GpioTests::*, /name:GpioTests::VerifySetDriveMode#metadataSet0
- duration : durée d’exécution des tests de contrainte. Exemples : /p:Duration=10s (10 secondes), /p:Duration=1m (1 minute), /p:Duration=2h (2 heures), /p:Duration=1d (1 jour)
Pour exécuter les tests dans la configuration par défaut,
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::*
Pour exécuter un test spécifique, transmettez le nom complet du test au paramètre /name :
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::VerifyInterruptStateTracking
Pour exécuter les tests de contrainte pendant la durée recommandée de 2 heures chacun, exécutez :
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::* /p:Duration=2h
GpioTestTool est un outil qui peut vous aider à résoudre les problèmes manuels, un utilitaire simple permettant d’interagir avec GPIO à partir de la ligne de commande.
Plus d’informations
Paramètres
Nom du paramètre | Description des paramètres |
---|---|
Épingles | Broches de bouclage de la forme <A1,A2,B1,B2><>>><< où A1 est connecté à A2 et B1 est connecté à B2 |
Durée | Spécifie la durée d’exécution de chacun des tests de contrainte. par exemple, 30s, 1m, 1h, 1d |