PowerDebug: JTAG debugger PowerDebug Combiprobe: JTAG ... · mi operativi inclusi Windows CE,...

4
DEBUGGER, REAL-TIME TRACE, LOGIC ANALYZER Advanced Debugging and Tracing tools for ARM architectures and Linux kernels

Transcript of PowerDebug: JTAG debugger PowerDebug Combiprobe: JTAG ... · mi operativi inclusi Windows CE,...

44

DEBUGGER, REAL-TIME TRACE, LOGIC ANALYZER

4

Se avete cambiato il vostro indirizzo o se desiderate ricevere la nostra newsletter, mandate una email a

[email protected]

TENETECI INFORMATI

PowerTools

Advanced Debugging and Tracing toolsfor ARM architectures and Linux kernels

Lauterbach S.r.l.Via Enzo Ferrieri 12, 20153 MilanoTel: +39 02 45490282 Fax: +39 02 45490428Web: www.lauterbach.com Sales: [email protected]: [email protected]

PowerDebug: JTAG debuggerPowerDebug è il JTAG debugger più veloce e più utilizzato. Supporta oltre 50 diverse architetture e le diverse debug-port. Un unico debug cable per ARM può essere licenziato per supportare tutte le architetture ARM/Cortex sia sin-gle-core che multi-core ed anche i DSP integrati.I sistemi di nuova generazione hanno interfaccia USB3 o Gigabit ethernet.

PowerDebug Combiprobe: JTAG debugger + ETM traceCombiprobe combina in un unico hardware a basso costo un debug cable ed un trace probe con 128MB di trace storage. Combiprobe è particolarmente adatto per i microcontrollori Cortex-M dotati di debug port JTAG e di una trace port ETM e ITM compatta a 4 pin. Per i microprocessori Cortex-A può esse-re utilizzato per il SystemTrace ITM o STM. Sarà presto disponibile il nuovo µTrace; un sistema debug + trace dedicato a Cortex-M ancora più economico. µTrace è descritto nella Newsletter 2013.

PowerTrace e PowerTrace II: JTAG debugger + ETM tracePowerTrace aggiunge alle funzionalità di debug dei PowerDebug un modulo real-time trace integrato da 512MB o fi no a 4GB per i PowerTrace II. Sono disponibili diversi probes per le trace port ARM ETM “parallele” e per le velocissime trace port ETM “seriali” HSTP. Con l’aiuto del real-time trace si velocizza enormemente il ciclo di debug e sono possibili misure non intrusive del programma, analisi statistiche e di performance, code coverage. La capacità di trace streaming consente di estendere illimitatamente la durata della registrazione.

PowerView debuggerPowerView è il debugger fornito con i sistemi Lauterbach TRACE32. E’ un ambiente di debug integrato che suppor-ta linguaggi quali C/C++, Java, ASM; include un instruction set simulator, è integrabile con diversi IDE (Eclipse, MS Pla-tform Builder) ed ha un supporto integrato per oltre 30 siste-mi operativi inclusi Windows CE, Linux, Android.Il supporto Linux è molto avanzato e con PowerView è pos-sibile il debug e il trace di tutte le componenti del sistema: boot loader, kernel, moduli, processi, threads e librerie. Il de-bug è possibile sia in modalità stop-mode che run-mode via JTAG, senza richiedere l’utilizzo di link esterni quali seriali o ethernet. PowerView funziona anche come GDB frond-end debugger per gdbserver via ethernet. PowerView gira su PC Windows, Linux e Mac OS-X. Il linguaggio di scripting Practi-ce consente l’automazione completa della confi gurazione del sistema e dei test.

TRACE32 debug e trace tools per ARM/Cortex series

www.lauterbach.com2 3

PowerTools

mediato e consente di cambiare modalità operativa nella stessa sessione di debug, senza dover riavviare o cam-biare debugger. Inoltre non è più necessario l’utilizzo di link ethernet o porte seriali dedicati al debug.

I sistemi multicore e l’approccio SMP

L’approccio dei tools Lauterbach al debug è modulare ed universale. Per questo è possibile anche effettuare il debug di sistemi multicore, ovvero sistemi nei quali sono coinvolti più processori, siano essi omogenei, eterogenei, sullo stesso chip o su chip differenti.Nel caso più comune, ciascun processore esegue un co-dice univoco predeterminato durante la compilazione, ed interopera con le altre unità di elaborazione scambiando dati attraverso dei canali dedicati (per esempio dei buffer di memoria condivisa, una periferica o altro): in questo caso si parla di Asymmetric Multi-Processing (AMP). Per queste architetture, Lauterbach utilizza un approccio nel quale un singolo debugger è connesso a uno solo dei core sotto esame, nella cosiddetta confi gurazione “core view”, ovvero una confi gurazione nella quale il focus è sul singolo processore, e diverse istanze del debugger con-trollano ciascuna uno ed un solo core.Con l’avvento dei sistemi SMP, ovvero Symmetric Mul-ti-Processing, Lauterbach offre un nuovo concetto di de-bug: in un sistema SMP i core sono solitamente omogenei e consentono la parallelizzazione del carico CPU. Linux è uno dei sistemi operativi che offre una versione SMP per diverse piattaforme. In questo caso il codice eseguito da ciascun core non è più univoco, quindi è impossibile sa-

pere deterministicamente che cosa un certo processore eseguirà in un determinato istante.

Per questo motivo, Lauterbach ha realizzato un debug-ger SMP con approccio “system view”, nel quale una sola istanza del debugger controlla tutti i core in fase di debug. Sfruttando la tecnologia Kernel Awareness, il debugger è in grado di determinare dinamicamente a quale core sia stato associato un determinato processo; di conseguenza è in grado di mostrare il codice e i dati sotto esame per ciascuna parte del sistema operativo e dei suoi elementi, spostando il focus sul core a cui è stato assegnato ogni singolo processo in ogni determinato istante.

Real-time trace e profi ling

Per tutte le architetture che prevedono questa funzio-nalità, Lauterbach offre anche la prestazione real-time trace, anch’essa basata sul concetto di kernel aware-ness, per poter tracciare e registrare il codice esegui-to dai vari processi utente e dal kernel stesso, pren-dendosi automaticamente cura della corrispondenza tra gli indirizzi logici tracciati ed il relativo processo di appartenenza. Questo consente di sfruttare il “tra-ce assisted debugging” anche in ambito multi tasking.

OS-Aware trace

In presenza di un sistema operativo, è necessario che le informazioni relative ai task switch vengano inviate alla trace port. Questo è implementato nei kernel Linux con la scrittura del registro Context-ID, che TRACE32 riconosce ed utilizza per diversi tipi di analisi, come la schedulazio-ne dei task nel tempo.

Statistiche dei processi Linux

Una soluzione unica per il debug di sistemi Linux

Un sistema embedded basato su Linux pone diversi pro-blemi dal punto di vista del debug. Si tratta infatti di un sistema complesso, composto da molti elementi diversi e caratterizzato da confi gurazioni avanzate che complicano la vita del debugger, come la gestione dinamica dell’MMU.

Applicando il consueto concet-to di modularità ed universali-tà, i sistemi TRACE32 Lauter-bach permettono di utilizzare

una sola interfaccia per ogni e s i g e n z a di debug. Infatti, per ogni com-ponente di un siste-

ma basato su Linux, Lauterbach propone una soluzione unica ed integrata, in cui è possibile effet-

tuare il debug fi n dalle prime fasi di start-up del sistema, proseguendo poi con il debug del kernel, moduli del ker-nel e driver, processi utente, threads e librerie dinamiche. Partendo quindi da un primo ambiente tradizionale di de-bug single-task, tipico di un bootloader, si arriva a operare in un contesto multi-tasking. Questa versatilità del debugger permette all’utente di fo-calizzarsi sul debug vero e proprio di ogni componente del sistema in fase di svilup-po, senza preoccuparsi delle modalità specifi che di debug. I sistemi TRACE32 Lauterbach sono gestiti dall’IDE Power-View, che fornisce un’interfac-cia standard con look-and-feel uniforme per diversi ambienti host. PowerView comprende inoltre un RTOS debugger confi gurabile e ad alte presta-zioni, che include il supporto di oltre 30 sistemi operativi. La tecnologia Kernel Awareness, rende il debugger “cosciente” del fatto che sul dispositivo in fase di debug giri un siste-ma operativo. Ciò semplifi ca notevolmente il debug, per-ché rende immediatamente accessibili all’utente tutte le componenti del sistema ope-rativo e dell’applicazione.

Un approccio integrato al run-mode debugging

Tradizionalmente, nel debug Linux vengono utilizzati due approcci differenti, in relazione alla fase di sviluppo: nelle fasi iniziali, generalmente chiamate hardware bring-up, si utilizza un debugger JTAG in modalità stop-mode, al fi ne di mettere a punto i primi elementi del sistema, come il bootloader e il fi rmware di base. Si passa poi al debug delle applicazioni attraverso un cosiddetto run-mode de-bugger, ovvero una soluzione puramente software nella quale un agente di debug gira sul dispositivo embedded, controllato tramite uno specifi co link (seriale o ethernet) dalla macchina host sulla quale si effettua il debug; nel caso di Linux, questa soluzione è rappresentata da GDB e dal suo agente gdbserver.

Con un sistema JTAG Lauterbach è possibile esegui-re il debug di tutte le componenti di un sistema Linux in stop-mode. Utilizzando un debugger Lauterbach di tipo front-end, è comunque possibile anche il debug run-mo-de, interfacciandosi via seriale o ethernet con gdbserver. Sono quindi disponibili due soluzioni ben distinte e non in-tegrate. Tuttavia Lauterbach propone anche una soluzione integrata, in grado di utilizzare entrambi gli approcci, ba-sandosi sullo stesso ambiente di debug JTAG, e offrendo così una soluzione che permette il controllo completo del sistema in ogni fase di debug. Grazie infatti ad un agente proprietario (t32server), l’ambiente di debug Lauterbach TRACE32 è in grado di lanciare più debug agent, e quindi permettere l’utilizzo di un solo link JTAG DCC/DAP per il debug di più processi contemporaneamente. Lo switch tra run-mode debug e stop-mode debug e viceversa, è im-

Applicando il consueto concet-to di modularità ed universali-tà, i sistemi TRACE32 Lauter-bach permettono di utilizzare

ma basato su Linux, Lauterbach propone una soluzione unica ed

Linux Awareness menu

Linux System

Run-mode debug

TRACE32 PowerView

Ethernet or USB

JTAG

PowerDebug JTAG debugger

Ethernet or Serial

DCC or DAP

(optional)

Stop-mode debugthreads

threads

process

process

sharedlibs

gdbserver gdbserver

Linux• kernel• modules• drivers

boot loader

xloaderDCC or

JTA

G

CPU

Net

wo

rk

t32server

Run-mode debug

Stop-mode debug

Multicore chip as SMP system

Cortex-A9Cortex-A9

Joint JTAG

TRACE32 PowerDebug

TRACE32 PowerView

Grafi co dei task switch nel tempo

Una singola istanza TRACE32 controlla tutti i core in un sistema SMP

TRACE32 integra Stop-mode e Run-mode debugger e consente il debug simultaneo di tutte le componenti di un sistema Linux

www.lauterbach.com2 3

PowerTools

mediato e consente di cambiare modalità operativa nella stessa sessione di debug, senza dover riavviare o cam-biare debugger. Inoltre non è più necessario l’utilizzo di link ethernet o porte seriali dedicati al debug.

I sistemi multicore e l’approccio SMP

L’approccio dei tools Lauterbach al debug è modulare ed universale. Per questo è possibile anche effettuare il debug di sistemi multicore, ovvero sistemi nei quali sono coinvolti più processori, siano essi omogenei, eterogenei, sullo stesso chip o su chip differenti.Nel caso più comune, ciascun processore esegue un co-dice univoco predeterminato durante la compilazione, ed interopera con le altre unità di elaborazione scambiando dati attraverso dei canali dedicati (per esempio dei buffer di memoria condivisa, una periferica o altro): in questo caso si parla di Asymmetric Multi-Processing (AMP). Per queste architetture, Lauterbach utilizza un approccio nel quale un singolo debugger è connesso a uno solo dei core sotto esame, nella cosiddetta confi gurazione “core view”, ovvero una confi gurazione nella quale il focus è sul singolo processore, e diverse istanze del debugger con-trollano ciascuna uno ed un solo core.Con l’avvento dei sistemi SMP, ovvero Symmetric Mul-ti-Processing, Lauterbach offre un nuovo concetto di de-bug: in un sistema SMP i core sono solitamente omogenei e consentono la parallelizzazione del carico CPU. Linux è uno dei sistemi operativi che offre una versione SMP per diverse piattaforme. In questo caso il codice eseguito da ciascun core non è più univoco, quindi è impossibile sa-

pere deterministicamente che cosa un certo processore eseguirà in un determinato istante.

Per questo motivo, Lauterbach ha realizzato un debug-ger SMP con approccio “system view”, nel quale una sola istanza del debugger controlla tutti i core in fase di debug. Sfruttando la tecnologia Kernel Awareness, il debugger è in grado di determinare dinamicamente a quale core sia stato associato un determinato processo; di conseguenza è in grado di mostrare il codice e i dati sotto esame per ciascuna parte del sistema operativo e dei suoi elementi, spostando il focus sul core a cui è stato assegnato ogni singolo processo in ogni determinato istante.

Real-time trace e profi ling

Per tutte le architetture che prevedono questa funzio-nalità, Lauterbach offre anche la prestazione real-time trace, anch’essa basata sul concetto di kernel aware-ness, per poter tracciare e registrare il codice esegui-to dai vari processi utente e dal kernel stesso, pren-dendosi automaticamente cura della corrispondenza tra gli indirizzi logici tracciati ed il relativo processo di appartenenza. Questo consente di sfruttare il “tra-ce assisted debugging” anche in ambito multi tasking.

OS-Aware trace

In presenza di un sistema operativo, è necessario che le informazioni relative ai task switch vengano inviate alla trace port. Questo è implementato nei kernel Linux con la scrittura del registro Context-ID, che TRACE32 riconosce ed utilizza per diversi tipi di analisi, come la schedulazio-ne dei task nel tempo.

Statistiche dei processi Linux

Una soluzione unica per il debug di sistemi Linux

Un sistema embedded basato su Linux pone diversi pro-blemi dal punto di vista del debug. Si tratta infatti di un sistema complesso, composto da molti elementi diversi e caratterizzato da confi gurazioni avanzate che complicano la vita del debugger, come la gestione dinamica dell’MMU.

Applicando il consueto concet-to di modularità ed universali-tà, i sistemi TRACE32 Lauter-bach permettono di utilizzare

una sola interfaccia per ogni e s i g e n z a di debug. Infatti, per ogni com-ponente di un siste-

ma basato su Linux, Lauterbach propone una soluzione unica ed integrata, in cui è possibile effet-

tuare il debug fi n dalle prime fasi di start-up del sistema, proseguendo poi con il debug del kernel, moduli del ker-nel e driver, processi utente, threads e librerie dinamiche. Partendo quindi da un primo ambiente tradizionale di de-bug single-task, tipico di un bootloader, si arriva a operare in un contesto multi-tasking. Questa versatilità del debugger permette all’utente di fo-calizzarsi sul debug vero e proprio di ogni componente del sistema in fase di svilup-po, senza preoccuparsi delle modalità specifi che di debug. I sistemi TRACE32 Lauterbach sono gestiti dall’IDE Power-View, che fornisce un’interfac-cia standard con look-and-feel uniforme per diversi ambienti host. PowerView comprende inoltre un RTOS debugger confi gurabile e ad alte presta-zioni, che include il supporto di oltre 30 sistemi operativi. La tecnologia Kernel Awareness, rende il debugger “cosciente” del fatto che sul dispositivo in fase di debug giri un siste-ma operativo. Ciò semplifi ca notevolmente il debug, per-ché rende immediatamente accessibili all’utente tutte le componenti del sistema ope-rativo e dell’applicazione.

Un approccio integrato al run-mode debugging

Tradizionalmente, nel debug Linux vengono utilizzati due approcci differenti, in relazione alla fase di sviluppo: nelle fasi iniziali, generalmente chiamate hardware bring-up, si utilizza un debugger JTAG in modalità stop-mode, al fi ne di mettere a punto i primi elementi del sistema, come il bootloader e il fi rmware di base. Si passa poi al debug delle applicazioni attraverso un cosiddetto run-mode de-bugger, ovvero una soluzione puramente software nella quale un agente di debug gira sul dispositivo embedded, controllato tramite uno specifi co link (seriale o ethernet) dalla macchina host sulla quale si effettua il debug; nel caso di Linux, questa soluzione è rappresentata da GDB e dal suo agente gdbserver.

Con un sistema JTAG Lauterbach è possibile esegui-re il debug di tutte le componenti di un sistema Linux in stop-mode. Utilizzando un debugger Lauterbach di tipo front-end, è comunque possibile anche il debug run-mo-de, interfacciandosi via seriale o ethernet con gdbserver. Sono quindi disponibili due soluzioni ben distinte e non in-tegrate. Tuttavia Lauterbach propone anche una soluzione integrata, in grado di utilizzare entrambi gli approcci, ba-sandosi sullo stesso ambiente di debug JTAG, e offrendo così una soluzione che permette il controllo completo del sistema in ogni fase di debug. Grazie infatti ad un agente proprietario (t32server), l’ambiente di debug Lauterbach TRACE32 è in grado di lanciare più debug agent, e quindi permettere l’utilizzo di un solo link JTAG DCC/DAP per il debug di più processi contemporaneamente. Lo switch tra run-mode debug e stop-mode debug e viceversa, è im-

Applicando il consueto concet-to di modularità ed universali-tà, i sistemi TRACE32 Lauter-bach permettono di utilizzare

ma basato su Linux, Lauterbach propone una soluzione unica ed

Linux Awareness menu

Linux System

Run-mode debug

TRACE32 PowerView

Ethernet or USB

JTAG

PowerDebug JTAG debugger

Ethernet or Serial

DCC or DAP

(optional)

Stop-mode debugthreads

threads

process

process

sharedlibs

gdbserver gdbserver

Linux• kernel• modules• drivers

boot loader

xloaderDCC or

JTA

G

CPU

Net

wo

rk

t32server

Run-mode debug

Stop-mode debug

Multicore chip as SMP system

Cortex-A9Cortex-A9

Joint JTAG

TRACE32 PowerDebug

TRACE32 PowerView

Grafi co dei task switch nel tempo

Una singola istanza TRACE32 controlla tutti i core in un sistema SMP

TRACE32 integra Stop-mode e Run-mode debugger e consente il debug simultaneo di tutte le componenti di un sistema Linux

44

DEBUGGER, REAL-TIME TRACE, LOGIC ANALYZER

4

Se avete cambiato il vostro indirizzo o se desiderate ricevere la nostra newsletter, mandate una email a

[email protected]

TENETECI INFORMATI

PowerTools

Advanced Debugging and Tracing toolsfor ARM architectures and Linux kernels

Lauterbach S.r.l.Via Enzo Ferrieri 12, 20153 MilanoTel: +39 02 45490282 Fax: +39 02 45490428Web: www.lauterbach.com Sales: [email protected]: [email protected]

PowerDebug: JTAG debuggerPowerDebug è il JTAG debugger più veloce e più utilizzato. Supporta oltre 50 diverse architetture e le diverse debug-port. Un unico debug cable per ARM può essere licenziato per supportare tutte le architetture ARM/Cortex sia sin-gle-core che multi-core ed anche i DSP integrati.I sistemi di nuova generazione hanno interfaccia USB3 o Gigabit ethernet.

PowerDebug Combiprobe: JTAG debugger + ETM traceCombiprobe combina in un unico hardware a basso costo un debug cable ed un trace probe con 128MB di trace storage. Combiprobe è particolarmente adatto per i microcontrollori Cortex-M dotati di debug port JTAG e di una trace port ETM e ITM compatta a 4 pin. Per i microprocessori Cortex-A può esse-re utilizzato per il SystemTrace ITM o STM. Sarà presto disponibile il nuovo µTrace; un sistema debug + trace dedicato a Cortex-M ancora più economico. µTrace è descritto nella Newsletter 2013.

PowerTrace e PowerTrace II: JTAG debugger + ETM tracePowerTrace aggiunge alle funzionalità di debug dei PowerDebug un modulo real-time trace integrato da 512MB o fi no a 4GB per i PowerTrace II. Sono disponibili diversi probes per le trace port ARM ETM “parallele” e per le velocissime trace port ETM “seriali” HSTP. Con l’aiuto del real-time trace si velocizza enormemente il ciclo di debug e sono possibili misure non intrusive del programma, analisi statistiche e di performance, code coverage. La capacità di trace streaming consente di estendere illimitatamente la durata della registrazione.

PowerView debuggerPowerView è il debugger fornito con i sistemi Lauterbach TRACE32. E’ un ambiente di debug integrato che suppor-ta linguaggi quali C/C++, Java, ASM; include un instruction set simulator, è integrabile con diversi IDE (Eclipse, MS Pla-tform Builder) ed ha un supporto integrato per oltre 30 siste-mi operativi inclusi Windows CE, Linux, Android.Il supporto Linux è molto avanzato e con PowerView è pos-sibile il debug e il trace di tutte le componenti del sistema: boot loader, kernel, moduli, processi, threads e librerie. Il de-bug è possibile sia in modalità stop-mode che run-mode via JTAG, senza richiedere l’utilizzo di link esterni quali seriali o ethernet. PowerView funziona anche come GDB frond-end debugger per gdbserver via ethernet. PowerView gira su PC Windows, Linux e Mac OS-X. Il linguaggio di scripting Practi-ce consente l’automazione completa della confi gurazione del sistema e dei test.

TRACE32 debug e trace tools per ARM/Cortex series