Rtos sempre più compatti

Nei sistemi embedded la presenza del sistema operativo è sempre più ricorrente per la crescente complessità funzionale che questi dispositivi stanno evidenziando. La funzionalità real-time che caratterizza prevalentemente le applicazioni di natura embedded implica la disponibilità di sistemi operativi real-time. Le piccole dimensioni dei sistemi embedded richiedono estrema compattezza dei Rtos (Real time operating system). Infatti, mentre le dimensioni dei sistemi embedded tendono a ridursi sempre più, la complessità delle applicazioni che tali sistemi implementano diventa sempre maggiore. Il software applicativo richiede quindi uno strato superiore di software di sistema che consenta di gestire in maniera efficiente le risorse hardware che la piattaforma applicativa rende disponibile e le numerose applicazioni che il sistema implementa. I sistemi embedded si caratterizzano per la natura scarsa delle risorse on chip (nel caso dei system-on-chip) oppure on board (nel caso dei system-on-board) e conseguentemente i sistemi operativi standard non possono essere utilizzati in quanto non ottimizzati rispetto a tali risorse. In particolare, i sistemi operativi real-time per le applicazioni embedded richiedono efficienze esecutive che non caratterizzano i sistemi operativi standard, ancorché real-time.

Rtos per applicazioni embedded
Una delle caratteristiche dei sistemi operativi Rtos per applicazioni embedded è la compattezza. Questa compattezza implica un basso impegno di memoria di programma e di memoria Ram. La memoria di programma, solitamente di natura non volatile (Flash), anche se di dimensioni non particolarmente ridotte, non è comunque enorme e comunque si tratta, soprattutto nei sistemi embedded molto spinti, di kbyte. La memoria Ram è ulteriormente scarsa e addirittura, in alcuni sistemi sono disponibili sono poche centinaia di byte di Ram, rendendo in tal modo estremamente arduo l’operatività di un sistema operativo, anche se embedded. In questa prospettiva, lo sviluppo dei sistemi operativi Rtos orientati alle applicazioni embedded ha adottato strategie implementative che richiedono risorse di memoria veramente esigue, in alcuni casi meno di 2 kbyte di memoria di programma e qualche centinaio di byte per la memoria dati (Ram). Queste strategie di sviluppo hanno focalizzato l’attenzione soprattutto sull’ottimizzazione del kernel del Rtos, che, reso particolarmente snello, consente di affrontare footprint di memoria particolarmente ridotti. Il kernel del Rtos è infatti l’unico componente del sistema operativo che richiede di essere residente in memoria, quindi è quello che determina l’ordine di grandezza del footprint. Alcuni produttori di Rtos hanno basato sull’architettura riconfigurabile la strategia di ottimizzazione del footprint, strategia che garantisce che nel kernel ci sono solo quelle funzionalità effettivamente utilizzate nell’implementazione. Grazie a queste strategia è stato possibile realizzare Rtos con kernel particolarmente piccoli, capaci di essere eseguiti da microcontrollori ad elevato livello di embedding e quindi dotati di una quantità limitata di memoria, anche nelle versioni più ricche.

Open source Rtos a basso footprint

FreeRtos - FreeRtos di Real Time Engineers, è completamente gratuito si per valutarlo, sia per impiegarlo. Ogni porta viene rilasciata con una serie di demo preconfigurate, per garantire una messa in funzione del Rtos che è vicina alle esigenze di chi deve progettare il sistema embedded. FreeRtos è un kernel scalabile preempitive e cooperativo per piccoli sistemi embedded. Prevalentemente scritto in C, FreeRtos è altamente portabile ed è supportato da 27 architetture di computing.

CMX Tiny+ - CMX Tiny+ di CMX Systems è un Rtos di natura multitasking con un footprint particolarmente ottimizzato per i microcomputer dotati di pochissima memoria on chip (almeno 512 byte): Non è un Rtos nativo per processori embedded in quanto è la versione scalata (10 K Rom e 1 K Ram) del CMX-RTX (royalty-free), da cui ha derivato l’architettura e le principali funzioni operative, tra cui il preemptive and cooperative scheduling (effettivo). CMX-Tiny+ Real-Time Multi-Tasking Operating System è disponibile su svariate piattaforme di computing tra cui Freescale 68HC08, Renesas H8/300 & H8/300H & H8S, Atmel AVR family, Infineon (Siemens) 80C16x, Toshiba TLCS-900, Renesas 78K0/K0S, TI MSP430, STMicroelectronics ST7 & STM8S.

eCosPro - eCosPro di eCosCentric è basato sul Rtos open-source eCos. Questo Rtos a ridotto footprint si caratterizza per i tempi di risposta deterministici, aspetto questo particolarmente importante nella applicazioni embedded real-time spinte. Questa caratteristica, insieme alla bassa latenza nella risposta alle interruzioni e alla commutazione di contesto particolarmente snella, rendono questo Rtos ottimale per affrontare problematiche real-time critiche anche con processori non particolarmente orientati al real-time e con scarse risorse on-chip. Una delle sue peculiarità sta nella capacità di minimizzare il footprint grazie alla possibilità di poter essere “montato” su misura relativamente alle esigenze applicative. eCos è l’acronimo di "Embedded Configurable Operating System". La configurabilità è la tecnologia abilitante del sistema eCos. Questa consente di scalarlo ed adattarlo a footprint particolarmente piccoli, tipici dei system-on-chip. Il sistema di configurazione consente allo sviluppatore di specificare la funzionalità richiesta e le caratteristiche del sistema operativo in una maniera tanto dettagliata e personalizzata da ottenere una versione “application specific”. La configurabiltà sta caratterizzando sempre più il mondo dei sistemi embadded sia a livello software che a livello hardware, e quello di eCosPro è effettivamente un contributo notevole in questa direzione in quanto, non solo si adatta alla struttura, ma anche ne segue gli adattamenti ove si tratta di hardware configurabile.

ThreadX – Proposto da Express Logic, ThreadX è un Rtos royalty-free di natura deterministica multitasking con un footprint variabile tra un minimo di 2 kbyte a un massimo di 20 kbyte, in funzione del tipo di servizio utilizzato. Oltre ad avere un numero illimitato di thread, la sua caratterizzazione è la disponibilità di strumenti per l’analisi real-time di eventi in termini di tracking degli stessi. Sue funzionalità avanzate sono il picokernel, il preemption-tresholding e l’event-chaining. ThreadX è implementato come libreria C, quindi solo le funzionalità utilizzate vengono portate nell’immagine finale del sistema operativo, portando in tal modo le risorse di sistema impegnate al minimo:
· dimensione minima del kernel inferiore a 2K bytes
· queue Services di 900 bytes
· servizi dei semafori di 450 bytes
· services mutex di 1200 bytes
· servizi dei blocchi di memoria: 550 bytes
· requisiti minimi di Ram: 500 bytes
· requisiti minimi di Rom: 2K bytes
ThreadX ha una capacità di risposta agli eventi estremamente veloce e deterministica. Il tempo di boot è di 300 cicli, quello di context switch di 20 cicli e la rilevazione di un semaforo in 30 cicli. Grazie alla disponibilità del codice sorgente (C e Assembler) è possibile conoscere in maniera dettagliata come opera ThreadX relativamente alle sue funzionalità interne come i threads, i timer, le code, i semafori, i mutex, gli event flag, ecc. L’architettura di TreadX è quella picokernel, caratterizzata da moduli applicativi scaricabili dinamicamente e protetti a livello di memoria. Lo scheduling è di tipo preemptive e cooperativo. Altre caratteristiche sono: creazione dinamica di oggetti; numero di system object illimitato; Preemption-threshold; Priority inheritance; Event-chaining; Fast software timers. Altre peculiarità sono le sue funzionalità di profiling interno come: Metrica delle prestazioni run-time; analisi run-time dello stack; built-in system trace; execution Profiling.

Rtos ultraleggeri
La necessità di utilizzare Rtos su microcontrollori ultrasmall, ha spinto allo sviluppo di Rtos ultraleggeri, soprattutto rispetto ai requisiti di Ram, come PowerPac di IAR ed embOS di Segger.

PowerPac - PowerPac di Iar System è un Rtos ottimizzato per basso consumo di memoria (Ram e Rom). Difatti, una recente versione è stata orientata all’MSP430, il microcontrollore ultra low-power di Texas Instruments. PowerPac, perfettamente integrato nel workbench di Iar, si caratterizza per lo schema di scheduling preemptive e round-robin, capace di gestire fino a 255 priorità e un numero illimitato di task, di semafori, di mailbox e di timer software. Il file system per il MSP430 è Mdos/Windows compatibile, con supporto FAT12, FAT16 e FAT32, oltre a svariati driver di dispositivi e di media.

embOS - Sviluppato da Segger, embOS è un Rtos priority-controlled con un impegno incredibilmente basso di Ram, fino a meno di 20 byte. La gestione delle interruzioni è a latenza zero. Altre sue caratteristiche peculiari sono: kernel size (Rom) 1100 - 1600 byte; kernel Ram (uso) 18 - 25 byte ; Ram usata per le mailbox 9 - 15 byte; Ram usata per binary e semaphore 3 byte; Ram per timer 9 - 11 byte; Ram per event 0; zero interrupt latency. embOS è disponibile come libreria o codice sorgente (le stesse librerie sono in codice sorgente). Vari modelli di assemblaggio delle funzioni di libreria sono disponibili al progettista in modo da costruire subito un prototipo di Rtos che si avvicina al sistema embedded che lui intende implementare. Il debug dell’implementazione è affiancato dal profiling, quindi, per lo sviluppatore è possibile eseguire la valutazione preventiva delle prestazioni dell’implementazione. Le librerie supportano comunque tutte le funzionalità di embOS, quindi lo sviluppatore può pervenire, senza limitazioni, alla configurazione ottimale per il suo target embedded. L’unica limitazione sta nell’impossibilità di eseguire il source-level debug. Questo è possibile comunque sul codice sorgente che è ricompilabile e debuggable a livelle di sorgente. La ricompilazione è possibile per vari footprint di memoria.

Small footprint Linux
Linux è un sistema operativo molto attrattivo per gli sviluppatori tanto da richiedere una versione adatta alle piattaforme di computing embedded, specialmente quelle in cui la piattaforma di computing è quella alla base degli smartphone e dei sistemi palmari in generale. Un derivato del kernel Linux 2.0 pensato per I microcontrollori senza gestione della memoria è uClinux della Gnu. Il footprint non è particolarmente piccolo, ma adeguato ad essere utilizzato su piattaforme microcontrollore con limitate risorse di memoria. La versione ultima include il kernel Linux nelle release 2.0, 2.4 e 2.6.

Rtos per applicazioni sicure
I sistemi embedded medicali stanno diventando sempre più sofisticati oltre che compatti, per cui la disponibilità di Rtos a ridotto footprint e con capacità di eseguire in sicurezza i processi legati a funzionalità critiche legate alla salute, sono quelli cui gli sviluppatori stanno ponendo la loro attenzione. Molte applicazioni che richiedono un elevato livello di sicurezza sono state portate su piattaforme di computing embedded abbastanza spinto. Tali sistemi, oltre a richiedere un sistema operativo abbastanza compatto, richiedono contemporaneamente funzionalità di Rtos che garantiscono la sicurezza, come per esempio le applicazioni mediche.

SafeRtos – Sviluppato da Wittenstein, SafeRtos è un sistema operativo embedded real-time deterministico ideale per applicazioni critiche. È disponibile in forma pre-certificata relativamente a standard chiave come quello industriale e quello medicale. Questo sistema operativo embedded viene utilizzato in applicazioni medicali sia professionali che commerciali (pompe per il diabete, sistemi di infusione, sistemi di monitoraggio dell’ipertensione, ecc.) in cui la caratteristica di sicurezza rappresenta un notevole valore aggiunto dell’applicazione embedded. SafeRtos è implementabile su numerose piattaforme di computing embedded, da Arm CortexM3 a Texas Instruments MSP430, da Renesas H8/S ad Atmel AVR32 eMegaAVR.

OpenRtos - Un altro sistema operativo di piccole dimensioni è OpenRtos, basato sul noto FreeRtos. OpenRtos viene fornito con supporto e licenza. Questo Rtos viene fornito come codice sorgente (di elevata qualità) ed è a ridotto footprint (meno di 10 kByte di Rom, 200 byte di Ram su Cortex-M3).

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome