Advanced Debugging and Tracing tools for ARM

DEBUGGER, REAL-TIME TRACE, LOGIC ANALYZER
Advanced Debugging and Tracing tools
for ARM architectures and Linux kernels
PowerTools
Una soluzione unica per il debug di sistemi Linux
Un approccio integrato al run-mode debugging
Un sistema embedded basato su Linux pone diversi problemi dal punto di vista del debug. Si tratta infatti di un
sistema complesso, composto da molti elementi diversi e
caratterizzato da configurazioni avanzate che complicano
la vita del debugger, come la gestione dinamica dell’MMU.
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 fine
di mettere a punto i primi elementi del sistema, come il
bootloader e il firmware di base. Si passa poi al debug
delle applicazioni attraverso un cosiddetto run-mode debugger, ovvero una soluzione puramente software nella
quale un agente di debug gira sul dispositivo embedded,
controllato tramite uno specifico 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.
JTAG
Network
Applicando il consueto concetto di modularità ed universalità, i sistemi TRACE32 Lauterbach permettono di utilizzare
una
sola
interfaccia
per
ogni
esigenza
di debug.
Con un sistema JTAG Lauterbach è possibile eseguiInfatti, per
re il debug di tutte le componenti di un sistema Linux in
ogni comstop-mode. Utilizzando un debugger Lauterbach di tipo
ponente di
front-end, è comunque possibile anche il debug run-moLinux Awareness menu
un
sistede, interfacciandosi via seriale o ethernet con gdbserver.
Sono quindi disponibili due soluzioni ben distinte e non inma basato su Linux, Lauterbach
tegrate. Tuttavia Lauterbach propone anche una soluzione
propone una soluzione unica ed
integrata, in cui è possibile effetintegrata, in grado di utilizzare entrambi gli approcci, batuare il debug fin dalle prime fasi di start-up del sistema,
sandosi sullo stesso ambiente di debug JTAG, e offrendo
proseguendo poi con il debug del kernel, moduli del kercosì una soluzione che permette il controllo completo del
nel e driver, processi utente, threads e librerie dinamiche.
sistema in ogni fase di debug. Grazie infatti ad un agente
Partendo quindi da un primo ambiente tradizionale di deproprietario (t32server), l’ambiente di debug Lauterbach
bug single-task, tipico di un bootloader, si arriva a operare
TRACE32 è in grado di lanciare più debug agent, e quindi
in un contesto multi-tasking.
permettere l’utilizzo di un solo link JTAG DCC/DAP per il
Questa versatilità del debugger permette all’utente di fodebug di più processi contemporaneamente. Lo switch tra
calizzarsi sul debug vero e proprio di ogni componente
run-mode debug e stop-mode debug e viceversa, è imdel sistema in fase di sviluppo, senza preoccuparsi delle
modalità specifiche di debug. I
Linux System
sistemi TRACE32 Lauterbach
Stop-mode debug
shared
threads
process
sono gestiti dall’IDE Powerlibs
Run-mode debug
View, che fornisce un’interfacgdbserver
gdbserver
cia standard con look-and-feel
uniforme per diversi ambienti
threads
host. PowerView comprende
process
inoltre un RTOS debugger
t32server
configurabile e ad alte prestazioni, che include il supporto
di oltre 30 sistemi operativi. La
TRACE32 PowerView
• kernel
Ethernet or Serial
tecnologia Kernel Awareness,
Linux
• modules
(optional)
rende il debugger “cosciente”
• drivers
del fatto che sul dispositivo
Ethernet or USB
in fase di debug giri un sistema operativo. Ciò semplifica
boot
JTAG
loader
notevolmente il debug, perCPU
ché rende immediatamente
xloader
accessibili all’utente tutte le
DCC or
DAP
PowerDebug JTAG debugger
componenti del sistema operativo e dell’applicazione.
TRACE32 integra Stop-mode e Run-mode debugger e consente il debug simultaneo di tutte le componenti di un sistema Linux
2
TRACE32 PowerView
pere deterministicamente che cosa un certo processore
eseguirà in un determinato istante.
Per questo motivo, Lauterbach ha realizzato un debugger 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.
TRACE32 PowerDebug
Real-time trace e profiling
Joint JTAG
Cortex-A9
Per tutte le architetture che prevedono questa funzionalità, Lauterbach offre anche la prestazione real-time
trace, anch’essa basata sul concetto di kernel awareness, per poter tracciare e registrare il codice eseguito dai vari processi utente e dal kernel stesso, prendendosi automaticamente cura della corrispondenza
tra gli indirizzi logici tracciati ed il relativo processo
di appartenenza. Questo consente di sfruttare il “trace assisted debugging” anche in ambito multi tasking.
Cortex-A9
Multicore chip as SMP system
Una singola istanza TRACE32 controlla tutti i core in un sistema SMP
mediato e consente di cambiare modalità operativa nella
stessa sessione di debug, senza dover riavviare o cambiare 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 codice 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 configurazione “core
view”, ovvero una configurazione nella quale il focus è sul
singolo processore, e diverse istanze del debugger controllano ciascuna uno ed un solo core.
Con l’avvento dei sistemi SMP, ovvero Symmetric Multi-Processing, Lauterbach offre un nuovo concetto di debug: 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-
Statistiche dei processi Linux
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 schedulazione dei task nel tempo.
Grafico dei task switch nel tempo
3
www.lauterbach.com
PowerTools
TRACE32 debug e trace tools per ARM/Cortex series
PowerDebug: JTAG debugger
PowerDebug è 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 single-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 trace
Combiprobe 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ò essere 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 trace
PowerTrace aggiunge alle funzionalità di debug dei PowerDebug un modulo real-time trace integrato da 512MB o fino
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 debugger
PowerView è il debugger fornito con i sistemi Lauterbach
TRACE32. E’ un ambiente di debug integrato che supporta linguaggi quali C/C++, Java, ASM; include un instruction
set simulator, è integrabile con diversi IDE (Eclipse, MS Platform Builder) ed ha un supporto integrato per oltre 30 sistemi operativi inclusi Windows CE, Linux, Android.
Il supporto Linux è molto avanzato e con PowerView è possibile il debug e il trace di tutte le componenti del sistema:
boot loader, kernel, moduli, processi, threads e librerie. Il debug è 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 Practice consente l’automazione completa della configurazione
del sistema e dei test.
TENETECI INFORMATI
Se avete cambiato il vostro indirizzo o se desiderate ricevere la
nostra newsletter, mandate una email a
[email protected]
4
4
Lauterbach S.r.l.
Via Enzo Ferrieri 12, 20153 Milano
Tel: +39 02 45490282
Fax: +39 02 45490428
Web: www.lauterbach.com
Sales: [email protected]
Support: [email protected]