Partager via


Prérequis des tests de WITT I2C

Les tests du contrôleur WITT (Windows Inter-Integrated Circuit (I2C) Testing Tool) vérifient la conformité du kit Windows Hardware Lab Kit (Windows HLK) Windows à SPB (Simple Peripheral Bus), et la fiabilité du contrôleur I2C et de son pilote associé. Les tests du contrôleur WITT I2C portent sur le matériel (adaptateur WITT) et le logiciel (tester l’exécutable, tester le pilote et les utilitaires). Pour obtenir la liste des tests WITT I2C, consultez Tests de Device.BusController.

Contenu de cet article :

Configuration matérielle de test du contrôleur WITT I2C

Figure 1. Configuration de test WITT classique montre les connexions de test, de configuration du pilote de test et i2C que vous devez effectuer pour exécuter des tests WITT.

Connexions witt

Figure 2 : WITT Board avec I2C L’en-tête affiche les LED, l’en-têteI2C, le connecteur USB, la broche de test, le jumper EEPROM et le sauteur de tension sur une carte WITT standard.

carte d’interface réseau avec en-tête i2c

Vous devez connecter les broches SCL (Horloge série), SDA (Données série) et GND (Terre) au contrôleur I2C hôte. La connexion GPIO (General Purpose Input/Output) n’est pas nécessaire pour les tests du contrôleur WITT I2C. Les broches SCL, SDA et GND sont montrée dans la figure 3. Embase I2C à 10 broches :

En-tête i2c

USB

Connectez un câble USB à un connecteur USB (type B). Vous pouvez utiliser la connexion USB pour mettre à jour le microprogramme WITT (ceci nécessite un pilote MUTT (Microsoft USB Test Tool) et l’utilitaire Muttutil.exe, que vous pouvez obtenir à partir du package logiciel MUTT. Comme WITT a déjà le microprogramme du test du contrôleur I2C, la connexion USB est utilisée seulement pour l’alimentation. Si une mise à niveau du microprogramme est nécessaire, effectuez les étapes suivantes :

  1. Configurez les cibles WITT I2C comme décrit dans Configuration logicielle pour les tests du contrôleur WITT I<superscript xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">2</superscript>C.

  2. À partir d’une fenêtre d’invite de commandes disposant de privilèges d’administration, exécutez la commande suivante :

    WITTUpgrade.exe I2C9665.iic /f
    

    I2C9665.iic est le fichier de microprogramme et où /f force l’exécution de la mise à niveau. (Le fichier .iic du microprogramme est publié dans le kit Windows HLK avec d’autres fichiers binaires de test.)

Broche de test

Les connecteurs SCL/SDA/GND de l’embase de la broche de test peuvent être soudés et utilisés pour connecter un I2C au contrôleur hôte. Le voltage des lignes I2C doit correspondre à celles du contrôleur hôte ; il s’agit en général de 1,8V ou 3,3V, et ces voltages peuvent être définis en faisant basculer le cavalier du voltage sur la carte WITT (voir Figure 2. Carte WITT).

Jumper EEPROM

Le cavalier EEPROM contrôle s’il faut démarrer à partir de l’EEPROM. Vous devez définir le cavalier à la position indiquée dans Figure 2. Carte WITT. (Vous devez seulement basculer vers l’autre position pour récupérer le microprogramme WITT via la méthode USB.)

LED

Vous pouvez interpréter les LED comme suit :

  • LED ROUGE : SOUS TENSION.

  • LED JAUNE : Allumée en continu s’il n’y a pas de trafic sur le BUS I2C (SCL et SDA sont élevés).

  • LED BLEUE : Clignote quand du trafic de données I2C circule entre l’hôte et la carte WITT.

Jumper de tension I2C

Ce cavalier peut être utilisé pour augmenter le niveau d’un signal I2C vers WITT. Définissez la position 1-2 du cavalier pour 3.3V, ou 2-3 pour 1.8V. Connectez la source d’alimentation à broche2 pour des niveaux de tension supplémentaires autres que 1,8V et 3,3V.

Configuration logicielle de test du contrôleur WITT I2C

Les fichiers binaires de test WITT sont fournis avec le kit Windows HLK et se trouvent sur un contrôleur ou un serveur Windows HLK dans le dossier \\{$Serveur_HCK}\Tests\{$ARCHITECTURE_PROCESSEUR}\spb, où Serveur_HCK est le nom du serveur Windows HLK et où $ARCHITECTURE_PROCESSEUR est la plateforme du périphérique (AMD64, x86 ou Arm). Les tests WITT I2C nécessitent les fichiers binaires suivants :

  • Tester le pilote de périphérique : WITTTest.inf, WITTTest.syset WITTTest.cat.

  • WITTTest.exe

Vous devez utiliser un débogueur de noyau pendant les tests. Vous pouvez télécharger et installer un débogueur de noyau à partir de Télécharger et installer des outils de débogage pour Windows.

Étape d’installation classique (instance de contrôleur unique)

Pour définir une configuration de test classique qui utilise un seul contrôleur, effectuez les étapes suivantes.

Pour configurer une configuration de test classique

  1. Ouvrez une invite de commandes avec des privilèges d’administration.

  2. Exécutez la commande suivante pour installer le pilote de périphérique de test :

    pnputil -a witttest.inf
    

    L’indicateur -a ajoute le package de pilotes au magasin de pilotes Windows.

  3. Mettez à jour la table ACPI (Advanced Configuration and Power Interface) pour énumérer les nœuds de périphérique de test. Ceux-ci sont généralement définis dans la table de descripteurs système secondaires (SSDT, Secondary System Descriptor Table) ou dans la table de description système différenciée (DSDT, Differentiated System Description Table).

    • Dans la fenêtre d’invite de commandes, exécutez la commande suivante pour générer la SSDT :

      asl.exe /tab:ssdt
      
    • Modifiez la table SSDT.asl générée comme suit :

      Device(TP1) {
          Name(_ADR,0)
          Name (_HID, "STK0001") 
          Name (_CID, "WITTTest") 
          Method(_CRS, 0x0, NotSerialized)
          {
            Name (RBUF, ResourceTemplate ()
            {
              I2CSerialBus ( 0x7F, ControllerInitiated, 100000,AddressingMode7Bit, "\\_SB_.I2C3",,, , )
            })
            Return(RBUF)
          }
      }
      Device(TP2) {
          Name(_ADR,0)
          Name (_HID, "STK0002") 
          Name (_CID, "WITTTest") 
          Method(_CRS, 0x0, NotSerialized)
          {
            Name (RBUF, ResourceTemplate ()
            {
              I2CSerialBus ( 0x11, ControllerInitiated, 100000,AddressingMode7Bit, "\\_SB_.I2C3",,, , )
            })
            Return(RBUF)
          }
      }
      Device(TP3) {
          Name(_ADR,0)
          Name (_HID, "STK0003") 
          Name (_CID, "WITTTest") 
          Method(_CRS, 0x0, NotSerialized)
          {
            Name (RBUF, ResourceTemplate ()
            {
              I2CSerialBus ( 0x12, ControllerInitiated, 400000,AddressingMode7Bit, "\\_SB_.I2C3",,, , )
            })
            Return(RBUF)
          }
      }
      Device(TP4) {
          Name(_ADR,0)
          Name (_HID, "STK0004") 
          Name (_CID, "WITTTest") 
          Method(_CRS, 0x0, NotSerialized)
          {
            Name (RBUF, ResourceTemplate ()
            {
              I2CSerialBus ( 0x13, ControllerInitiated, 1000000,AddressingMode7Bit, "\\_SB_.I2C3",,, , )
            })
            Return(RBUF)
          }
      }
      

      Dans ce test, TP1 est utilisé comme interface de test (0x7F), TP2 (0x11) est configuré en tant que cible I2C standard, TP3 (0x12) est configuré comme cible I2C rapide et TP4 (0x13) est configuré comme cible I2C « rapide plus ».

      Notes

      Remplacez l’adresse du contrôleur I2C listée dans la table par celle du contrôleur I2C réel.

  4. Dans la fenêtre d’invite de commandes, exécutez la commande suivante pour générer un fichier Ssdt.aml à partir du fichier Ssdt.asl modifié :

    asl.exe ssdt.asl
    
  5. Dans la fenêtre d’invite de commandes, exécutez la commande suivante pour mettre à jour la table ACPI révisée :

    asl.exe /loadtable ssdt.aml
    
  6. Activez le vérificateur de pilote sur le contrôleur I2C et dans Spbcx.sys en utilisant les paramètres par défaut.

  7. Redémarrez le système : quatre instances de périphérique doivent s’afficher sous le nœud Classe de test WITT dans le Gestionnaire de périphériques de Windows HLK.

  8. Vous pouvez vérifier que l’environnement de test WITT est correctement configuré en exécutant Spbcmd.exe à partir de la ligne de commande. Voici un exemple de sortie de commande de l’outil Spbcmd, où 7F est la signature pour l’interface de test, et où 01, 02 et 03 sont des signatures pour trois cibles de test.

    > list
    list
    Available connection ID:
    Target:53, Instance:0x0
    Target:54, Instance:0x0
    Target:55, Instance:0x0
    Target:56, Instance:0x0
    > i2c 0x0 0x21    //this step is not necessary if you are not testing multiple instances
    i2c 0x0 0x21
    Instance requested:0x0
    I2C address requested:0x21
    Found WITT test interface at \\.\RESOURCE_HUB\0000000000000035
    WITT Testing I2C address successfully changed to 0x21 for instance 0x0
    > open 53
    open 53
    Address 53 opened
    > read 53 1
    read 53 1
    1 bytes read
      7f
    > open 54
    open 54
    Address 54 opened
    > read 54 1
    read 54 1
    1 bytes read
      01
    > write 54 {01 02 03}
    write 54 {01 02 03}
    3 bytes written
    > writeread 54 {01 02 03} 2
    writeread 54 {01 02 03} 2
    5 bytes transferred
      01 01 52 00 c0
    

    Utilisez les commandes Open et Close pour ouvrir et fermer des cibles. Read, Write et WriteRead sont des commandes d’E/S manuelles.

    Vous pouvez aussi utiliser la commande List pour lister toutes les cibles de test I2C disponibles I2C : I2C 0x0 0x21. Changez l’adresse de test WITT pour la faire commencer par 0x21(0x21,0x22,0x23) ; par exemple, 0 si vous avez configuré une adresse I2C différente de l’adresse par défaut dans l’ASL.

Instructions manuelles sur les tests de vérification du contrôleur I2C

Vous pouvez exécuter manuellement le test de vérification du contrôleur I2C en plus de l’exécuter dans Windows HLK Studio. Cette section explique comment exécuter manuellement les tests du contrôleur WITT I2C. Pour obtenir des informations spécifiques sur chaque test, consultez les rubriques de test individuelles.

Vous devez exécuter chaque test à partir d’une fenêtre d’invite de commandes disposant de privilèges d’administration.

Copiez wttlog.dll de \\${Serveur_HCK}\TaefBinaries vers le répertoire où se trouve Witttest.exe, où Serveur_HCK est le nom du serveur Windows HLK.

Pour lister tous les tests et les paramètres de ligne de commande disponibles, tapez wittest.exe /? sur une invite de commandes. Par exemple :

Witttest.exe /?
Supported command line arguments are:
/rs:<Seed>
/sm internal use of acpsim load
/fw:firmwareware iic
/i2c:address
/ins:witt instance number
/dip:device instance path
/duration:stress duration in minutes
/test:<test_id>

Example:
WITTTest.exe /test:BasicIORead


Currently the following test id's are supported:
/test:BasicIORead
/test:BasicIOWrite
/test:BasicIOSeq
/test:BasicIOKernel
/test:ClkStretch
/test:DeviceNack
/test:LockUnlock
/test:CancelRead
/test:CancelWrite
/test:CancelSeq
/test:PerfRead
/test:PerfWrite
/test:PerfSeq
/test:MultipleTargets
/test:BusRecovery
/test:Power
/test:Stress
/test:RunAll

Pour exécuter un test individuel en utilisant les valeurs par défaut, tapez Witttest.exe /test:<Nom_test>, où <Nom_test> est le nom du test ; par exemple, Witttest.exe /test:BasicIORead. Pour exécuter ce test avec une instance différente de l’instance par défaut 0, tapez Witttest.exe /test:BasicIORead /ins:0x1. Pour exécuter ce test avec une adresse de test I2C différente, au lieu de l’adresse de test I2C par défaut 0x11,0x12,0x13, tapez Witttest.exe /test:BasicIORead /i2c:0x21.

Pour exécuter tous les tests, tapez Witttest.exe /test:RunAll. Cette commande boucle dans tous les tests, et un résultat des tests est affiché à la fin de la séquence des tests, par exemple :

*****Test run results*****

# Test cases passed:

BasicIORead
BasicIOWrite
BasicIOSeq
BasicIOKernel
ClkStretch
LockUnlock
PerfRead
PerfWrite
PerfSeq
MultipleTargets
Stress

# Test Cases passed with warning:

CancelRead
CancelWrite
CancelSeq

# Test Cases Failed:

DeviceNack

# Total:

Pass:11 Fail:1 Warn:3

WITT (Windows I2C Test Tool) par JJG Technologies

Résolution des problèmes de test du contrôleur de bus