AO 448

AUTOMAZIONE OGGI 448 SOLUZIONI SOFTWARE PER L’INDUSTRIA 79 S SI esperienze industrial edge L a maggior parte dei sistemi embedded attuali incorpora software multi-thread, ad esempio software che gira su Linux o un sistema operativo in tempo reale (Rtos). Il mul- tithreading ha molti vantaggi rispetto ai sistemi a thread singolo, ma può aumentare la complessità del software e renderne più difficoltosa la verifica. I metodi di verifica tradizionali, come la revisione del codice, l’analisi statica e i test funzionali, sono necessari, ma non sufficienti per verificare a fondo sistemi multi-thread, caratterizzati da una rete intricata di dipendenze fra thread dovute a interazioni esplicite e implicite. Inoltre, tali dipendenze possono essere influenzate da variazioni nei tempi di esecuzione del software, che non sono esplicite nel codice ma derivano dal comportamento di runtime. Questi effetti tempo- rali sulle interazioni fra thread rappresentano spesso un fattore ‘fuori controllo’ quando si testano sistemi multi-thread; pertanto, anche i test più intensivi e approfonditi potrebbero solo ‘lambire la superficie’ di un mare di potenziali scenari d’esecuzione. I difetti latenti potrebbero passare inosservati per poi palesarsi una volta messo in funzione il sistema. Spesso il software embedded deve anche soddisfare requisiti di funzionamento in tempo reale. Ad esempio, un sistema di controllo potrebbe avere la necessità di inviare segnali di comando al controllore di un motore ogni 5 mil- lisecondi, considerando ogni ritardo alla stregua di un guasto. Questi requisiti non vengono influenzati solo dal tempo di esecuzione del thread specifico, ma anche dalle dipendenze da altri thread. Pertanto, per verificare la conformità ai requisiti di funziona- mento in tempo reale, non basta misurare le metri- che di temporizzazione, bisogna anche individuare potenziali rischi dovuti alle interazioni fra i thread che potrebbero incidere sui requisiti temporali. La fase di verifica Quindi, come si verifica che un progetto sia ade- guato dal punto di vista del funzionamento mul- tithreading? La soluzione è l’osservabilità runtime mediante un meccanismo di tracciamento del sof- tware. Percepio, che sviluppa tool per l’analisi di sof- tware per applicazioni embedded ed edge critiche ponendosi l’obiettivo di garantire l’osservabilità del software utilizzato proprio in applicazioni edge cri- tiche nel corso dell’intero ciclo di vita del prodotto, consentendo così agli OEM e agli operatori di installare sistemi intelligenti con la massima sicurezza, ha realizzato la versione 4.7 di Tracealyzer, il suo software che offre un ricco insieme di caratteristiche e fun- zionalità per l’analisi proprio del progetto software e la verifica dei requisiti di tempo reale. Eseguendo il tracciamento del sof- tware con Tracealyzer, gli sviluppatori possono: raccogliere dati runtime dettagliati relativi all’esecuzione dei thread, interazioni fra thread e tempistiche in test di lunga durata, senza bisogno di un hardware specifico; rilevare anomalie nel comportamento in tempo reale grazie a diverse viste grafiche di alto livello, come ad esempio il grafico del carico di CPU o il report statistico, e clic- care semplicemente su un dato ritenuto anomalo per mostrarne i dettagli nella vista grafica contenente il trace di esecuzione; ana- lizzare le variazioni di temporizzazione del software, ad esempio tramite il grafico ‘Actor Instance’, che per ciascun thread visua- lizza un diagramma con varie metriche temporali nel corso del tempo; osservare le dipendenze fra thread, ad esempio con il gra- fico ‘Communication Flow’ che dona una panoramica visuale delle interazioni tra i thread attraverso oggetti IPC. Percepio - https://percepio.com Johan Kraft Se traccio, verifico Verifica di sistemi embedded multi-thread attraverso il tracciamento del software Tracealyzer v4.7 di Percepio è caratterizzata da notevoli migliorie, tra cui profilazione delle ECU utilizzate in ambito automotive, trace dell’applicazione migliorato e possibilità di utilizzo con qualsiasi software C/C++

RkJQdWJsaXNoZXIy Mzg4NjYz