Home
Accesso / Registrazione
 di 

Introduzione al ChibiOS/RT

chibios

ChibiOS è uno dei più popolari sistemi operativi realtime (RTOS) del mondo open source. Vanta una crescente community di utenti ed è stato utilizzato con successo in molti prodotti commerciali dove velocità di esecuzione e compattezza del codice sono requisiti fondamentali. Il nome, non troppo “serio” per volere dell’autore Giovanni Di Sirio, è di origine giapponese e significa “piccolo bambino”. ChibiOS significa dunque “piccolo sistema operativo”. Allo stato attuale questo RTOS non è proprio un ragazzino, poiché è basato su un progetto nato nel 1992 e diventato open nel 2007. Al contrario di molti RTOS open source, ChibiOS non si limita a fornire solo scheduler, task, code e semafori, ma si presenta come un sistema operativo completo. E’ quindi un ottimo prodotto per applicazioni Automotive, Robot, Energy Management e DIY.

Board supportate

Nella distribuzione troviamo molti porting. Le architetture attualmente supportate sono: ARM Cortex M0, M3 e M4, ARM7/9, MSP430, Power Architecture, STM8, MegaAVR.

Tra le board ci sono: STMicroelectronics, Arduino, Embedded Artists LPCXpresso, Maple Mini, Olimex e Raisonance REva. Io ho scelto di utilizzare per i prossimi articoli la STM32F4 Discovery, perché è una board completa, sufficientemente potente per molti tipi di progetti e soprattutto economica!

Nota interessante è la presenza di un porting su PC, utile per simulare e debuggare su PC anche senza una vera board. Come download a parte è disponibile ChibiStudio, un IDE basato su Eclipse, che permette lo sviluppo completo ed il debugging dell’applicazione embedded. Fornisce anche funzionalità per il caricamento del binario del progetto sulla board.

OS

I moduli principali di ChibiOS sono il Kernel e l’HAL. I moduli sono composti da una parte di codice portabile e da un’altra parte strettamente dipendente dall’hardware. Inoltre è possibile aggiungere, rimuovere e configurare funzionalità dei moduli in base alle esigenze dell’applicazione da sviluppare.

Diamo un’occhiata veloce a Kernel e HAL, perchè questi argomenti saranno approfonditi nei prossimi articoli con il dettaglio che meritano.

Kernel

La parte del sistema operativo che si occupa di gestire in maniera sicura l’accesso alle risorse hardware è appunto il Kernel. ChibiOS è completamente statico, cioè non c’è memoria allocata o rilasciata. Sono disponibili alcuni allocatori, ma sono sottosistemi opzionali che non fanno parte del “core”. Questa è una delle peculiarità di design con cui stato progettato ChibiOS.

Un’altra importante caratteristica è la mancanza di condizioni di errore per le funzioni. Esse sono, infatti, progettate in modo da non fallire se vengono passati i parametri corretti.

Perchè il Kernel dovrebbe perdere tempo nel controllare se i parametri passati alle funzioni sono corretti? Questo è compito di chi utilizza il Kernel! Questo non vuol dire che non sia possibile fare dei controlli in fase di sviluppo. E’ infatti possibile attivare delle direttive di compilazione per assicurasi che si stia utilizzando le funzioni del Kernel in modo corretto. Questa direttiva può essere “spenta” quando il software è pronto per andare in modalità “Release”.

In generale le API sono pensate per essere semplici e fare quello che viene descritto senza troppi parametri da passare. Il Kernel ha dimensioni veramente compatte: per esempio, sulla STM32F4, utilizzando il compilatore GCC 4.6.8, la sua dimesione è di 6172 bytes.

Servizi Base

  • Gestione di sistema (inizializzazione, lock , gestione interruzioni, power management, gestione anomalie)
  • Timer
  • Scheduler
  • Thread

Sincronizzazione

  • Semafori
  • Mutex
  • Condition Variables (estensione Mutex)
  • Eventi
  • Messaggi
  • Mailbox

Gestione della memoria

  • core allocator
  • heap
  • memory pool
  • Thread dinamici

Stream e I/O

  • stream di dati
  • canali di I/O
  • code per I/O

HAL (Hardware Abstraction Layer)

Questa parte del sistema operativo si occupa di fornire le interfacce con le quali utilizzare le risorse hardware indipendentemente dalla piattaforma(dispositivo) utilizzata(o). La nostra applicazione non accederà direttamente ai registri del dispositivo usato ma lo farà per mezzo di HAL.

Cosa troviamo nell'HAL di CHIBIOS? Driver! I driver sono di tre tipi: normali, complessi e platform.

Un driver normale ha una parte chiamata “High Level Driver” HLD ed una detta “Low Level Driver” LLD.

La parte HLD è quella portabile, indipendente dalla piattaforma utilizzata, mentre la LLD è implementata in un sorgente dedicato al dispositivo che andremo ad usare.

Un driver complesso fornisce delle funzionalità complesse, utilizzando altri driver e non interagendo con l’hardware. Per esempio un driver per un protocollo su seriale può essere implementato con un driver complesso.

I driver Platform sono dedicati ad intere famiglie di MCU. Se è possibile utilizzare lo stesso codice per un driver che funziona su più dispositivi della stessa famiglia, allora questo driver sarà di tipo platform.

ChibiOS fornisce molti driver già pronti per essere utilizzati :

CAN Controller Area Network
EXT un generico EXT driver
GPT General Purpose Timer, un timer può essere programmato per chiamare una funzione dopo un tempo specificato o a intervalli regolari
I2C Inter-Integrated Circuit
ICU Input Capture Unit driver
MAC Media Access Control driver per controller Ethernet
MMC su SPI driver portabile MMC/SD che utilizza SPI per lo strato fisico
PAL questo driver fornisce un’iterfaccia astratta per utilizzare l’I/O digitale
PWM Pulse Width Modulation driver
RTC driver che fornisce un’interfaccia per Real Time Clock
SDC Secure Digital Card driver
Seriale driver Seriale full duplex
Seriale su USB driver per Seriale su USB Communication Device Class (CDC)
SPI Serial Peripheral Interface driver
UART generico driver UART
USB generico driver USB

Board

Questo componente fornisce le funzioni per inizializzare la board, HAL ed il Kernel, prima di eseguire l’applicazione. Configurando ChibiOS in modo opportuno e’ possibile anche definire un’inizializzazione custom, dove per esempio potremmo settare le periferiche che serviranno al nostro progetto secondo i nostri scopi.

Componenti Esterni

Nella distribuzione troviamo: uIP, stack TCP/IP lwIP, altro stack TCP/IP FatFs, modulo per filesystem FAT I componenti esterni e le librerie non vengono supportate direttamente da ChibiOS, ma vengono fornite piccole patch per un’integrazione ottimale. Nella distribuzione ci sono anche molte demo che utilizzano queste librerie, risulterà molto semplice prendere spunto per sviluppare la propria applicazione.

Varie

Sebbene ChibiOS sia interamente sviluppato in C (con qualche parte in assembly per il codice dipendente dall’hardware), è disponibile un wrapper in C++, per chi voglia sviluppare in tale linguaggio.

Un altro componente utilissimo è la command shell. Si tratta di shell accessibile via seriale (su USB) dalla quale è possibile eseguire comandi direttamente sulla board. La troviamo nelle demo ed un utilizzo veramente utile è quello per i test.

ChibiOS ha un mini framework per sviluppare test suite, tra l’altro sono disponibili le test suite di tutto l’OS. Dalla command shell possiamo lanciare i test di tutte le funzionalità della board ed eventualmente aggiungerne di altri. In questo modo avremo avremo a disposizione anche una misura sui tempi di esecuzione.

ChibiOS offre davvero tanto e nei prossimi articoli approfondiremo tutti gli aspetti teorici e pratici per scrivere le nostre applicazioni.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Piero Boccadoro

Abbiamo scelto di dare questo

Abbiamo scelto di dare questo giusto spazio a ChiBiOS perchè lo riteniamo di grande interesse ed importanza.
Io sono stato ad un workshop tempo fa a Firenze in cui veniva presentato (lo presentava proprio Giovanni Di Sirio) e anche se non son potuto rimanere per tutta la sessione pratica, avrei davvero voluto.
Sono sicuro che per tutti i lettori del blog questo articolo, ma soprattutto quelli che seguiranno saranno una bella ed interessante lettura :)

Per me è l'occasione di leggere ciò che non ho potuto ascoltare e provare con le mie mani :)

ritratto di Piero Boccadoro

Spiego anche brevemente ai

Spiego anche brevemente ai lettori che vogliamo che ChiBiOS abbia tanto spazio su queste pagine. Vogliamo che questo blog, e gli articoli dedicati, possano offrire un ampliamento della community.
Vogliamo poter diventare hub e repository di esperienze vecchie e nuove :)

Perchè anche questo è Open Source.

ritratto di alex272

Argomento interessante

Bella scelta di argomento, mi tornerà molto utile in futuro, seguirò i prossimi articoli con molto interesse.
Grazie
Ciao

ritratto di Piero Boccadoro

Infatti sì! :DHo pensato

Infatti sì! :D
Ho pensato esattamente proprio a te :)

Anche perchè proprio a quel seminario di cui parlavo indovina un po' che scheda abbiamo utilizzato?? :)

ritratto di alex272

mmmmm....

Ah !!!! .... chissá come mai hai pensato a me.... :):):):) Sará una coincidenza, perché appena visto l'articolo io ho pensato a te !!! :):):):) Boh.... forse telepatia... :):):):)

Ciao

ritratto di Rocco.Faldone

:)

Salve a tutti, uso ChibiOS\RT oramai da quasi un anno e devo dire che è uno strumento molto potente con sui sono riuscito a realizzare cose che prima non credevo possibili. Complimenti per l'articolo.

ritratto di Giorgio B.

Che vuol dire che ci hai

Che vuol dire che ci hai realizzato cose? Che cose?
Non puoi spiegarti un pò meglio?

ritratto di Rocco.Faldone

http://www.youtube.com/user/M

http://www.youtube.com/user/Maxwell2TB,

un sistema AHRS, un sistema per la gestione di rgb led striped a 12 canali, ho collaborato la progetto di un amico per la realizzazione di un cubo led 8x8x8 e attualmente sto testando la comunicazione infrarossa e sto bazzicando con il ttf HY32D cercando di tirare su un hal per la gestione di differenti dispositivi. Robetta, ma che dà piccole grandi soddisfazioni.

ritratto di Giorgio B.

Forse avevo sottovalutato una

Forse avevo sottovalutato una cosa dell'introduzione. avete scritto che è diventato open 5 anni dopo la nascita. perchè, primacos'era? e perchè questa scelta?

ritratto di Umberto Sorbo

ChibiOS nasce da versioni di

ChibiOS nasce da versioni di un progetto già esistente ( si parla di 15 anni fa), che aveva molte meno caratteristiche dell'attuale. Secondo l'autore quando ha deciso di far nascere il progetto non c'erano molti RTOS free.

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Ultimi Commenti