Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RTOS demistified - Francesco Sacchi

RTOS demistified - Francesco Sacchi

Avatar for Better Embedded

Better Embedded

September 24, 2012
Tweet

More Decks by Better Embedded

Other Decks in Technology

Transcript

  1. Francesco Sacchi – [email protected] RTOS Demistified Sviluppatori firmware di basso

    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.
  2. Francesco Sacchi – [email protected] Presentazione • Maintainer di BeRTOS •

    Sistema operativo open source per applicazioni embeddded real-time sviluppato da Develer • Oltre al kernel sono disponibili driver e librerie generiche
  3. Francesco Sacchi – [email protected] Cos'è un RTOS? E' un sistema

    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.
  4. Francesco Sacchi – [email protected] RTOS facts Flash: alcuni kB (kernel)

    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
  5. RTOS demistified Approcci alle architetture embedded Elenco di alcune delle

    possibili soluzioni utilizzabili per lo sviluppo di applicazioni embedded.
  6. Francesco Sacchi – [email protected] Background/Foreground • L'applicativo esegue una serie

    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.
  7. Francesco Sacchi – [email protected] Applicativo di esempio • Acquisire ad

    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.
  8. Francesco Sacchi – [email protected] Background/Foreground • Semplicità e linearità Svantaggi

    Vantaggi • Latenza elevata e non deterministica • Bassa scalabilità e manutenibilità • ISR lunghe
  9. Francesco Sacchi – [email protected] Scheduler sincrono Come prima ottimizzazione è

    possibile estrarre e genericizzare il codice di gestione dei compiti temporizzati. In BeRTOS vengono chiamati synctimers.
  10. Francesco Sacchi – [email protected] Scheduler sincrono • Migliore scalabilità e

    manutenibilità del codice • Basso impatto sull'occupazione di memoria flash/RAM Svantaggi Vantaggi • Latenza elevata e non deterministica • ISR lunghe
  11. Francesco Sacchi – [email protected] Latenza La filosofia Background/Foreground e gli

    scheduler sincroni soffrono di problemi di latenza importanti. Viene sprecato molto tempo CPU
  12. Francesco Sacchi – [email protected] Kernel cooperativo • Scalabilità: si gestiscono

    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)
  13. Francesco Sacchi – [email protected] Kernel preemptive Permette di aumentare il

    determinismo, il cambio di contesto avviene nelle ISR. E' necessario sincronizzare l'accesso a risorse condivise.
  14. Francesco Sacchi – [email protected] Kernel preemptive and cooperative • L'applicativo

    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!
  15. Francesco Sacchi – [email protected] Kernel preemptive: sincronizzazione Start updating parameters...

    Save inconsistent Parameters! Wake Save Process Temperature Process Save Process ISR Finish updating User press button Read Temperature Restart
  16. Francesco Sacchi – [email protected] Kernel preemptive: sincronizzazione con semaforo Start

    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
  17. Francesco Sacchi – [email protected] Kernel preemptive • Scalabilità: si gestiscono

    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
  18. Francesco Sacchi – [email protected] Comparazione soluzioni Background Foreground Synctimers Kernel

    cooperative Kernel preemptive Semplicità/ Facilità d'uso Scalabilità Latenza Occupazione memoria Jitter Problemi sincronizzazione Lunghezza ISR