
Zephyr OS è un sistema operativo in tempo reale (RTOS) open source, progettato per supportare i dispositivi IoT con il minimo ingombro. Come molti sapranno, esiste già un RTOS largamente utilizzato il cui nome è FreeRTOS. Ci si potrebbe allora chiedere perché si dovrebbe perdere tempo ad imparare un altro sistema operativo. Questo articolo ha proprio l'obiettivo di rispondere a questa domanda, descrivendo le caratteristiche di Zephyr e guidando il lettore nella scelta più opportuna tra i due competitori a seconda dei casi d'uso.
Introduzione
I dispositivi IoT sono generalmente piccoli, quindi, a differenza del PC, non hanno spazio quasi infinito, ecco perché spesso si affidano a qualcosa chiamato sistema operativo in tempo reale (RTOS) invece che ad un sistema operativo tradizionale. Un RTOS esegue una singola attività in tempo reale anziché più attività lentamente come un sistema operativo tradizionale, ad esempio Linux, Windows o iOS. In realtà, oltre a RTOS esistono i dispositivi bare metal. Un dispositivo bare metal esegue una singola applicazione anziché un sistema operativo completo. Per comprendere la differenza tra questo ed un RTOS o un sistema operativo, pensiamo a come il computer può eseguire varie applicazioni diverse nel corso di una giornata. Ad esempio, Windows potrebbe essere il sistema operativo, ma è possibile eseguire varie applicazioni come Microsoft Word, un'applicazione di fotoritocco, ecc. Un sistema operativo può eseguire diverse di queste applicazioni contemporaneamente. Un RTOS passerà da un'applicazione all'altra per eseguirle una alla volta molto più velocemente. Al contrario, un dispositivo bare metal viene creato appositamente per un'applicazione. Molti dispositivi IoT, ad esempio gli orologi intelligenti, sono piccoli ma potrebbero dover eseguire diverse applicazioni nel corso della giornata, come applicazioni di monitoraggio della salute, applicazioni GPS e altro ancora. Per queste esigenze, un RTOS è l'opzione più comune.
Zephyr
Zephyr è un RTOS scalabile, il che lo rende adatto a un'ampia gamma di dispositivi con diversi vincoli di risorse. La scalabilità è ottenuta attraverso un'architettura modulare che consente agli sviluppatori di includere solo i componenti di cui hanno bisogno, riducendo al minimo l'ingombro del sistema. Essendo un sistema operativo in tempo reale (RTOS), Zephyr offre funzionalità come il multitasking preventivo, la comunicazione inter-thread e il supporto del clock in tempo reale. Il sistema operativo è inoltre dotato di tecnologie e protocolli di rete come TCP/IP, Bluetooth e IEEE 802.15.4 (utilizzato ad esempio in Zigbee), MQTT, NFS e LoRaWAN. Insieme alle sue capacità di rete, le funzionalità di gestione energetica integrate in Zephyr lo rendono adatto per applicazioni IoT ad alta efficienza energetica e dispositivi alimentati a batteria.
Una serie di librerie e middleware semplificano attività comuni, come protocolli di comunicazione, file system e driver di dispositivo. Zephyr è progettato anche per essere compatibile con le certificazioni di sicurezza come ISO 26262, rendendolo adatto ad applicazioni critiche per la sicurezza.
Zephyr non è Linux, ma si avvale di concetti, tecniche e strumenti utilizzati da Linux. Ad esempio, Kconfig viene utilizzato per configurare il sistema operativo e le proprietà, e le configurazioni dell'hardware vengono descritte utilizzando Device Tree Specific (DTS). Pertanto, gli sviluppatori Linux si sentiranno subito a loro agio durante la codifica per Zephyr. Ultimo ma non meno importante, Zephyr è rilasciato sotto la licenza open source Apache 2.0, che ne consente l'uso sia commerciale che non commerciale. La sua comunità di utenti fornisce supporto e documentazione.
Sicurezza nei dispositivi IoT
Nel regno dei dispositivi IoT, la sicurezza è una necessità assoluta. Immaginiamo una rete di termostati intelligenti installati in una città, che controllano i sistemi di riscaldamento e raffreddamento di innumerevoli edifici. Se questi dispositivi non dispongono di solide misure di sicurezza, potrebbero diventare i bersagli principali dei criminali informatici. Un attacco riuscito potrebbe provocare qualsiasi cosa, da un lieve disagio a gravi interruzioni.
È qui che il sistema operativo Zephyr brilla. Zephyr fornisce agli sviluppatori una serie di funzionalità di sicurezza progettate specificamente per i dispositivi IoT. Queste includono l'avvio sicuro (per garantire che solo il codice autenticato venga eseguito sul dispositivo), il supporto della crittografia hardware (per la protezione dei dati) e protocolli di sicurezza a livello di rete come DTLS e TLS (per salvaguardare la trasmissione dei dati). In sostanza, Zephyr fornisce gli strumenti necessari per costruire dispositivi IoT sicuri in grado di resistere agli attacchi e proteggere i dati sensibili.
Funzionalità di connettività di Zephyr
Zephyr supporta un'ampia gamma di protocolli di rete tra cui Bluetooth Low Energy (BLE), Wi-Fi, Ethernet e persino 6LoWPAN (un protocollo che consente ai dispositivi a basso consumo di connettersi direttamente a Internet). Ciò significa che è possibile progettare dispositivi IoT in grado di comunicare perfettamente con altri dispositivi e reti.
Ma approfondiamo un esempio particolare: BLE o Bluetooth Low Energy. Questa tecnologia è ideale per le applicazioni IoT, poiché consuma meno energia mantenendo una comunicazione solida. Immaginiamo una rete di sensori intelligenti in un grande magazzino che monitora i livelli di temperatura e umidità. Con il supporto BLE nel sistema operativo Zephyr, questi sensori possono inviare dati in tempo reale ad un sistema centrale senza scaricare le batterie troppo velocemente.
Costruire dispositivi con Zephyr
Per progettare dei dispositivi IoT operanti con Zephyr basta seguire quattro semplici passaggi.
Passaggio 1: configurare l'ambiente di sviluppo. Per prima cosa, occorre impostare un ambiente di sviluppo che supporti il sistema operativo Zephyr. A seconda del proprio sistema operativo, Linux, macOS o Windows, bisognerà installare lo Zephyr Software Development Kit (SDK), che include tutti gli strumenti e le librerie necessarie.
Passaggio 2: il codice sorgente. Successivamente, sarà necessario clonare il progetto Zephyr dal suo repository GitHub:
https://github.com/zephyrproject-rtos/zephyr
Passaggio 3: configurare il proprio dispositivo. Il dispositivo va configurato utilizzando Device Tree e file Kconfig. Questi file consentono di specificare i dettagli hardware e selezionare funzionalità software specifiche per il dispositivo IoT che si intende utilizzare. Per visualizzare i file DTS in un modo un pò più comodo, si può utilizzare il plugin DeviceTree per Visual Studio Code. Questo plugin fornisce l'evidenziazione della sintassi e il ripiegamento del codice, rendendo i file più facili da leggere (i file DTS utilizzano la sintassi in stile linguaggio C). La configurazione del progetto è gestita da Kconfig, il sistema di configurazione del kernel in fase di compilazione utilizzato anche da Linux. Esistono diversi modi per interagire con esso, e uno di questi è un'interfaccia utente grafica (GUI) che si può aprire attraverso un semplice comando Linux.
Passaggio 4: creazione e flashing. Infine. la compilazione della propria applicazione con tutte le sue dipendenze in un file binario che può essere flashato nella memoria del proprio dispositivo. Il flashing potrebbe richiedere uno strumento di programmazione esterno, come un adattatore J-Link o un altro programmatore (JTAG o SWD compatibile).
Nel caso in cui si volesse provare Zephyr anche senza la disponibilità di un dispositivo IoT, esso presenta un supporto integrato nell'emulatore QEMU (solo su Linux/macOS). Ciò consente di eseguire e testare virtualmente le applicazioni.
Risorse e strumenti per gli sviluppatori
Zephyr Project offre un set completo di risorse per gli sviluppatori, tra cui documentazione dettagliata, tutorial e un forum della community di supporto. La documentazione guida l'utente passo dopo passo su come assemblare il proprio dispositivo IoT utilizzando Zephyr OS. Per coloro che imparano facendo, sono disponibili tutorial che coprono tutto, dall'inizio con il primo progetto ad argomenti avanzati come l'integrazione dei sensori e la gestione del consumo energetico. Poi c'è il forum della community, un vivace mercato di idee in cui gli sviluppatori si scambiano approfondimenti, risolvono problemi e condividono i propri successi. Queste risorse forniscono una solida base per lavorare con Zephyr OS.
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2003 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
