TRACE32: lo strumento più completo
per il trace di un sistema Linux
Maurizio Menegotto
Lauterbach Italia
www.lauterbach.com
Un sistema linux è costituito da diverse componenti software
molto diverse tra loro. Lo scorso anno abbiamo mostrato come
un sistema professionale Lauterbach TRACE32 consenta il debug
di ogni componente di un sistema linux in modo semplice e
immediato.
In questa presentazione mostreremo come il program trace e il
system trace consentano di abbattere i tempi di debugging di un
sistema linux, anche multicore, e di analizzarne dettagliatamente
il comportamento run-time e le performance.
TRACE32: lo strumento più completo
per il trace di un sistema Linux
Maurizio Menegotto
Lauterbach Italia
www.lauterbach.com
Un sistema linux è costituito da diverse componenti software
molto diverse tra loro. Lo scorso anno abbiamo mostrato come
un sistema professionale Lauterbach TRACE32 consenta il debug
di ogni componente di un sistema linux in modo semplice e
immediato.
In questa presentazione mostreremo come il program trace e il
system trace consentano di abbattere i tempi di debugging di un
sistema linux, anche multicore, e di analizzarne dettagliatamente
il comportamento run-time e le performance.
▪ 3 /51 ▪
Better Embedded 2013 2014
TRACE32: lo strumento più completo per il debug
di un sistema Linux
TRACE
L’anno scorso, qui al Better Embedded, ho
mostrato come un debugger professionale
Lauterbach consenta in modo facile e immediato
il debug di ogni componente di un sistema Linux.
Per chi si fosse perso questa presentazione,
abbiamo tenuto in seguito un webinar di grande
successo. Slides e video del webinar sono
disponibili qui:
www.lauterbach.com/tut-i_linux.html
Oggi parliamo di TRACE di un sistema Linux
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 4 / 51 ▪
Agenda

Linux «trace assisted» debugging

Che cosa è il Trace?

Program Trace con linux (ETM)

System Trace con linux (STM)

Posso usare il Trace sul mio target?

Q&A
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 5 /51 ▪
«trace assisted» debugging
Un sistema professionale Lauterbach TRACE32 consente il debug e il trace per molte
diverse architetture.
Per «trace assisted» debugging si intende l’integrazione della funzionalità di trace nel
debugger in modo che il trace stesso sia immediatamente disponibile, presentato in
formato simbolico, utile a velocizzare il debug.
Trace
Debug
JTAG
Embedded System
TRACE32
Powerview
TRACE32: lo strumento più completo per il trace di un sistema Linux
TRACE
Ethernet
or USB
JTAG
PowerTrace II system
▪ Better Embedded 2014 ▪ www.lauterbach.com
TRACE
CPU
▪ 6 /51 ▪
Linux «trace assisted» debugging, una soluzione unica




Trace assisted debugging: debug via JTAG + Trace via ETM
E’ possibile tracciare tutte le componenti di un
sistema Linux, nella stessa sessione di debug
Linux System
Con il Trace si può osservare il comportamento
del sistema running, in modo non intrusivo
shared libs
threads
process
Non è necessario eseguire alcun monitor o
agente o modificare il kernel: il program trace è
generato automaticamente dalla CPU
JTAG
TRACE
TRACE32 Powerview
kernel
modules
drivers
JTAG
TRACE
CPU
PowerTrace II system
TRACE32: lo strumento più completo per il trace di un sistema Linux
process
threads
Linux
Ethernet
or USB
shared libs
▪ Better Embedded 2014 ▪ www.lauterbach.com
uboot
xloader
▪ 7 / 51 ▪
Agenda

Linux «trace assisted» debugging

Che cosa è il Trace?

Program Trace con linux

System Trace con linux

Posso usare il Trace sul mio target?

Q&A
TEMPO
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 8 /51 ▪
Cosa è il Trace?
Per “trace” si intende un sistema per la registrazione della
sequenza di istruzioni eseguite e dei dati letti/scritti da una CPU,
senza doverla fermare.
Debugging
Real-Time Tracing
Scattare fotografie
Fare un video
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 9 /51 ▪
Perchè serve usare il trace?
• I SoC moderni sono sistemi molto complessi ad alto parallelismo
• I meccanismi di debug e trace tradizionali implementati nei sistemi
operativi moderni sono invasivi
• L’ottimizzazione e la qualità del software sono necessari per
assicurare il successo di un prodotto
• Il tempo speso in sviluppo e debug del software costa.
Il trace consente di risparmiare molto tempo
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 10 /51 ▪
Il trace è una scelta importante
Il trace è:
 Lo strumento che permette di “vedere”
cosa accade realmente durante
l’esecuzione della vostra applicazione
Il trace va considerato come:
 Lo strumento per abbattere i tempi di
sviluppo e la miglior garanzia di scoprire
e risolvere rapidamente i problemi
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 11 /51 ▪
Trace: metodi a confronto
I metodi per ottenere il trace differiscono a seconda se richiedono
trace hardware aggiuntivo oppure se sono inclusi nel jtag debugger
stesso senza ulteriore hardware.
Lauterbach supporta molti diversi metodi:
1.
2.
3.
4.
5.
6.
Bus Trace
Questi metodi consentono
Flow Trace (program)
program-trace e data-trace
System Trace (data)
in modo non intrusivo
Software Trace (logger)
Snooper Trace (campionato)
Advanced Register Trace (step)
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 12 /51 ▪
ARM CoreSight Trace
Nei chip ARM/Cortex le risorse debug e trace dell’intero system-on-chip sono
realizzate dalla cella ARM CoreSight. CoreSight è una collezione di componenti
hardware definita da ARM, che possono essere implementati nel design di un
chip.
Le componenti più interessanti
per il real-time trace sono:
• ETM Embedded Trace Macrocell (*)
che realizza il Program Flow Trace
• STM System Trace Macrocell
che realizza il System Trace
(*) Nei Cortex-A9 e superiori ETM
si chiama PTM Program Trace Macrocell
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 13 /51 ▪
Trace Ports
Il trace viene automaticamente generato dalla cella ETM mentre la
cpu è running, l’operazione non è intrusiva per la CPU.
La trasmissione avviene attraverso una trace-port (TPIU) che può
essere parallela o seriale ad alta velocità.
Per catturare e decodificare il trace-flow in tempo
reale serve un probe hardware sofisticato, con
tecnologia «autofocus».
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 14 /51 ▪
Trace Recording
Ogni messaggio trace viene marcato con timestamp e registrato nella
memoria del PowerTrace. Il trace può essere immediatamente
ricostruito e analizzato dal debugger PowerView.
• Tecnica assolutamente NON intrusiva
• Non richiede instrumentazione software
• Permette velocità elevatissime
• Richiede pochi pin dedicati
Trace Probe ETM
Recording
Trace Flow
TRACE32 PowerView
Trace Analysis
PowerTrace II
Trace Storage (up to 4 Gbyte)
TRACE32: lo strumento più completo per il trace di un sistema Linux
JTAG
Ethernet
or USB
ARM/Cortex chip
TRACE
JTAG Cable
Debug Port
CORE
ETM Trace
Generation
ARM/Cortex chip con debug-port
e trace-port
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 15 /51 ▪
Con PowerView il Real-Time Trace si usa per:
1) Trace-based Debugging
Debug rapido senza fermare la CPU
Trovare bugs che appaiono solo in real-time
2) Ottimizzazione con misure temporali
Analizzare le performance del codice
Analizzare eventi esterni
3) Qualificazione
Dimostrare il rispetto dei requisiti real-time
Verificare il code coverage
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
ISO
26262
▪ 16 /51 ▪
1) Trace-based Debugging
Il trace è sempre attivo, ogni esecuzione in run o step viene registrata ed è visibile
per comprendere cosa è accaduto: con il trace si evita di perdere tempo
procedendo per tentativi con i breakpoint.
Con il trace ci si può semplicemente fermare DOPO che il problema è accaduto e
tornando indietro nel trace (= nel tempo) si può osservare il comportamento del
programma nel punto in cui ha sbagliato:
Istruzioni eseguite
TEMPO
Istruzioni non eseguite
Data read/write
Tempo relativo
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 17 /51 ▪
2) Ottimizzazione
PowerView è ricco di comandi
specifici per analizzare e misurare
il programma eseguito.
Functions tree
analysis
Task/module/function
runtime chart
Task/module/function
runtime statistic
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 18 /51 ▪
ISO
3) Qualificazione
26262
Un «hardware based trace tool» è lo
strumento ideale (ranking #1) per ottenere
il Code Coverage in modo veloce e
immediato.
ISO26262
DO-178
Function coverage
Statement & conditions coverage
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 19 / 51 ▪
Agenda

Linux «trace assisted» debugging

Che cosa è il Trace?

Program Trace con linux

System Trace con linux

Posso usare il Trace sul mio target?

Q&A
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 20 /51 ▪
Program trace con Linux
Nel precedente seminario sul debugging linux, sono state eseguite le varie fasi di
boot di un sistema linux, fermandoci in break per mostrare il debug di ogni
componente.
Useremo una tecnica simile per mostrare, grazie al trace, cosa accade «durante»
ogni fase del boot, fino al completo avvio del sistema Linux.
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 21 /51 ▪
Program trace con Linux
Il target di prova è una PandaBoard, basata su TI OMAP4430. E’ un chip
dual-core Cortex-A9 @ 1Ghz, ricco di risorse CoreSight e debug port JTAG,
trace port PTM e system trace port STM.
Lauterbach Debug & Trace adapters
MIPI60, Mictor38, MIPI34
Computer
Mwindows, Linux o MacOS-X
TRACE32 PowerView Debugger
Tool: PowerTrace II system
Multicore JTAG debugger Cortex-A/R
Trace Probe ETM Autofocus II
2GB Trace Storage
TRACE32: lo strumento più completo per il trace di un sistema Linux
Target: PandaBoard
TI OMAP4430 dual Cortex-A9 @ 1Ghz
Kernel SMP Linux 2.6.x e Linux 3.x
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 22 /51 ▪
Program trace con Linux
Il target è una PandaBoard, basata su TI OMAP4430. E’ un chip dual-core
Cortex-A9 @ 1Ghz, dotato di risorse CoreSight complete e debug port, trace
port e system trace port.
Ethernet 10/100/Gigabit
or USB
Computer
Mwindows, Linux o MacOS-X
TRACE32 PowerView Debugger
Tool: PowerTrace II system
Multicore JTAG debugger Cortex-A/R
Trace Probe ETM Autofocus II
2GB Trace Storage
TRACE32: lo strumento più completo per il trace di un sistema Linux
Target: PandaBoard
TI OMAP4430 dual Cortex-A9 @ 1Ghz
Kernel SMP Linux 2.6.x e Linux 3.x
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 23 /51 ▪
Debug & Trace delle componenti linux
Per il “trace” di un sistema Linux serve la stessa configurazione utilizzata per il
“debug”: si caricano i simboli del kernel (vmlinux), si attiva il supporto MMU e
l’Address Extension, si configura la “Linux Awareness” (linux.t32).
TRACE32 consente l’accesso il debug e il trace di qualsiasi componente:
 Debug & Trace the kernel
 Debug & Trace kernel modules
 Debug & Trace processes/threads
 Debug & Trace libraries
 Automatically loading and unloading
symbols for kernel modules,
processes and libraries
Linux Awareness
menu
TRACE32: lo strumento più completo per il trace di un sistema Linux
 Display kernel information
(file systems, kernel log, device tree…)
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 24 /51 ▪
WARNING: STARTING LIVE DEMO…
…FASTEN YOUR SEAT BELT !
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 25 /51 ▪
Tracing linux components: boot entry
Tipicamente un bootloder configura l’hardware
per l’esecuzione del sistema operativo.
L’immagine del kernel Linux (uImage) viene
caricata in RAM dal bootloader (uboot) oppure
anche dal debugger stesso.
La sessione di debug e trace parte da qui:
0x80008000 ENTRY __init_begin:
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
Terminal emulator
integrato in TRACE32
▪ 26 /51 ▪
Tracing linux: _init_begin:  start_kernel()
Trace.List
Il kernel parte a indirizzi fisici a 0x80008000,
tra le prime inizializzazioni configura l’MMU
alla label __turn_mmu_on attivando così la
traslazione in indirizzi logici a 0xC0000000.
Da __mmap_switched in poi il sistema
funziona a indirizzi logici.
La sequenza iniziale fino a start_kernel() è
registrata nel trace buffer e può essere
analizzata.
T32 DEMO
Trace.Chart
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 27 /51 ▪
Tracing linux: start_kernel()  cpu_idle() [1/3]
Da start_kernel() inizia la lunga sequenza delle inizializzazioni del sistema che
dopo aver attivato il primo processo (swapper) e i suoi 4 threads terminerà con
cpu_idle()
Il sistema è ora multitasking, come distinguere
il trace prodotto dal kernel rispetto al trace
prodotto dai vari processi o threads?
E’ necessario un metodo per individuare nel
trace lo spaceid e/o il pid di ogni nuovo
processo o thread
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 28 /51 ▪
Tracing linux: start_kernel()  cpu_idle() [2/3]: ContextID
La trasmissione via ETM di un nuovo ContextID è causata dalla operazione di
scrittura, nel registro p15, di un nuovo spaceid: operazione che il kernel esegue ad
ogni switch verso un nuovo processo o thread.
ETM ha il registro
«ContextID» dedicato
a questo.
Configurandolo ETM
trasmette anche
messaggi «owner»:
ContextID
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 29 /51 ▪
Tracing linux: …  cpu_idle() [3/3]: address extension
I messaggi «owner» consentono a PowerView di identificare lo switch verso ogni
nuovo processo e thread, ricavandone space-id e PID

In Linux, lo space-id di un processo è il PID del main thread

Il kernel e tutti i suoi threads hanno per convenzione space-id = zero

TRACE32 usa l’identificatore space-id per distinguere tra diversi processi
estendendo lo spazio di indirizzamento.

L’Address Extension viene abilitata dal comando SYS.Option MMUSPACES ON
T32 DEMO
Space-id = 0x0000 : kernel thread
TRACE32: lo strumento più completo per il trace di un sistema Linux
Space-id = 0x02F4 : user process PID 0x02F4
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 30 /51 ▪
Tracing linux : cpu_idle()  secondary_start_kernel() [1/2]
Fino a ora il kernel ha eseguito con un solo core (core0), la prossima operazione
rilevante per il trace è l’attivazione del secondo core (core1) che esegue a partire da
secondary_switched:  secondary_start_kernel().
E’ necessario un metodo per distinguere il trace prodotto dai diversi cores che
eseguono in parallelo, e un modo per visualizzarlo in PowerView…
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 31 /51 ▪
Tracing linux : cpu_idle()  secondary_start_kernel() [2/2]
Il core number è codificato negli ETM trace messages stessi.
Con un sistema multicore
SMP, PowerView mostra
automaticamente il core
number per ogni linea del
trace.list o trace.chart.
Ad ogni core viene anche
assegnato un colore di
sfondo.
Core 0
Core 1
Core 0
Core 1
Core 0
Core 1
Core 0
TRACE32: lo strumento più completo per il trace di un sistema Linux
T32 DEMO
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 32 /51 ▪
Tracing linux : GO till boot complete…
Con un RUN di circa 3 secondi Linux completa il
boot fino all’avvio della shell (proc sh)
Grazie al trace l’intero processo di boot può
essere completamente analizzato e misurato.
T32 DEMO
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 33 /51 ▪
Tracing linux : trace processi utente [1/3]
Come per il debug del kernel, anche per il debug di un processo è necessario
caricarne i simboli. Questo si può fare in modo automatico con uno script, oppure
interattivo con il menu «Process Debugging»:
3
3
2
1
TRACE32: lo strumento più completo per il trace di un sistema Linux
Non appena il processo viene
avviato il debugger ne carica i
simboli e si ferma in break al main()
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 34 /51 ▪
Tracing linux : trace processi utente [2/3]
Trace della sequenza di attivazione di un processo, fino al suo entry point main(), in
questo esempio in esecuzione con PID 0x286 (646) su core 1.
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 35 /51 ▪
Tracing linux : trace processi utente [3/3]
Trace del funzionamento di un processo running,
evidenziato con trace filter e symbols group.
“sieve” proc
function nesting
trace filter proc “sieve”
hide kernel
“sieve” proc
functions
T32 DEMO
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 36 / 51 ▪
Agenda

Linux «trace assisted» debugging

Che cosa è il Trace?

Program Trace con linux

System Trace con linux

Posso usare il Trace sul mio target?

Q&A
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 37 /51 ▪
Cosa è il System Trace?
System Trace: è l’applicazione stessa che trasmette le informazioni necessarie
a far comprendere cosa accade durante il runtime: un trace «di sistema».
Tutti gli sviluppatori sanno
bene cosa significa inserire
nel programma delle printf()
per avere un diagnostico
runtime.
I principali problemi di questo
approccio sono:
•
•
•
•
•
Necessità di usare risorse preziose (porta seriale o ethernet o logfile)
Scarsa velocità di trasmissione e alta latenza (la stampa è differita)
Notevole intrusione run-time
Nessun parallelismo
Nessun time stamp
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 38 /51 ▪
System Trace by ARM: CoreSight STM
L’idea del «System Trace» è valida, il problema principale è il canale di
trasmissione. Per questo motivo ARM ha definito un modulo dedicato in
CoreSight: STM «System Trace Macrocell».
• STM è un componente CoreSight che implementa un canale di trasmissione
diretto a bassa latenza e elevata velocità, dedicato all’implementazione di
tecniche di debug «printf style»
• E’ una soluzione scalabile che consente a sistemi multi-core e multi-tasking di
accedere ad STM senza preoccuparsi degli altri core o processi: STM supporta
65536 canali indipendenti (65536 8/16/32 bit hw data trace write registers!)
• I dati STM vengono immediatamente trasmessi all’esterno attraverso una trace
port dedicata o attraverso la stessa off-chip trace port usata per il program
trace (simultaneamente)
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 39 /51 ▪
System Trace: utilizzo base
I dati trasmessi dal System Trace vengono registrati e possono essere mostrati in
PowerView in diversi modi, interpretati, esportati su file o pipe.
String
write
Address
Log
Data Write
8/16/32 bit
Core Number
TRACE32: lo strumento più completo per il trace di un sistema Linux
Channel Number
▪ Better Embedded 2014 ▪ www.lauterbach.com
T32 DEMO
▪ 40 /51 ▪
Tracing Linux kernel events
Il kernel Linux integra una architettura software per il trace di eventi di sistema. Le
informazioni vengono raccolte da «tracepoint», che sono punti di
instrumentazione predefiniti nel kernel, e salvate su file o trasmesse all’esterno
con i metodi tradizionali.
Come per la «printf», l’idea è valida, il problema è il canale di trasmissione (file,
rete): è troppo intrusivo, altera il funzionamento del sistema stesso, non è
disponibile in molti dispositivi embedded.
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 41 /51 ▪
Tracing Linux kernel events via STM [1/2]
Grazie alla collaborazione con Michael Trimarchi di Amarula Solutions, possiamo
presentare in anteprima un sistema «Linux Tracer» via STM:
Linux System Tracer via STM:
•
•
•
•
•
•
Utilizza l’architettura software Linux Kernel Tracing
Aggiunge nuovi tracepoints
Trasmette i dati immediatamente via STM
Utilizza messaggi di dimensione massima 8x 32 bit words (per evento)
Usa un canale STM per ogni core per aumentare il parallelismo
E’ portabile su diversi SoC con modifiche limitate al kernel Linux
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 42 /51 ▪
Tracing Linux kernel events via STM [2/2]
I tracepoints nel sorgente del kernel forniscono un hook per chiamare una
funzione (probe), che può essere fornita runtime.
Un tracepoint in stato «OFF» non ha effetto.
Un tracepoint in stato «ON» chiama la funzione fornita ogni volta che viene
eseguito.
L’attuale implementazione effettua il trace STM di questi kernel events:








Process/Thread Creation
Process/Thread Switch
Process/Thread Deletion
Process Rename
Thread State Change
Interrupt Exception Entry/Exit
ISR Entry/Exit
ASID Assign
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 43 /51 ▪
Tracing Linux kernel events via STM: demo
L’esecuzione di un tracepoint, in
questo caso un Process Switch,
causa l’immediata trasmissione
dell’evento via STM
PowerView mostra
sia i dati «raw» che
i dati interpretati
T32 DEMO
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 44 /51 ▪
Tracing Linux kernel events via STM: next step
Questa implementazione del sistema Linux STM Trace è realizzata su un sistema di
riferimento dual-core Cortex-A9 OMAP4xxx, con kernel Linux 3.12
E’ una piattaforma largamente utilizzata, compatibile con OMAP5, compatibile STM,
supportata nel linux kernel mainline
Lo sviluppo di questa soluzione è in corso e procede su due fronti:
1) Kernel source:
• Aggiornamento sul nuovo linux kernel (3.16?) e sulla nuova
implementazione Coresight
• Esportazione di più tracepoint events
• Rilascio nel linux kernel Mainline
2) PowerView debugger:
• Visualizzazione grafica dei kernel events
• Sincronizzazione eventi System Trace con Program Trace
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 45 / 51 ▪
Agenda

Linux «trace assisted» debugging

Che cosa è il Trace?

Program Trace con linux

System Trace con linux

Posso usare il Trace sul mio target?

Q&A
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 46 /51 ▪
Cosa è necessario prevedere per avere
il trace sul mio target?
 Scegliere una CPU con trace
• Oggi ce ne sono moltissime
• Il trace può essere off-chip o on-chip
 Prevedere un connettore per il trace
• Se on-onchip è sufficiente la debug-port (es. JTAG)
• Se off-chip è necessario aggiungere la trace-port (es. ETM)
• ETM e STM possono essere su connettori separati (MIPI)
 Scegliere un trace tool adeguato in funzione di:
• Tipo e dimensione della trace-port
• Velocità massima del trace-clock
• Tipo e durata del trace desiderato
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 47 /51 ▪
Alcuni esempi
Solo System Trace
STM Trace-port 4 bit
Trace-clock max 200Mhz
PowerDebug
Combiprobe
Solo Program Trace
Trace-port ETM 4..32 bit
Trace-clock fino a 300Mhz
PowerTrace
Probe ETM AF-II
Program Trace + System Trace
Trace-port ETM 4..32 bit
Trace-port STM 4 bit
Trace-clock a oltre 600Mhz
PowerTrace II
Probe ETM AF-II
Combiprobe
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 48 /51 ▪
Per approfondire:
Flyer (in italiano)
 Debug & Trace for ARM
 Overview dei Prodotti
 Linux Flyer
Advanced Debugging and Tracing tools
for ARM architectures and Linux kernels
Web
 Training Linux (training manual)
www.lauterbach.com/pdf/training_rtos_linux.pdf
 RTOS Debugger for Linux (manual)
www.lauterbach.com/doc/rtoslinux.pdf
 TRACE32 Startup Script (repository)
www.lauterbach.com/scripts.html
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 49 / 51 ▪
Agenda

Linux debugging: problems & solution

Che cosa è il Trace?

Program Trace con linux

System Trace con linux

Posso usare il Trace sul mio target?

Q&A
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
▪ 50 /51 ▪
Q&A…
Linux? Kernel?
Target? CPU?
Connector?
Debug? Trace?
PowerTrace?
JTAG?
DOMANDE?
SI
Risposte...
NO
FINE
TRACE32: lo strumento più completo per il trace di un sistema Linux
▪ Better Embedded 2014 ▪ www.lauterbach.com
Grazie per aver partecipato al seminario
TRACE32: lo strumento più completo
per il trace di un sistema Linux
Maurizio Menegotto, Lauterbach
[email protected]
Per informazioni:
tel:
02-45490282
web: www.lauterbach.it
email: [email protected]
Linux Events Tracer via STM by
Michael Trimarchi, Amarula Solutions
[email protected]
www.lauterbach.com
Scarica

TRACE32: lo strumento più completo per il trace