EMB_75

55 EMBEDDED FEBBRAIO RTOS TOOLS | SOFTWARE Osservando la visualizzazione del trace di À - no gli attori, mentre ogni rettangolo colo- rato è un frammento di quell’attore. Tracealyzer propone anche un concetto di istanza che non trova riscontro in altri tool per il tracing di un RTOS. Il miglior modo di descrivere un’istanza è quello di una se- quenza di uno o più frammenti che insie- me rappresenta un carico di lavoro com- pletato per l’attore – ad esempio la lettura e l’elaborazione del valore acquisito da un sensore. Nel momento in cui l’utente clicca su un frammento della vista principale di Tracealyzer, l’intera istanza è evidenziata À Il concetto di istanza è abbastanza centra- le in Tracealyzer poiché le istanze vengono utilizzate sia per la visualizzazione del tra- ce sia per fornire le statistiche di temporiz- zazione. Oltre a ciò, gli indicatori (metrics) delle prestazioni come i tempi di esecuzione e di risposta vengono calcolati per ciascuna istanza e possono essere visualizzati sotto À variazioni in funzione del tempo (Fig. 6) e di istogrammi che ne evidenziano la distri- buzione. Fig. 5 – Attori, istanze e frammenti di Tracealyzer E À + ! " $ " ! $ ! ! ! in funzione del tempo Alcuni comuni oggetti di sincronizzazione Semaforo: un segnale tra task e interrupt che non trasporta nessun altro dato aggiuntivo. La tipica im- plementazione prevede che un task contenga un loop principale con una chiamata all’RTOS per acquisire il semaforo. Se il semaforo non è ancora segnalato, l’RTOS blocca l’esecuzione del task fino al momento in cui qualche altro task o routine di interrupt “cede” il semaforo, ovvero segnali la disponibilità. Mutex: un semaforo binario utilizzato per l’esclusione mutua tra task per proteggere una sezione critica. In- ternamente esso opera allo stesso modo di un semaforo binario, ma viene usato in maniera differente. Esso viene acquisito prima della sezione critica e rilasciato subito dopo, all’interno del medesimo task. Semaforo a conteggio: un semaforo che contiene un contatore con un limite superiore, consentendo di te- nere traccia di risorse condivise limitate. Ogni volta che una risorsa deve essere allocata, il contatore viene incrementato e nel caso in cui venga superato il limite superiore, la richiesta viene negata. Quando la risorsa deve essere rilasciata, l’operazione di cessione decrementa nuovamente il contatore. Coda: buffer FIFO che consente il passaggio di messaggi arbitrari ai task. Solitamente ogni coda prevede uno specifico task di ricezione e uno o più task di trasmissione. Le code sono spesso utilizzate come ingresso per task tipici dei server che forniscono molteplici servizi/comandi.

RkJQdWJsaXNoZXIy MTg0NzE=