LAUTERBACH: DEBUG E TEST PER PROGETTI EMBEDDED.
La piattaforma Lauterbach è un potente strumento per lo sviluppo di software embedeed. Ecco come l’abbiamo utilizzata.
A cura di Riccardo Espis e Luca Boccacci
[Head Test Engineering e V&V Engineering – Area Ingegneria del Software]
INTRODUZIONE.
In un panorama tecnologico in continua evoluzione, NIER si impegna costantemente sia nell’innovazione dei propri servizi di sviluppo software embedded e testing on target che nell’intercettazione delle esigenze emergenti del settore. Grazie all’esperienza maturata nell’utilizzo della piattaforma Lauterbach, attraverso la gestione di complessi casi di uso, NIER è in grado di offrire soluzioni specializzate al contesto applicativo.
La piattaforma Lauterbach è un potente strumento utilizzato nello sviluppo di software embedded che offre numerosi vantaggi agli sviluppatori. Per esempio, la suite di strumenti di debug ed analisi consente di identificare problemi complessi nel software migliorando notevolmente l’efficienza del processo di sviluppo. I vantaggi offerti dalla piattaforma includono l’ispezione dettagliata del codice, il monitoraggio del sistema in tempo reale e la capacità di eseguire debugging da remoto.
Inoltre, la piattaforma Lauterbach è progettata per essere compatibile con una varietà di piattaforme hardware e architetture diverse, come ARM Cortex-M e ARM Cortex-A, processori x86, Infineon Aurix TC2xx e TC3xx, MIPS, PowerPC, garantendo copertura ampia in diversi settori industriali.
Ora esploreremo due casi d’uso che illustrano come NIER abbia integrato con successo gli strumenti e le funzionalità fornite dalla piattaforma.
DESCRIZIONE DELLA PIATTAFORMA LAUTERBACH.
La piattaforma Lauterbach è composta di componenti hardware e software che la rendono una suite integrata di debug e test non invasivo[1] direttamente su hardware target[2].
Tra i principali componenti della piattaforma troviamo:
- PowerDebug: permette di stabilire una connessione tra il sistema embedded target e il sistema di debug: è possibile accedere e controllare il microprocessore del target, eseguire le istruzioni e leggere i dati direttamente dalla memoria;
- Debug Probe: sonda che connette fisicamente il dispositivo target al sistema di debug. Esistono diverse tipologie di sonde disponibili in funzione dell’architettura target;
- PowerTrace: cattura i dati dal sistema embedded in tempo reale e li invia al software di debug. Questa funzionalità è fondamentale per monitorare le prestazioni del sistema, identificare eventuali errori ed analizzare il software in tempo reale;
- Trace32 PowerView: interfaccia grafica (GUI) che permette l’interazione con il sistema target embedded.
[1] Per non invasività si intende che il codice compilato in formato binario da caricare sul Target non è stato modificato rispetto a quello originario corrispondete alla Baseline ufficiale rilasciata per il test.
[2] È denominato “hardware target” l’hardware, nella sua versione finale, deputato ad ospitare il software una volta rilasciato e pronto per entrare in operatività.
Tra le caratteristiche distintive della piattaforma Lauterbach, possiamo citare:
- Debug avanzato: esiste un ambiente di debug estremamente potente, che consente di eseguire il software step-by-step per osservare il comportamento del software nel dettaglio, nonché di inserire breakpoint nel codice compilato su target, eseguire verifiche sullo stato del sistema e della memoria durante l’esecuzione;
- Trace: è possibile registrare gli eventi a livello di sistema e di applicazione in tempo reale, offrendo una visione dettagliata di ogni singola operazione del software;
- Accesso alla memoria: è possibile un accesso puntuale alla memoria fisica del microprocessore che consente agli sviluppatori di esaminare o modificare, all’occorrenza e per fini di test, i dati in tempo reale;
- Supporto Multi-Core: funzionalità essenziale considerando la crescente complessità dei sistemi embedded moderni: è infatti possibile il debug simultaneo e la tracciabilità su più core.
PROGETTO FERROVIARIO.
Il primo caso di applicazione consiste in un progetto in ambito ferroviario, nel quale sistema target sotto test è basato su processore multi-core ARM 64 bit su scheda di sviluppo Xilinx. La configurazione hardware utilizzata consiste nel PowerDebug X50 con la Debug Probe IDC20A e il PowerTrace III, come mostrato in Figura 2:
Controllo dei Parametri di Configurazione.
Inizialmente la piattaforma Lauterbach è stata utilizzata per l’analisi dei valori dei parametri di configurazione del sistema, i quali vengono caricati nella memoria di sistema durante il suo avvio. Questo ci ha permesso di verificare che la procedura di caricamento dei dati dalla memoria flash a quella di sistema alla inizializzazione (“Init”), e la loro valorizzazione, avvenisse rispettando la specifica di sistema.
Controllo dell’Esecuzione delle Funzioni del Software.
È stato effettuato inoltre un monitoraggio attivo delle funzioni chiave del software applicativo durante il funzionamento nominale del sistema. Sono stati inseriti breakpoint [3] in tempo reale in posizioni specifiche nel codice compilato eseguito sulle schede target. Mentre il software viene eseguito, Lauterbach interrompe l’esecuzione ogni volta che uno dei breakpoint viene raggiunto. Ciò ha consentito di avere pieno controllo sul flusso di esecuzione del software, rendendo possibile una analisi critica di dettaglio.
[3] Punto di interruzione nel codice di un programma, normalmente usato per scopi di debugging.
Controllo delle Tempistiche di Esecuzione.
È stata eseguita l’analisi delle tempistiche di esecuzione, per ciascuna funzione software del sistema target, al fine di verificare l’accuratezza ed il determinismo dei cicli di esecuzione dell’applicativo. Durante questa fase, è stato identificato un errore nelle tempistiche misurate che richiedeva una correzione al codice sorgente e, conseguentemente, un nuovo rilascio del software. I tempi di esecuzione effettivi differivano, infatti, da quanto inizialmente previsto dai requisiti di Design.
Le modalità di utilizzo sopra esposte hanno fornito una prima visione dettagliata delle potenzialità e prestazioni della piattaforma Lauterbach e ci hanno permesso di garantire l’affidabilità e l’efficienza del sistema sotto test in tutti gli scenari applicativi considerati. L’individuazione dell’errore sulla inesattezza del tempo di ciclo è avvenuta in una fase precoce del processo di sviluppo, garantendo così la possibilità del relativo fix prima che il software venisse messo in produzione: questo ha permesso al nostro cliente di evitare le spese per il rework che ne sarebbero derivato.
PROGETTO AUTOMOTIVE.
Il secondo caso di applicazione consiste in un progetto in ambito automotive, nel quale il sistema target è basato su processore con un core ARM 32 bit montato su scheda prototipale sviluppata da un nostro cliente. La configurazione hardware utilizzata comprende il PowerDebug X50 con la Debug Probe IDC20A connessa su porta JTAG, come mostrato nella seguente Figura 6:
Le funzionalità della piattaforma Lauterbach sono state cruciali durante il processo di sviluppo e debug di questo sistema. In questo contesto, infatti, abbiamo sfruttato alcune delle sue caratteristiche avanzate per affrontare le problematiche tecniche emerse.
Caricamento su Flash Memory.
Innanzitutto, la piattaforma è stata utilizzata come strumento di caricamento della flash memory della scheda target. Questo processo è stato essenziale per consentire l’esecuzione e il debug dell’applicativo software direttamente sul target, in una fase del progetto in cui sulla scheda prototipale non era ancora presente il boot loader, cioè il software deputato all’avvio del sistema.
Grazie all’utilizzo del linguaggio di scripting PRACTICE, messo a disposizione dalla piattaforma Lauterbach, abbiamo potuto automatizzare e semplificare il processo di caricamento e debugging, riducendo i tempi di sviluppo e migliorando l’efficienza del processo.
Drivers
Inoltre, la piattaforma Lauterbach è stata di grande aiuto durante la fase di sviluppo ed integrazione di MCAL[4], ovvero i driver delle periferiche del microcontrollore.
Questa fase ha richiesto una profonda analisi e verifica della configurazione dei registri delle periferiche utilizzate, come ad esempio SPI[5], I2C[6]. Grazie alle funzionalità di debugging abbiamo potuto identificare e correggere con precisione i problemi di configurazione dei registri, garantendo che le periferiche interagissero con il software come atteso dalle specifiche di progetto.
[4] Microcontroller Abstraction Layer
[5] Serial Peripheral Interface
[6] Inter-Integrated Circuit
In questo progetto, in sintesi, l’utilizzo della piattaforma Lauterbach è stato indispensabile in tutto il processo di sviluppo, consentendoci di gestire in modo efficiente il caricamento del software, il debug e la configurazione delle periferiche. Il suo contributo ha favorito il successo del nostro progetto, garantendo l’integrità e l’ottimizzazione del sistema.
CONCLUSIONI.
Grazie alla padronanza acquisita nell’utilizzo della piattaforma Lauterbach NIER è in grado di offrire un servizio di sviluppo software embedded e di test su target altamente qualificato. L’utilizzo delle funzioni di trace, debug, accesso alla memoria e supporto multi-core consente a NIER di affrontare i progetti più complessi di sviluppo software embedded grazie ad una maggiore efficienza nella scrittura del codice, un controllo più rigoroso della qualità del codice e quindi la capacità di fornire soluzioni ottimizzate ritagliate su misura per i propri clienti. Per questi motivi NIER può rappresentare un partner competente per supportare clienti in progetti embedded, in vari domini, sfruttando il potenziale di Lauterbach.
Guardando al futuro, l’integrazione della piattaforma con strumenti di test software avanzati, come ad esempio VectorCAST, promette di portare l’ecosistema di sviluppo embedded a più alti livelli di affidabilità. L’uso combinato di Lauterbach e VectorCAST potrebbe consentire, in teoria, il debug e il testing automatico del codice direttamente sul dispositivo target, anziché su Host. Questo presenta diversi vantaggi:
- ottenere informazioni più dettagliate sull’esecuzione del codice nel contesto effettivo;
- valutare prestazioni, consumi energetici e affidabilità del sistema nelle condizioni operative;
- identificare problemi di latenza e di risposta del sistema;
- validare direttamente le interfacce hardware e identificare eventuali problemi di compatibilità.
Inoltre, il debugging su sistemi 2oo2 rappresenta un’attività critica per settori come il ferroviario o aerospaziale, dove le piattaforme 2oo2 rappresentano la base su cui è definita l’architettura di sicurezza, come previsto dalle normative applicabili. In particolare, l’utilizzo di Lauterbach per il debugging e il trace, in questo ambito, consente di monitorare, controllare e memorizzare i dati prodotti simultaneamente da entrambi i canali di elaborazione; ciò permette l’identificazione delle problematiche relative alla:
- generazione degli output di entrambi i canali;
- sincronizzazione dei due canali di elaborazione;
- messa in sicurezza del sistema in presenza di failure che influenzano la sicurezza del sistema.