
Real Time Engineers, l'azienda che sta dietro il sistema operativo open source, FreeRTOS, ha rilasciato la versione 7.0, che dispone di una nuova applicazione software che permette al timer callback di essere eseguito in un contesto di lavoro, piuttosto che come un interrupt.
L'azienda sostiene che questo approccio non significa tempo di elaborazione o di esecuzione sopraelevati. Il kernel è pienamente compatibile, vale a dire l'aggiornamento dalla versione 6.x è semplice.
E' stata aggiunto il porting alla famiglia di microcontrollori MSP430x TI, via Code Composer Studio, portando il numero di porting ufficiali a 52. Ogni porting include un'applicazione documentata con un esempio pre-configurato che dimostra le funzionalità del kernel. Scarica l'ultima versione di RTOS

non sapevo che questo sistema operativo fosse così compatibile… praticamente lo è con tutti i controllori
Ho dato un’occhiata al sito indirizzato dal link a fine articolo, ma mi pare di aver capito che il sistema operativo in se è Free, mentre la documentazione che descrive come usarlo o come integrarlo nei propri firmware è tutt’altro che free. Le documentazioni sembrano essere a pagamento, anche se spulciando nelle varie pagine del sito si trova anche la sezione getting started che mette in luce alcuni esempi di utilizzo utili per poter iniziare a sviluppare con questo software. Non è da molto che mi cimento con i microcontrollori o simili, e gestire il codice attraverso un RTOS mi sembra una cosa appartenente ai livelli avanzati di programmazione. Per dirvi, il massimo che al momento riesco a fare è programmare Arduino (avuto grazie all’iniziativa Review4U di Elettronica Open Source…il progetto allora proposto e lasciato in sospeso è ancora in fase di sviluppo, appena riesco a cavare fuori un qualche risultato decente scrivo l’articolo e lo propongo…per i partecipanti a 300€ dico di non preoccuparsi, perchè non prevedo di proporre l’articolo prima di un altro paio di mesi, il lavoro mi sottrae all’hobby, purtroppo) o scrivere poche righe di codice per i microcontrollori pic, ovviamente tutto in C anche se riconosco le potenzialità dell’Assembly, ma non ho quella testa da programmatore da riuscire ad ottimizzare un codice utilizzando il linguaggio macchina, per me questo è arabo! :). Ho notato la grande disponibilità di microcontrollori per i quali questo sistema operativo può essere adattato e sarebbe davvero interessante riuscire a farlo funzionare. Mi sa che per i PIC, oltre che per la serie a 32 bit, non c’è il supporto per le altre serie di fascia più bassa, anche se cercando su internet con google qualche progetto con PIC24F a 16 bit e che sfrutta FreeRTOS c’è! Io sono ancora alle architetture a 8bit quindi al momento FreeRTOS è davvero lontano dalla mia portata!!! Mi piacerebbe però leggere una guida, un tutorial o meglio ancora un progetto commentato passo dopo passo perché credo che questo rappresenti il modo corretto per imparare.
Da quello che so sui sistemi operativi, riesco comunque ad estrapolare dall’articolo la vera innovazione della versione 7 di FreeRTOS. Il timer di callback dovrebbe essere il timer che cadenza il tempo dei singoli task o quanti di task in un contesto di algoritmo di scheduling. Il processore che esegue i task è comunque sempre e solo uno, quindi più task non possono essere eseguiti in parallelo ma in sequenza, un pezzo di task per volta a seconda anche delle priorità stabilite. Per chi non lo sapesse, un interrupt è un evento forzato dal verificarsi di un altro evento, tutto a priorità maggiore rispetto all’esecuzione usuale del codice. L’interrupt all’overflow di un timer può essere adoperato proprio per scandire i tempi di esecuzione dei diversi task, o parte di essi. Con l’interrupt si è certi di mantenere saldi i tempi prestabiliti. Utilizzare al contrario la gestione dei task non tramite interrupt ma in un contesto di lavoro significa, probabilmente, eseguire un algoritmo di pooling con il codice, e se questo non è ben strutturato si rischia di perdere le tempistiche. Il sistema operativo diventa pure meno prevedibile, ma queste sono ipotesi da ignorante in materia, chi ha progettato il sistema è un team di ingegneri, quindi mi fido ciecamente del loro operato!
Se qualcuno ha realizzato dei sistemi embedded basati su sistemi operativi anche simili a questo, che postasse la sua esperienza in modo da poterne giovare tutti! 😉
Volevo precisare però che il costo della documentazione (PDF) relativa alle varie famiglie di microcontrollori è a pagamento (http://www.freertos.org/Documentation/FreeRTOS-documentation-and-book.html), ma ad un costo davvero minimo, solo 10$, e penso che il team che ha messo in piedi questo progetto andrebbe sostenuto attivamente…diciamo che al contrario di tante software house che arrivano a chiedere centinaia di dollari per la sola licenza, il team di FreeRTOS si è limitato a chiedere un contributo minimo per la documntazione di un ambiente software multipiattaforma e che per chi lo sa usare (sa qualcosa in più di programmazione rispetto a me…)è utile per liberarsi dagli impicci nella gestione di firmware complessi e altrimenti difficili da implementare senza il supporto di un SO…complimenti al team!
Tutta la documentazione necessaria per utilizzare FreeRTOS e per portarto ad altre architetture è free e disponibile pubblicamente sul sito. A pagamento ci sono solo delle sorte di “ebook”, comunque dal prezzo accessibile e il cui ricavato va a sostenere lo sviluppo del progetto. Per l’utilizzo, ripeto, non è necessario l’acquisto.
Io stesso ho fatto il porting di questo kernel per la famiglia LPC2300 (ARM7) della NXP solo basandomi sulla documentazione disponibile liberamente dal sito.
Riguardo la bontà del prodotto, confermo che è un kernel stabile e veramente ben fatto. La documentazione è scritta bene e lo stesso sviluppatore è sempre molto attivo nel forum di supporto. Inoltre è stato portato ormai su qualunque architettura ed è pieno di esempi di utilizzo.
Non posso fare altro che consigliarlo per qualunque progetto, dai semplici esperimenti casalinghi a progetti commerciali.