ARM Development STUDIO 5 – Parte 2

ARM

Benvenuti a una nuova puntata della Rubrica Firmware Reload di Elettronica Open Source.

ARM STREAMLINE PERFORMANCE ANALYZER

Si tratta di una soluzione potente ed economica per il profiling del software a livello di sistema e per l’analisi delle prestazioni dei sistemi basati su ARM Linux e sulla piattaforma Android. Costruita su una tecnologia di campionamento a bassa intrusività, Streamline è dotata di un’interfaccia grafica intuitiva che presenta vari tipi di informazioni, dai contatori di prestazioni a livello di sistema, fino agli hotspot nel codice sorgente. Streamline memorizza i valori campionati del program counter, delle chiamate a funzioni (informazioni presenti sullo stack) e dei contatori di performance; queste informazioni vengono poi processate e visualizzate in forme opportune sullo schermo. Ciò, rende più facile per gli sviluppatori l’individuazione dei colli di bottiglia a livello di prestazioni, dei problemi nelle applicazioni multi-thread e in generale ogni tipo di utilizzo inefficiente delle risorse. Streamline è uno strumento grafico per il profiling a livello di sistema con un’analisi basata sulla variabile temporale e in grado di ottenere un’ottimizzazione rapida del codice. La versione più recente di Streamline supporta ora il bilanciamento del codice e l’analisi dei thread sui target Cortex-A9 Linux SMP. In Figura 1 è mostrata una videata di esempio prodotta dal tool Streamline, con evidenziati i cache miss di livello 1 (L1) e di livello 2 (L2) prodotti da un’applicazione durante una finestra temporale di alcuni secondi. In Figura 2 è invece mostrato un altro esempio, riferito in questo caso a un sistema multi-thread. Tutte queste informazioni sono di enorme utilità per affinare e ottimizzare l’utilizzo della CPU e delle altre risorse hardware, in modo tale da produrre un’applicazione che possa sempre garantire un funzionamento affidabile e in tempo reale.

ARM

Figura 1: Performance analysis con Streamline

 

ARM

Figura 2: Analisi dei thread con Streamline

ANALISI DEL CODICE ESEGUIBILE

Un’altra interessante funzionalità offerta dall’ARM DS-5 è la seguente. Facendo un semplice doppio click su un file eseguibile o su un file oggetto, viene mandato in esecuzione il plug-in di editing dei contenuti ELF. Questo plug-in permette di eseguire l’analisi statica dei file immagine, compilati oppure importati, prima di collegare un debugger al target vero e proprio. L’ELF Content Editor include diverse schede (tab) attraverso le quali è possibile visualizzare:

  • le informazioni generali del file immagine (l’header del file in formato ELF) e i dettagli di ogni singola sezione ELF
  • la lista completa dei simboli (variabili, funzioni e label) e le proprietà dei simboli (tipo e indirizzo)
  • il disassemblato dell’immagine, che permette di esaminare il codice generato dal compilatore

In Figura 3 è mostrato un esempio relativo all’ELF Content Editor, in cui si evidenzia la scheda “Overview”, con la quale è possibile condurre l’analisi statica dei file oggetto.

ARM

Figura 3: L’ELF Content Editor

IL TRACE DEL CODICE

Il trace delle istruzioni abilita il debug non intrusivo di tutti i problemi legati a fenomeni non riproducibili sistematicamente, difficili quindi da replicare eseguendo il codice in modalità step-by-step. È inoltre possibile eseguire l’analisi delle performance relativa ad aree particolarmente critiche del codice. Quando la funzionalità di trace viene abilitata, il debugger memorizza le ultime istruzioni eseguite sul target. Quando poi l’esecuzione del programma si arresta, il debugger riempie la finestra di trace con le istruzioni precedentemente memorizzate, sincronizzandole con la finestra del codice sorgente. Per funzionare, il trace richiede una connessione JTAG con il dispositivo target. Il numero di istruzioni che possono essere memorizzate è limitato dalla dimensione dell’Embedded Trace Buffer (ETB) presente sul target ma, se è necessario espandere ulteriormente questa dimensione, è comunque possibile eseguire un trace off-chip tramite un sistema DSTREAM, il quale dispone di un buffer da 4 Gb. In Figura 4 è mostrata una videata dimostrativa della funzione di trace; nella parte inferiore dell’immagine è evidenziato il codice disassemblato.

ARM

Figura 4: Un esempio di trace view

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend