Configurazione dell'automazione delle certificazioni

Per automatizzare i test di certificazione, sono necessarie ulteriori configurazioni.

Tutti i passaggi di installazione e configurazione riportati di seguito si verificano sul computer Windows che esegue il software GRL Test Harness. Scarica e installa l'cablaggio di test dei thread GRL più recente prima di continuare.

Al termine dell'installazione, esistono due metodi di automazione per il dispositivo in fase di test (DUT):

  1. Strumento di automazione del cablaggio OpenThread
  2. Testare la modalità DUT automatica per l'imbracatura

Strumento di automazione del cablaggio OpenThread

Installa

  1. Installa il seguente software:
    • Python 2.7
    • Git per Windows (supporto vivamente consigliato)
  2. Clona il repository OpenThread per ottenere gli script di automazione:
    git clone https://github.com/openthread/openthread
    
  3. Installa i requisiti Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Installa sia Google Chrome sia ChromeDriver.

Configura

  1. Crea un file di configurazione per lo strumento di automazione:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Aggiorna il nuovo file di configurazione in base alle istruzioni riportate nel file.
  3. Aggiungi il seguente parametro al file di configurazione Test Harness, disponibile all'indirizzo C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Supporto di test test misti

Lo strumento per l'automazione del cablaggio supporta anche letti di test misti, in cui i dispositivi di riferimento utilizzati in ogni scenario di test sono un insieme misto di dispositivi anziché tutti gli stessi dispositivi. Ad esempio, invece di utilizzare 32 schede TI CC2538 che eseguono OpenThread per tutti gli scenari di test, puoi combinare e abbinare tutti e quattro i dispositivi di riferimento per i thread per ogni scenario di test, come preferisci.

Per utilizzare letti di test misti è necessaria un'ulteriore configurazione:

  1. Aggiungi il seguente parametro aggiuntivo al file di configurazione Test Harness, disponibile all'indirizzo C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Scarica il file di configurazione della topologia dal gruppo di thread. Aggiungi questo file come TopologyConfig.txt a C:\GRL\Thread1.1\Thread_Harness\TestScripts. Questo file descrive in dettaglio il dispositivo da utilizzare per ciascun ruolo in ogni scenario di test.

Il file di configurazione della topologia fornito dal gruppo di thread può essere modificato per altre configurazioni miste, ma per la certificazione ufficiale deve essere utilizzata la configurazione originale.

I valori validi da utilizzare per i dispositivi di riferimento nel file di configurazione della topologia sono:

Valore nel file di configurazione della topologia Dispositivo di riferimento per l'imbracatura
ARM ARM: NXP FRDM-K64F con Firefly 6LoWPAN Shield
NXP NXP(scala libera): chiavette USB-KW24D512
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: chiavetta USB EM358x

Ogni voce dello scenario di test nel file di configurazione della topologia deve trovarsi su una riga separata e formattato in coppie role:device come segue:

5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM

Test DUT Auto in modalità Hard test

Il software GRL Test Harness fornisce una funzionalità avanzata di individuazione automatica (DUT) che accelera il processo di convalida per i fornitori di stack di riferimenti Thread.

OpenThread fornisce un esempio THCI (Thread Host Controller Interface) che consente al test di cablaggio di controllare il tuo componente o prodotto come se fosse una delle piattaforme di riferimento. In base alle caratteristiche delle porte seriali della piattaforma specifica, il tuo DUT potrebbe:

In qualità di piattaforma di riferimento OpenThread esistente

Se la porta seriale del DUT funziona nelle impostazioni di 115200 8-N-1 e il dispositivo risponde correttamente dopo ogni ripristino fisico del dispositivo (ad esempio per confermare la connessione valida del dispositivo alla macchina Windows), la piattaforma può utilizzare lo strumento OpenThread THCI. Questo strumento consente al dispositivo di agire come piattaforma di riferimento OpenThread durante il test.

  1. Chiudi l'imbracatura di prova GRL, se è aperta.
  2. Collega il dispositivo al computer Windows.
  3. Individua l'identificatore hardware della porta seriale del dispositivo mediante il modulo Python pySerial:
    1. Installa pySerial sul computer Windows.
    2. Utilizza Python sulla riga di comando Windows per enumerare tutti gli identificatori hardware (VID e PID) per i dispositivi connessi alla macchina. In questo output, un dispositivo è connesso con un identificatore VID=1366 e PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Se conosci già la porta COM, puoi utilizzare un altro comando. Ad esempio, se la porta COM è COM10:
      python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
      ['USB\VID_1366+PID_1015+MI_00']
  4. Aggiorna l'elenco dei dispositivi dorati:
    1. Apri C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Aggiorna il gruppo OpenThread nell'array GoldenDeviceHardwareIds con i valori VID e PID dei dispositivi:
      GoldenDeviceHardwareIds = {
      'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
      'SiLabs': 'VID:PID=10C4:8A5E',
      'ARM': 'VID:PID=0D28:0204',
      'OpenThread':['VID:PID=10C4:EA60','VID:PID=1366:1015']}
  5. Attiva la modalità DUT automatica.

Come nuova piattaforma di riferimento

Se la porta seriale del DUT non funziona in base alle impostazioni corrette della porta seriale oppure se il dispositivo non risponde correttamente dopo un ripristino fisico del dispositivo (emette codice illeggibile entro 3-6 secondi dal ripristino), ThCI può essere personalizzato per trattare il dispositivo come una nuova piattaforma nel test.

Ad esempio, per personalizzare THCI utilizzando la piattaforma Nordic Semiconductor nRF52840:

  1. Chiudi l'imbracatura di prova GRL, se è aperta.
  2. Modifica /tools/harness-thci/OpenThread.py in base alle caratteristiche UART del dispositivo di destinazione. Le modifiche possono essere diverse tra i dispositivi di destinazione. Nel caso della piattaforma Nordic nRF52840:

    1. Rinomina il file OpenThread.py in nRF52840.py.
    2. Modifica le prime tre occorrenze di "OpenThread" in "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Modifica i parametri della porta seriale:

      def _connect(self):
          print 'My port is %s' % self.port
          if self.port.startswith('COM'):
              self.handle = serial.Serial(self.port, 115200, timeout=0)
              time.sleep(1)
              self.handle.write('\r\n')
              time.sleep(0.1)
              self._is_net = False
          elif ':' in self.port:
              host, port = self.port.split(':')
              self.handle = socket.create_connection((host, port))
              self.handle.setblocking(0)
              self._is_net = True
          else:
              raise Exception('Unknown port schema')
          self.UIStatusMsg = self.getVersionNumber()
      
    4. Modifica il tempo di sospensione per eliminare l'impatto dell'output di codice illeggibile dopo il ripristino del dispositivo:

      def powerDown(self):
          """power down the Thread device"""
          print '%s call powerDown' % self.port
          self._sendline('reset')
          self.isPowerDown = True
          time.sleep(8)  # New addition
      
      def reboot(self):
          """reset and rejoin to Thread Network without any timeout
      
          Returns:
              True: successful to reset and rejoin the Thread Network
              False: fail to reset and rejoin the Thread Network
          """
          print '%s call reboot' % self.port
          try:
              self._sendline('reset')
              self.isPowerDown = True
              time.sleep(8)  # Updated from 3 to 8
      
      def reset(self):
          """factory reset"""
          print '%s call reset' % self.port
          try:
              self._sendline('factoryreset')
              time.sleep(8)  # Updated from 3 to 8
              self._read()
      
      def resetAndRejoin(self, timeout):
          """reset and join back Thread Network with a given timeout delay
      
          Args:
              timeout: a timeout interval before rejoin Thread Network
      
          Returns:
              True: successful to reset and rejoin Thread Network
              False: fail to reset and rejoin the Thread Network
          """
          print '%s call resetAndRejoin' % self.port
          print timeout
          try:
              self._sendline('reset')
              self.isPowerDown = True
              time.sleep(timeout)
              if timeout < 8:      # Sleep a bit longer if the timeout is short
                  time.sleep(8 - timeout)
      
  3. Copia il file nRF52840.py modificato in C:\GRL\Thread1.1\Thread_Harness\THCI

  4. Aggiungi le nuove informazioni sulla piattaforma all'imbracatura di prova:

    1. Crea un'icona (in formato png o jpg) per differenziare più facilmente la tua piattaforma e copiarla in C:\GRL\Thread1.1\Web\images.
    2. Aggiorna C:\GRL\Thread1.1\Web\data\deviceInputFields.xml con una nuova sezione DEVICE, dove il parametro thumbnail è il file dell'icona:

      <DEVICE name="nRF52840" thumbnail="nRF52840.jpg" description ="nRF52840: Nordic" THCI="nRF52840">
          <ITEM label="Serial Line"
                type="text"
                forParam="SerialPort"
                validation="COM"
                hint="eg: COM1">COM
          </ITEM>
          <ITEM label="Speed"
                type="text"
                forParam="SerialBaudRate"
                validation="baud-rate"
                hint="eg: 115200">115200
          </ITEM>
      </DEVICE>
      
  5. Collega il dispositivo al computer Windows.

  6. Individua l'identificatore hardware della porta seriale del dispositivo utilizzando il modulo Python pySerial:

    1. Installa pySerial sul computer Windows.
    2. Utilizza Python sulla riga di comando Windows per enumerare tutti gli identificatori hardware (VID e PID) per i dispositivi connessi alla macchina. In questo output, un dispositivo è connesso con un identificatore VID=1366 e PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Se conosci già la porta COM, puoi utilizzare un altro comando. Ad esempio, se la porta COM è COM10:
      python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
      ['USB\VID_1366+PID_1015+MI_00']
  7. Aggiorna l'elenco dei dispositivi Golden:

    1. Apri C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Aggiungi un nuovo gruppo di piattaforme nell'array GoldenDeviceHardwareIds con VID e PID del dispositivo:
      GoldenDeviceHardwareIds = {
      'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
      'SiLabs': 'VID:PID=10C4:8A5E',
      'ARM': 'VID:PID=0D28:0204',
      'OpenThread':'VID:PID=10C4:EA60',
      'nRF52840': 'VID:PID=1366:1015'}
  8. Attiva la modalità DUT automatica.

Attiva modalità DUT automatica

Dopo aver completato una delle due opzioni di configurazione riportate sopra:

  1. Apri il test di cablaggio GRL. Il dispositivo o la porta ora vengono visualizzati come nuovi dispositivi di riferimento.
  2. Seleziona la casella di controllo Abilita selezione automatica dispositivo DUT sotto l'elenco Hardware supportato.
  3. Seleziona il pulsante di opzione Imposta come DUT sotto il dispositivo/la porta di destinazione per impostare il dispositivo come DUT.
DUT automatico certificazione OT