EMB 93

EMBEDDED 93 • SETTEMBRE • 2024 59 DEBUG | SOFTWARE tori (metrics) delle prestazioni a livello di sistema. Tali informazioni aiutano a ottimizzare l’allocazio- ne delle risorse e le prestazioni del sistema. 6. Analisi delle temporizzazioni e misura della la- tenza: Tracealyzer consente di effettuare misure e analisi accurate del comportamento delle tem- porizzazioni, inclusi i tempi di risposta ai thread, i ritardi di comunicazione e la latenza complessiva del sistema. Si tratta di un aspetto cruciale per sod- disfare i vincoli di un comportamento real-time. 7. Visualizzazione della comunicazione e della sin- cronizzazione: gli sviluppatori possono visualizza- re i meccanismi di comunicazione come, ad esem- pio, lo scambio di messaggi, l’utilizzo di semafori e le primitive di sincronizzazione, consentendo una migliore comprensione e l’ottimizzazione della co- municazione fra i vari thread. 8. Verifica del comportamento del sistema: Trace- alyzer aiuta nella validazione del comportamento del sistema rispetto ai requisiti di temporizzazione e alle specifiche previste. Si tratta di un prezioso ausilio per assicurare che il sistema funzioni nel modo previsto in differenti condizioni. 9. Miglioramento del flusso di sviluppo: fornendo una rappresentazione visuale del comportamento del sistema e delle prestazioni, Tracealyzer agevola il flusso di sviluppo semplificando e accelerando il debug, l’ottimizzazione e i cicli di validazione. 10. Formazione e documentazione: le rappresentazio- ni visuali di Tracealyzer possono risultare molto utili sia in fase di formazione sia per documentare il comportamento del sistema sia come riferimento in futuro o per condividere le informazioni tra i vari membri del team. Visualizzazione del sistema: la soluzione ideale Tornando allo scenario delineato all’inizio dell’arti- colo, ovvero il crash del sistema, si immagini il van- taggio legato alla possibilità di poter disporre della storia completa di ciò che accadeva all’interno del sistema prima dell’evento di crash. Invece che le sole informazioni di base, come l’indirizzo dell’istruzione che ha provocato il crash e i contenuti del registro, l’integrazione dell’RTOS PX5 con Tracealyzer con- sente di visualizzare l’esecuzione completa del siste- ma prima del crash. Per approfondire ulteriormente questo aspetto, nel Listato 1 viene riportato un fram- mento di codice sorgente relativo all’esempio “child thread”. Nel Listato 2 è riportato il “main thread” che forza il crash dopo 10 interrupt del timer Senza la vista grafica, avremmo solo l’indirizzo dell’i- struzione all’interno di “cause_crash” e, presumibil- mente, i contenuti del registro del processore. La vi- sta grafica, invece, permette di contemplare la storia completa degli eventi del sistema che si sono verificati immediatamente prima del crash del sistema. Nello specifico, è possibile vedere che il “main thread” era in esecuzione nel momento del crash e che quest’ulti- mo si è verificato immediatamente dopo la chiamata a “px5_pthread_ticks_get()” come riportato in figura 1. È anche possibile notare che il “child thread” (barre gialle) era in esecuzione fino a quando non è stato so- speso dalla chiamata a “sem_wait()”. Procedendo an- cora più a ritroso, è possibile osservare che l’interrupt

RkJQdWJsaXNoZXIy Mzg4NjYz