EMB_75

EMBEDDED FEBBRAIO 54 SOFTWARE | RTOS TOOLS tà è in attesa dello stesso. In questo modo viene evitata ogni interferenza da parte di task a me- dia priorità. Struttura dell’applicazione Percepio Tracealyzer può fornire una panorami- ca delle interazioni tra task e interrupt mediante % } Ciò fornisce una visualizzazione ad alto livello dell’architettura runtime basata sul trace. L’u- tente può anche generare questa visualizzazione per un intervallo selezionato del trace, come pure per oggetti selezionati. Un esempio viene propo- À / Analisi delle prestazioni con Tracealyzer Un importante aspetto dell’analisi delle presta- zioni di un RTOS è il tempo di risposta (response time), ovvero il periodo che intercorre tra l’attiva- zione di un task e il suo completamento. Una mi- sura semplice di questo tipo dà solamente un’in- dicazione del tempo speso dal processore, senza fornire nessun’altra indicazione circa fattori che entrano in gioco come ad esempio le routine di interrupt o l’interferenza da parte di altri task. È anche possibile misurare il tempo di esecu- ' } ( utilizzato da una particolare porzione di codice. Numerosi IDE (ambienti di sviluppo integrati) e microprocessori di larga diffusione supportano il campionamento statistico del program counter che fornisce una panoramica ad alto livello dei task che consumano la maggior parte del tempo del processore. Si tratta in ogni caso di una media che non evidenzia valori anomali, casi sporadici di esecuzioni insolitamente lunghe, che hanno la maggiore probabilità di provocare problemi come ad esempio un timeout. Per individuarli, è neces- sario ricorrere a un tool con caratteristiche più avanzate. Un attore, molte istanze Il termine attore (Actor) è utilizzato in Trace- alyzer in riferimento a tutti i contesti di esecu- zione nel sistema sotto- posto a tracing, come i gestori degli interrupt e i task. L’esecuzione di un attore è diviso in “fram- menti”, ovvero periodi di esecuzione privi di inter- ruzioni. Task H Task M Task L Takes mutex Tries to take mutex, blocked Gives mutex Priority Inversion! Takes mutex Fig. 3 – Schema che illustra il concetto di inversione di priorità " ! $$ $ Á !! $ . ! 0 6 rappresentare un ottimo punto di partenza per il debug, in quanto mostra la modalità utilizzata per trasferire i messaggi all’interno dell’applicazione

RkJQdWJsaXNoZXIy MTg0NzE=