di  -  lunedì 1 febbraio 2010

Pubblichiamo un guest post di Emanuele Rampichini

Eccoci all’ultimo episodio della serie di articoli riguardanti i sistemi operativi realtime. La scorsa puntata vi ho lasciato dicendo che avrei parlato di sitemi operativi dedicati scritti da zero.

Essendo la lista di questo tipo di sistemi molto lunga (in realtà molti sistemi sono “parzialmente real time” essendo semplicemente kernel minimali per hardware specifico che implementano al massimo qualche algoritmo di scheduling a priorità fissa, o semplicemente FIFO con primitive di sistema molto rapide) mi limiterò a presentare Erika Enterprise, sistema su cui sto lavorando ultimamente per un piccolo approfondimento universitario.

Erika Enterprise è una implementazione di un subset delle API dello standard industriale OSEK/VDK per sistemi operativi minimali rilasciato sotto licenza GPL con linking exception. L’aderenza a questo tipo di standard fondamentalmente impone l’implementazione di un minimo di primitive di sistema (ci sono comunque diverse classi di conformità) che abbiano un impatto temporale e di spazio in memoria trascurabile sulle applicazioni che andranno a girare su svariati modelli di microcontrollori.

Il sistema operativo, progetto italianissimo, viene portato avanti dalla Evidence S.R.L., azienda nata come spin-off del laboratorio RETIS dell’Istituto Superiore Sant’Anna di Pisa ed è stato costruito sulla base della grande esperienza maturata sul kernel real time di ricerca S.Ha.R.K.

Quello che differenzia Erika dagli altri sistemi nel panorama degli RTOS dedicati è il fatto che incarna tutti i requisiti fondamentali per la costruzione di applicazioni real time e implementa soluzioni ed algoritmi all’avanguardia per quanto riguarda questo campo:

  • Possibilità di utilizzare scheduler Fixed Priority o Eearliest Deadline First (algoritmo dinamico con gestione dei vincoli temporali sul singolo task).
  • Primitive per la gestione delle risorse condivise come mutex e semafori interi.
  • Algoritmi Stack Resource Policy e Immediate Priority Ceiling (slide di approfondimento per chi fosse interessato) che permettono di evitare problemi di inversione di priorità (fenomeno per il quale a causa delle risorse condivise un processo a priorità più bassa “ruba tempo CPU ad uno a priorità più alta) e possibilità di deadlock con l’utilizzo di risorse condivise.
  • Possibilità di attivazione periodica di task attraverso l’utilizzo di allarmi.
  • Footprint limitato (si parla di dimensioni variabili da 500 byte a poco più di un KiB in base al tipo di scheduler e di stack selezionato in fase di impostazione del progetto).

La Evidence grazie alla partnership con la Embedded Solutions mette a disposizione di sviluppatori interessati la piattaforma Flex Board, scheda dotata del microcontrollore dsPIC® della Microchip che, grazie al suo design modulare, può essere espansa con diverse schede figlie per applicazioni specifiche. Ovviamente il sistema operativo gira anche su altro hardware e si sta lavorando al porting su  svariate piattaforme aggiuntive.

Insieme ad Erika Enterprise viene fornito l’ambiente di sviluppo RT-Druid basato su Eclipse, che porta in dote diversi esempi di codice (tutto in ansi C) e template specifici per l’hardware bersaglio che evitano di dover impazzire dietro a configurazioni strettamente legate all’hardware sottostante.

Ulteriore astrazione è la possibilità di progettare applicazioni in maniera visuale (attraverso la composizione di blocchi che verrano poi tradotti in codice automaticamente) e testarle in ambiente virtuale grazie ad un plugin disponibile per il programma open source scilab e per matlab.

Passiamo adesso alla piccola esperienza personale che ho avuto con questo sistema operativo.
Per quanto riguarda la fase di programmazione il processo risulta molto semplice. Ovviamente per semplice intendo solo a livello di test delle primitive del sistema operativo, programmare applicazioni real time richiede uno sforzo di analisi specifica del problema affrontato non indifferente.

Non avendo mai fatto niente del genere in passato e approcciando per la prima volta un sistema embedded, con un paio di giorni (manuali alla mano) insieme ad un mio compagno di studi siamo riusciti a programmare con successo diversi “casi tipo didattici” per testare la corrispondenza degli algoritmi di scheduling e di gestione delle risorse mutuamente esclusive teorici con le rispettive implementazioni su Erika.

Le varie prove sono state limitate a far accendere qualche led che simulasse il comportamento di task reali, con verifica finale del risultato in rapporto alle schedulazioni precedentemente fatte su carta.

Per chi volesse cimentarsi nella programmazione il wiki è un ottimo punto di partenza e per problemi particolari è disponibile un forum di supporto anche in lingua italiana.

Accantonando per un attimo i tecnicismi e le esperienze personali concludo la mia serie di articoli sul mondo real time con questi video per dimostrare anche ai meno esperti quali “magie” si possano creare con questo sistema operativo ed un semplice microcontrollore (ovviamente se programmati con cognizione di causa).

9 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    n0v0
     scrive: 

    straordinari i video!

  • # 2
    Emanuele Rampichini
     scrive: 

    @n0v0
    Già! Volevo anche mettere il video della applicazione che abbiamo fatto per l’approfondimento universitario ma vedere LED che si accendono più o meno a caso non ha proprio lo stesso impatto! ;-)
    Se non altro per il prossimo natale posso fare un bell’albero di natale real time! :P

  • # 3
    Gianluigi Biancucci
     scrive: 

    Ottimo articolo, come sempre!
    Sintetico e completo allo stesso tempo ;)
    Il video della semplice demo-board che abbiamo realizzato insieme sicuramente non è molto interessante (a meno che non ciano particolari estimatori delle luci di natale temporizzate qui), pero’ se si riuscisse a fare un video di buona qualità, in cui si leggono le “funzioni” a cui sono assegnati i vari led, e con la schedulazione sotto mano, penso lo stesso che possa essere carino a fini didattici :)

    Cmq, a mio parere, la scheda flex nella gestione di 2 servomotori che tengono in equilibrio una pallina è inutile: E’ sufficiente un piu’ modico, meno ingombrante, ed economico server serie Z dell’IBM. Lo volete capire che il software in tempo reale non esiste? esiste solo l’hardware?

    (Attenzione, le ultime 5 righe erano ironiche).

    Gianluigi

  • # 4
    n0v0
     scrive: 

    ogni riferimento a fatti o persone…… XD XD XD

  • # 5
    amadeus
     scrive: 

    cacchio che nostalgia!!!
    il piano basculante miniaturizzato (bascumin) era stato nel 2005 il nostro progetto per l’esame con il prof. Buttazzzo a Pavia!!

    c’era del lego technic, delle viti di gomma, una caterva di led e di saldature.

    ma faceva esattamente la stessa cosa.
    bello vedere il suo pronipote su youtube…..mi ricordo l’intero mese di agosto passato a saldare al laboratorio di robotica…

    LACRIMUCCIA!!!

  • # 6
    Emanuele Rampichini
     scrive: 

    @amadeus
    Prof. Buttazzo che tra le altre cose è l’autore del testo su cui ho preparato l’esame di Sistemi In Tempo Reale nonchè scopritore dell’ hyperbolyc bound test per la schedulabilità sotto rate monotonic.
    Immagino che l’esperienza sia stata veramente stimolante!

  • # 7
    TheFoggy
     scrive: 

    ehi ehi ehi…qui si sta sottovalutando il potere delle lucine di natale temporizzate! ;)

  • # 8
    alessiodp
     scrive: 

    http://conf.ncku.edu.tw/iscas2009/download/CV-of-Professor-Ken-Sakamura.pdf

    io comincerei da qui parlando di OS real time…

    ricordo quando alla scuola sant’anna facevano le gare di irobot che giocavano a calcetto da soli adesso fanno le palline che si reggono sul piano ma questi di lavorare proprio non hanno voglia…sempre a giocare con i lego….tagliategli i fondi che è meglio…

  • # 9
    Emanuele Rampichini
     scrive: 

    @alessiodp
    Hai appena tagliato i fondi all’astrofisica nell’altro post di Eleonora… Accontentati di affossare un settore al giorno almeno. :P

    A parte gli scherzi, conosco il progetto TRON (nello specifico credo che tu ti riferisca a miTRON). È senz’altro un approccio interessante se non altro per l’idea di definire una interfaccia standard aperta per i vari ambiti dei sistemi operativi in modo da favorire l’interoperabilità. Dando una occhiata rapida alle specifiche ho trovato però riferimenti abbastanza vaghi rispetto agli algoritmi di scheduling e alla gestione delle deadline. Se hai tempo e voglia e conosci qualche implementazione della specifica mi interesserebbe sapere come vengono trattate queste problematiche nello specifico.

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.