2012-01-02 21 views
6

Mi chiedo come si profili il software su sistemi bare metal (ARM Cortex a8)? Precedentemente stavo usando un simulatore che aveva statistiche di benchmark incorporate e ora voglio confrontare i risultati dell'hardware reale (eseguito su BeagleBoard-Xm).Profilo su sistemi embedded bare metal (ARM)

Capisco che è possibile utilizzare gprof, tuttavia sono un po 'perso poiché si presuppone che si debba eseguire Linux sul sistema di destinazione?

Costruisco il file eseguibile con il cross-compiler arm-none-eabi di Codesourcery e il sistema di destinazione sta eseguendo FreeRTOS.

risposta

3

Valutare attentamente cosa intendi per "profilazione". Stai davvero lavorando molto vicino al bare metal, ed è probabile che ti verrà richiesto di svolgere parte del lavoro svolto da uno strumento come gprof.

Vuoi chiamare una chiamata? o un ISR? Che ne dici di attivare una linea GPIO all'entrata e all'uscita dal codice sotto controllo. Un registratore di dati o un oscilloscopio può essere impostato per attivarsi su questi eventi. (Nella mia esperienza, un data logger è più conveniente poiché il mio potrebbe essere configurato per catturare una sequenza di questi eventi - permettendomi di calcolare i tempi medi.)

Vuoi contare il numero di esecuzioni? Il Cortex A8 è dotato di una serie di funzioni (come contatori eventi configurabili) che possono aiutare: link. Il chip ARM può essere dotato di altre periferiche che potrebbero essere utilizzate (a seconda del fornitore). Indipendentemente da ciò, dai un'occhiata al link qui sopra - i nuovi ARM hanno un sacco di funzioni interessanti che non riesco a giocare con quanto vorrei! ;-)

+0

Stavo pensando se fosse possibile utilizzare qualsiasi strumento di profilatura come gprof per raccogliere informazioni su vari dati come cicli di clock, grafici delle chiamate, tempo trascorso in ciascuna funzione, quantità di chiamate. Tuttavia sono felice di poter ottenere quanti cicli di clock ci vogliono per eseguire l'applicazione dall'inizio alla fine. Il link che mi hai dato è stato bello, lo esaminerò, Thx! – MrGigu

+0

Ciao, ho ottenuto il clock cycle counter funzionante, tuttavia mi chiedo se sia possibile temporizzare una funzione con la PMU (Performance Monitor Unit)? Ho anche un debugger flyswatter 2, forse che può essere usato per qualcosa? Devo acquistare un data logger o un oscilloscopio per l'hardware del tempo? Non ho mai usato nessuno di questi, e sono piuttosto costosi! – MrGigu

+0

Ecco un analizzatore logico a prezzi ragionevoli. Ha funzionato abbastanza bene per me: http://www.nci-usa.com/frame_products_overview.htm. Alcune delle statistiche PMU possono essere esportate nell'ETM - da lì è possibile accedervi utilizzando l'interfaccia JTAG di Flyswatter. (Sto solo supponendo). – Throwback1986

2

Sono riuscito a far funzionare il profilo per ARM Cortex M. Poiché gli strumenti GNU ARM Embedded (launchpad) non sono dotati di librerie di profilatura incluse, ho aggiunto la funzionalità necessaria di colla e profilazione. Riferimenti: Vedi http://mcuoneclipse.com/2015/08/23/tutorial-using-gnu-profiling-gprof-with-arm-cortex-m/

Spero che questo aiuti.

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte al solo collegamento possono diventare non valide se la pagina collegata cambia https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/8259#8259 –

+0

Per fare una critica o chiedere chiarimenti ad un autore, lascia un commento sotto il loro post. – Bruce