Embedded_51 - page 78

EMBEDDED
51 • FEBBRAIO • 2014
78
SOFTWARE
RTOS
suo identificatore? Ciò può portare al danneggiamento
delle strutture interne dell’RTOS e ad un possibile errore.
Gli interrupt sono gestiti
con una macro / funzione o ci
si deve scrivere il proprio prologo (entry) ed epilogo (exit)?
L’approccio a macro potrebbe far risparmiare un sacco di
tempo di sviluppo - codifica e testing.
L’RTOS si sincronizza
con gli eventi? Gli oggetti di sincro-
nizzazione eventi si cancellano automaticamente su rilascio
di un task oppure gli eventi possono essere “dimenticati”?
Possono più tasks rimanere in attesa (wait) di un singolo
evento? Può un singolo task rimanere in attesa di più eventi?
Molti RTOS limitano
il conteggio per tick da un interrupt
periodico per stabilire il system time. Qualsiasi altra forma
di conteggio è lasciata all’utente. L’RTOS consente di contare
entrambi i tick periodici o aperiodici?
Oltre alla variabile tempo,
può l’RTOS contare anche i tick?
Il tempo può non essere la sola variabile indipendente
in un’applicazione.
Il conteggio della posizione angolare o dello sposta-
mento è utile per i sistemi che dispongono di elementi
fisici che ruotano a velocità variabile come il controllo
motore, sistemi ABS, contatori a turbina, ecc. I Ticks
potrebbero misurare la portata attraverso un contatore
volumetrico. Non forzate il sistema in una struttura
basata sul tempo se qualche altro meccanismo di con-
teggio è più adeguato.
Alcuni RTOS usano
Timers; altri usano Allarmi.
Lo scopo è quello di iniziare un’azione futura.
Sono Timer / Allarmi disponibili a livello globale
in modo che possano essere utilizzati da più task
o sono legati ad una singola attività? L’ RTOS
consente di definire le azioni future da intrapren-
dere quando un contatore raggiunge un valore
predefinito?
La migliore gestione della RAM
da parte di
un RTOS è di solito fatta con partizioni in cui
ogni blocco è della stessa dimensione. Questo
impedisce la frammentazione e consente allo-
cazioni deterministiche.
L’ RTOS gestisce la RAM con un heap che
possa creare una risposta non-deterministica
e la frammentazione? Ciò può aggiungere ulte-
riore sovraccarico.
Possono i blocchi di una partizione di memo-
ria essere usati per creare un’altra partizione
dinamicamente?
Le applicazioni
si passano dati da una entità
di codice a un’altra. Queste operazioni di ‘data
passing’ vengono identificate con diversi nomi:
Queues, Mailboxes/Messages, Pipes. La mag-
gior parte dello scambio dati è o con blocchi a
dimensione fissa o a dimensione variabile.
• L’RTOS offre diverse modalità di scambio dati (data
passing)? Maggiori sono le possibilità di scelta, miglio-
re è la flessibilità per soddisfare i requisiti dell’appli-
cazione.
• L’RTOS permette che i dati vengano scambiati tra i
task e le ISR (o solo tra tasks)? Ciò aumenta l’efficienza
del sistema.
• In che modo l’RTOS
fornisce accesso esclusivo
alle risorse? Utilizza binary semaphores o mutexes?
Mutexes sono generalmente migliori perchè conosco-
no l’identità del task proprietario.
L’RTOS ha un meccanismo
per evitare l’inversione
di priorità (priority inversion) – quando un task a bassa
priorità ha il controllo di una risorsa che è richiesta da un
task con priorità superiore?
Fig. 5 – Proprietà dell’applicazione specificate col tool di
configurazione RTXCgen
Fig. 4 – Tool di configurazione RTXCgen
1...,68,69,70,71,72,73,74,75,76,77 79,80,81,82,83,84,85,86,87,88,...100
Powered by FlippingBook