Long-Term Trace ETMv3

In questo articolo verranno descritti i concetti base della tecnologia long-term trace, le funzionalità e l'opportunità per i progettisti di avere a disposizione uno strumento di debug per ARM con trace praticamenete illimitato

ARM ETMv3

Tracing significa registrare informazioni dettagliate su un programma durante la sua esecuzione sul core. Questa informazione è di solito generata da una logica di trace on-chip. Per i core ARM questa logica è conosciuta come Embedded Trace Macrocell o ETM. L'ultima versione di questo elemento logico, l'ETMv3, si trova nella maggior parte dei core ARM11 e Cortex. Dal momento che la funzionalità del trace logico on-chip è alla base della funzionalità del trace, cominciamo con una breve introduzione su di essa.

L'ETMv3 genera un log trace orientato al pacchetto. Le seguenti informazioni possono essere generate a livello di programma runtime e raccolte nei pacchetti di trace:

  • Pacchetti di Program flow: contiene informazioni sulle istruzioni del programma eseguito dal core - in particolare gli indirizzi di destinazione dei jump così come il numero di istruzioni eseguite tra due jump.
  • Pacchetti di Data flow: contiene gli indirizzi di memoria letti/scritti dal programma così come i valori dei relativi dati.
  • Pacchetti di Context-ID: contiene un processo/task ID nell'evento che il sistema operativo ha in esecuzione.

I pacchetti di trace sono disponibili in uscita dal logic trace on-chip tramite la porta trace. La porta trace per l'ETMv3 è costituita da 8 o 16 pin per i pacchetti di trace più due pin per i segnali di controllo. Per ridurre al minimo la larghezza di banda per l'uscita dei pacchetti, l'ETMv3 comprime i pacchetti di trace. Per esempio, tutti gli indirizzi vengono accorciati da uno speciale algoritmo. Tuttavia, se il volume di dati è superiore alla larghezza di banda massima della porta trace, il buffer FIFO andrà in overflow e qualche pacchetto di trace può essere perso. Comprimere soltanto le informazioni di analisi quindi non è sufficiente a prevenire l'overflow del FIFO.

Parliamo ora della programmabilità dell'ETMv3. Per ridurre il numero di pacchetti di trace, si possono semplicemente definire le informazioni di trace che si desiderano generare e quindi presentarle in uscita. Per esempio, nessuna informazione sul flusso di dati è necessaria per le funzioni di profiling di TRACE32. Questo è molto utile perche sono proprio questi pacchetti ad intasare la porta di trace.

Il tracing classico è attualmente composto di due fasi che si svolgono consecutivamente:

1. La registrazione

Considerando che gli ARM di ultima generazione arrivano fino a frequenze di 1 GHz, la vera sfida è riuscire a registrare tutti i pacchetti di trace!
Gli strumenti di trace parallelo di Lauterbach per l'ETMv3, supportano la registrazione dei pacchetti ad una frequenza fino a 275MHz DDR e possono quindi gestire la velocità di trasmissione dei seguenti dati:

    8.8 GBit/s con 16 pin per i pacchetti di trace
    4.4 GBit/s con 8 pins per i pacchetti di trace

Gli strumenti di trace seriale di Lauterbach per l'ETMv3, supportano la registrazione dei pacchetti con un data-rates fino a 20GHz.

2. L'analisi

Per analizzare la sezione di programma registrata, è necessario trasferire i pacchetti di trace dalla memoria trace all'host, decomprimere e poi valutarli. Dal momento che i pacchetti di trace per il flusso del programma non contengono il codice del programma, questo deve essere aggiunto prima dell'analisi. Sono utilizzati quindi i seguenti dati:

    Il codice del programma letto dal software TRACE32 dalla memoria del sistema "target" tramite l'interfaccia JTAG.
    Le informazioni sul debug ed i simboli caricati dall'utente per il software TRACE32.

Se grandi volumi di dati devono essere rapidamente registrati, trasferiti e analizzati in long-term tracing, le seguenti condizioni devono essere soddisfatte:

1. Fast Host

Al fine di poter analizzare i pacchetti di trace sull'host durante il runtime del programma, è necessario avere un computer veloce DualCore. In questo caso, un core riceve i pacchetti di trace, mentre il secondo core valuta i pacchetti.

2. Fast Trace Tool

Lo strumento di trace deve campionare i pacchetti di trace senza perdite verso una porta di trace veloce. Per il long-term tracing, è necessario un trasferimento ad alta velocità dei pacchetti di trace verso l'host. A tal fine, lo strumento TRACE32 fornisce un'interfaccia Gbit Ethernet. Se lo strumento di trace è collegato peer-to-peer all'host, possono essere raggiunti più di 500 MBit/s.

Compact Data Format

Dal momento che la velocità di trasmissione massima per l'host è limitata, è importante mantenere il volume di dati il più compatto possibile. Il volume dei dati può essere influenzato in due modi:

1. Programmazione ottimale dell'ETMv3

Si può direttamente influenzare la velocità di trasmissione dati alla porta trace programmando l'ETMv3 in modo che i pacchetti di trace vengano generati solo per l'analisi delle informazioni rilevanti. I pacchetti del flusso dati che rappresentano un carico elevato per la porta trace di solito non sono necessari per il profiling e il code coverage.

2. Compact buffering

Il firmware dello strumento TRACE32 è stato migliorato in modo che la densità ottimale dei pacchetti nella memoria di trace fornita da TRACE32 si ottiene con un uscita di soli 8 pin.

Con long-term tracing, Lauterbach ha fatto un passo importante verso una tecnologia di trace che permette un'analisi quasi illimitata del programma in esecuzione.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend