Nella Testing Hardware in the Loop: Un'introduzione, abbiamo esaminato cosa sia il testing hardware in the loop (HIL), come sarebbe una configurazione e perché vorremmo integrare questo nel design del nostro progetto. Questo articolo guiderà attraverso un progetto di esempio di una scheda progettata in Altium Designer e gestita attraverso un flusso DevOps utilizzando il testing hardware in the loop contro il suo firmware.
Prima di configurare qualsiasi configurazione hardware in the loop, abbiamo bisogno di una scheda su cui lavorare. Un buon modo per iniziare con un design prima della cattura dello schema e del layout è prototipare con schede di valutazione. La scheda di valutazione che utilizzeremo per questo articolo sarà la SAM4E XPlained Pro di Microchip (ex Atmel). Per iniziare, avrai bisogno di questa scheda di valutazione e anche di Atmel Studio installato. Una volta che l'hardware e il software sono attivi, puoi clonare il progetto di esempio da Gitlab. Questo progetto di esempio contiene una quantità minima di codice - giusto sufficiente per dimostrare le capacità hardware nel testing in loop. Questo progetto sfrutta anche alcune librerie del Atmel Software Framework (ora rinominato “Advanced” Software Framework). L'ASF fornisce driver che abilitano la comunicazione seriale USB, routine di ritardo e altre librerie che astraggono molte implementazioni hardware di basso livello normalmente scritte per altri microprocessori. Una volta che hai estratto il repository, compilato e caricato il firmware, sei pronto per configurare e eseguire il testing hardware in-the-loop.
Per il controllo versione e l'integrazione continua/distribuzione continua (CI/CD), Gitlab è stato scelto come host. Come dimostrato in Come creare una pipeline CI/CD per il tuo design PCB, il controllo versione e CI/CD sono integrati come uno strumento in Gitlab. Questo progetto consiste di più fasi CI/CD (note anche come “Pipelines” in Gitlab):
La prima fase crea i binari necessari per caricare i file di programmazione sul microprocessore. Dopo questo passaggio, il dispositivo downstream (cioè, la scheda di valutazione) viene acceso. Il dispositivo viene quindi programmato e l'unità è ora pronta per essere testata.
Il testing hardware in the loop può essere tanto semplice quanto complesso, a seconda di come lo progetti. Mentre molti sistemi HIL complessi richiedono dispositivi esterni per emulare ambienti del mondo reale, questo esempio utilizza un meccanismo di base per emulare uno stimolo esterno: la comunicazione seriale. L'interfaccia USB Device CDC di Atmel crea una porta COM virtuale per abilitare la comunicazione via USB proprio come faresti con UART tramite RS-232. In questa serie di test noi:
Sebbene il firmware per il microprocessore sia scritto in C, il software di test (che gestisce i comandi e legge la telemetria) è scritto in Python utilizzando il framework Pytest. Scrivere il software in Python ci consente di sfruttare scripting di alto livello e librerie che normalmente richiederebbero molto più tempo e sforzo per essere sviluppate in un linguaggio compilato come C++. Inoltre, possiamo eseguire questi test su qualsiasi tipo di macchina, indipendentemente dal suo sistema operativo o dalla sua architettura chip. Gli stessi test che girano su un PC Windows (Windows, x86) possono anche essere eseguiti su un Raspberry Pi (Linux, ARM). Astrarre sviluppo, compilazione e testing dalla tua macchina è un principio chiave nel flusso di lavoro DevOps. Vogliamo essere in grado di riprodurre un nuovo ambiente in un batter d'occhio. Inoltre, vogliamo evitare le ore strazianti necessarie per avviare un ambiente di sviluppo leggendo pagine e pagine di guide su “Come fare” o “Iniziare”. Scriptare questo processo (inclusi i test), come è stato fatto nel file di definizione della pipeline, assicura un ambiente riproducibile senza complicazioni. Per eseguire gli stessi test manualmente dalla riga di comando, consulta il file della pipeline.
Dopo che il test è completato, i risultati vengono scritti in un file XML JUnit, che viene quindi analizzato da Gitlab e visualizzato nell'interfaccia web.
Abbiamo ora dimostrato una soluzione completa end-to-end di configurazione hardware in the loop con Gitlab. Sentiti libero di esplorare il progetto per familiarizzare con la configurazione e il formato.
In questo articolo, abbiamo esaminato come configurare il tuo progetto per il testing hardware in the loop. Questo includeva un progetto di esempio ospitato su Gitlab che gli utenti possono clonare e configurare utilizzando il file di configurazione della pipeline (cioè, il file .gitlab-ci.yml). Abbiamo anche coperto l'esecuzione dei test in Python utilizzando il framework Pytest e discusso come viene visualizzato nell'interfaccia web. L'utente ora ha la possibilità di creare la propria configurazione hardware in the loop utilizzando questa guida e il progetto di esempio ospitato su Gitlab.
Vuoi scoprire di più su come Altium può aiutarti con il tuo prossimo design PCB? Parla con un esperto di Altium e scopri di più su come prendere decisioni di design con facilità e sicurezza.