livello, su architetture a microcontrollore senza MMU (AVR, PIC, ARM7, Cortex-M3/M4, etc...). Linguaggio di programmazione C. Obbiettivi Target audience Presentare vari approcci architetturali alla programmazione embedded di basso livello, con e senza RTOS, evidenziandone pregi e difetti.
Sistema operativo open source per applicazioni embeddded real-time sviluppato da Develer • Oltre al kernel sono disponibili driver e librerie generiche
operativo, anche minimale, che garantisce prestazioni real time. Fornisce una serie di servizi per sviluppare applicazioni multitasking. Real Time? Real Time Operating System Real Time non significa veloce o reattivo a priori, ma solo che è (abbastanza) predicibile e deterministico nell'esecuzione dei compiti. Questo permette di progettare applicativi reattivi e veloci.
RAM: alcune decine/centinaia di bytes per processo Context switch time Occupazione memoria Alcuni microsecondi su CPU con clock a 50MHz Costo Da gratis a diverse decine di migliaia di euro. Aperti o chiusi, libera o proprietaria Sorgenti & Licenza
di compiti in background, mentre gli interrupt eseguono i compiti asincroni e più time-critical in foreground. • Le ISR sono generalmente lunghe. • Le informazioni generate da una ISR non sono processate dai task in background finché non arriva il loro turno di esecuzione.
intervalli regolari una temperatura e attivare delle protezioni • Campionare ad intervalli regolari dei livelli di tensione e fare delle operazioni • Salvare delle impostazioni da una memoria, alla pressione di un tasto • Effettuare un controllo: se un pin di allarme si attiva, bisogna leggere un valore dall'ADC, effettuare dei calcoli e regolare la velocità di un motore nel più breve tempo possibile.
con facilità molti processi • Cambio di contesto prevedibile: problemi di sincronizzazione ridotti • Bassa latenza: nessun spreco per attese dai driver di I/O • ISR molto brevi Svantaggi Vantaggi • Media occupazione di memoria RAM • Non deterministico nella latenza (elevata jitter)
va strutturato nello stesso modo • I processi si creano nello stesso modo • Il main loop rimane lo stesso • E' sempre necessario regolare l'accesso a strutture dati condivise!
updating param Try to acquire semaphore Wakes Save Process Temperature Process Save Process ISR Finish updating User press button Read Temperature Obtain semaphore Restart Semaphore already Locked. Wait... Save parameters Release semaphore Release semaphore
con facilità molti processi • Bassissima latenza: nessun spreco per attese dai driver di I/O • Deterministico nella latenza Svantaggi Vantaggi • Media occupazione di memoria RAM • ISR lunghe • Necessità di sincronizzare l'accesso a dati condivisi