Partager via


Tests fonctionnels avancés I2C WinRT (mbed LPC1768 Obligatoire)

Les tests I2C effectuent des tests de performance et de résistance des contrôleurs I2C exposés au mode utilisateur via les API WinRT Windows.Devices.I2c. Les tests sont divisés en deux parties : les tests fonctionnels de base et les tests de contrainte, ainsi que les tests fonctionnels avancés. L’étendue des tests fonctionnels de base comprend :

  • Vérification qu’un contrôleur I2C avec un nom convivial spécifié est accessible à partir du mode utilisateur.
  • Vérification que les données sont écrites correctement sur une plage de vitesses d’horloge et de longueurs de mémoire tampon jusqu’à 8 octets (taille de page EEPROM).
  • Vérification que les données sont lues correctement sur une plage de vitesses d’horloge et de longueurs de mémoire tampon.
  • Vérification que les séquences write-restart-read (WriteRead’s) sont exécutées correctement sur une plage de vitesses d’horloge et de longueurs de mémoire tampon.
  • Vérification que lorsqu'une opération d'écriture, de lecture ou d'écriture-lecture est tentée sur une adresse esclave qui n'est pas accusée de réception, le pilote retourne STATUS_NO_SUCH_DEVICE. Cela est signalé par I2cDevice::Write/Read/WriteRead() comme HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) et par I2cDevice::WritePartial/ReadPartial/WriteReadPartial() comme I2cTransferStatus::SlaveAddressNotAcknowledged.
  • Vérification que les API et les pilotes fonctionnent correctement dans des conditions de contrainte. Les tests de contrainte écrivent et lisent à partir de deux EEPROM simultanément avec des poignées d'appareils distincts sur une longue durée.

L’étendue des tests fonctionnels avancés comprend :

  • Vérification que les données sont écrites correctement pour les longueurs de mémoire tampon allant jusqu’à 16384 octets.
  • Vérification qu’une condition de redémarrage I2C est générée en réponse à une séquence WriteRead.
  • Vérifiez que lorsque le dispositif esclave renvoie un NAK pendant que le maître continue d’écrire des octets, le pilote termine la requête avec STATUS_SUCCESS et signale le nombre réel d’octets écrits via les informations de la requête. Il s’agit d’un transfert partiel, qui est signalé par WritePartial() et WriteReadPartial() en tant que I2cTransferStatus ::P artialTransfer.
  • La vérification que l’étirement de l’horloge jusqu’à 500 ms est autorisé et ne cause pas l'échec du transfert.
  • Vérification que lorsque l’appareil esclave maintient la ligne d’horloge basse pendant plus de 10 secondes, le pilote termine le transfert en moins de 10 secondes avec un code d’échec. Le code d’échec doit être STATUS_IO_TIMEOUT, mais cela n’est pas vérifié pour des raisons de compatibilité.

Les tests fonctionnels de base et les tests de contrainte s’exécutent sur deux EEPROMs connectés en externe. Les tests fonctionnels avancés s’exécutent sur un LPC1768 mbed exécutant un microprogramme personnalisé. Le LPC1768 mbed est une plateforme populaire de prototypage de microcontrôleur qui peut être achetée auprès d’un large éventail de détaillants en ligne, notamment Farnell, Digikey et Adafruit. La mise à jour du microprogramme mbed est aussi simple que le glisser-déplacer d’un fichier. Le code source du microprogramme est disponible sur github. Les instructions sur la préparation du mbed et l’exécution des tests sont fournies ci-dessous.

Détails du test

   
Spécifications
  • Device.BusController.I2C.WinRT.Discretional
Plateformes
    Versions prises en charge
    • Windows 10
    • Windows 10 version 1511
    • Windows 10, version 1607
    • Windows 10 version 1703
    • Windows 10, version 1709
    • Windows 10, version 1803
    • Windows 10, version 1809
    • Windows 10, version 1903
    • Prochaine mise à jour vers Windows 10
    Durée d’exécution attendue (en minutes) 15
    Catégorie Développement
    Délai d’expiration (en minutes) 30
    Nécessite un redémarrage faux
    Nécessite une configuration spéciale vrai
    Type automatique

     

    Documentation supplémentaire

    Les tests de cette zone de fonctionnalités peuvent avoir une documentation supplémentaire, notamment les prérequis, l’installation et les informations de résolution des problèmes, qui sont disponibles dans la ou les rubriques suivantes :

    Exécution du test

    Exécution des tests fonctionnels et de contraintes de base

    Vous aurez besoin du matériel suivant pour exécuter les tests :

    Connectez les EEPROMs comme indiqué dans le diagramme suivant et connectez SDA et SCL à votre appareil sous test.

    schéma de l'EEPROM i2c

    Vous pouvez maintenant planifier les tests fonctionnels et de stress de base du gestionnaire HLK.

    Exécution des tests fonctionnels avancés

    Les tests fonctionnels avancés vérifient le comportement de NACKing, les conditions de bus suspendues, l’étirement de l’horloge et les démarrages répétés. Les tests nécessitent qu'un mbed LPC1768 exécutant le microprogramme personnalisé soit connecté à l'appareil en cours de test. Avant d’exécuter les tests, vous devez charger le microprogramme HLK sur le LPC1768 mbed. Voici comment mettre à jour le microprogramme :

    1. Branchez le LPC1768 mbed sur USB sur votre PC. Il s’affiche sous la forme d’un lecteur amovible sur votre PC.
    2. Ouvrir le lecteur dans l’Explorateur de fichiers
    3. Copiez c :\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin vers le mbed
    4. Appuyez sur le bouton sur le mbed pour réinitialiser le microcontrôleur

    Ensuite, reliez le mbed à votre appareil en cours de test. Connectez le mbed sur USB à votre appareil sous test. Ensuite, établissez les connexions I2C (pinout mbed),

    1. Connectez la broche 9 du mbed (P0.0/SDA) à la broche SDA de votre appareil en cours de test.
    2. Connecter la broche mbed 10 (P0.1/SCL) à la broche SCL sur votre appareil sous test
    3. Connecter le GND mbed à une broche GND sur votre appareil sous test

    Le mbed dispose de résistances pull-up internes activées sur les lignes SDA et SCL et ne nécessite pas de résistances pull-up externes.

    Vous pouvez maintenant planifier les tests fonctionnels avancés à partir du gestionnaire HLK.

    Résolution des problèmes

    Pour résoudre les problèmes génériques des échecs de test HLK, consultez Résolution des problèmes liés aux échecs de test Windows HLK.

    Nous vous recommandons d’exécuter les tests sur la ligne de commande pour obtenir des informations sur les défaillances et effectuer rapidement une itération sur les solutions. Voici comment exécuter les tests sur la ligne de commande :

    1. Copier %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe vers C:\data\minte

    2. Copiez Windows.Devices.LowLevel.UnitTests.dll de %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot vers c:\data sur votre appareil.

    3. Telnet ou ssh dans votre appareil

    4. Modifier les répertoires en c :\data

    5. Exécutez les tests :

      minte\te windows.devices.lowlevel.unittests.dll /name:I2c*
      

    Utilisation des tests de ligne de commande :

    minte\te windows.devices.lowlevel.unittests.dll [/name:test_name] [/select:select_clause] [/p:I2cFriendlyName=friendly_name] [/p:Duration=duration]
    
    • test_name : nom du test à exécuter, qui peut inclure des caractères génériques. Exemples : /name :I2c*, /name :I2cEepromWriteTests#metadataSet0 ::VerifyWrite#metadataSet0
    • select_clause - une clause de sélection TAEF. Exemple : /select :"@name='I2c*' et not(@name='I2cTestsEx*') »
    • friendly_name - nom convivial du contrôleur I2C testé. S’il est omis, le premier contrôleur énuméré est utilisé. Exemples : /p :I2cFriendlyName=I2C0
    • durée : 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)

    Exemples:

    Pour exécuter les tests fonctionnels de base,

    minte\te windows.devices.lowlevel.unittests.dll /select:"@name='I2c*' and not(@name='I2cTestsEx*')"
    

    Pour exécuter les tests fonctionnels avancés,

    minte\te windows.devices.lowlevel.unittests.dll /name:I2cTestsEx::*
    

    Pour exécuter les tests sur une instance de contrôleur I2C spécifique, passez le nom convivial au paramètre de test I2cFriendlyName,

    minte\te windows.devices.lowlevel.unittests.dll /name:I2c* /p:I2cFriendlyName=I2C0
    

    Pour exécuter un test spécifique, passez le nom de test complet au paramètre /name :

    minte\te windows.devices.lowlevel.unittests.dll /name:I2cNonexistentSlaveAddressTests::TestWriteRead
    

    Pour exécuter les tests de contrainte pendant la durée recommandée de 8 heures, effectuez

    minte\te windows.devices.lowlevel.unittests.dll /name:I2cStressTests::StressIoConcurrent /p:Duration=8h
    

    Un outil qui peut vous aider à résoudre les problèmes manuels est I2cTestTool. I2cTestTool est un utilitaire simple pour interagir avec I2C à partir de la ligne de commande.

    Plus d’informations

    paramètres de

    Nom du paramètre Description du paramètre
    I2cFriendlyName Nom convivial du contrôleur I2C testé (par exemple, I2C0).