ARM Mbed OS è un sistema operativo open source per schede Cortex-M Internet of Things (IoT): a basso consumo, vincolato e connesso.
Mbed OS fornisce un livello di astrazione per i microcontrollori su cui viene eseguito, in modo che gli sviluppatori possano scrivere applicazioni C/C++ che vengono eseguite su qualsiasi scheda abilitata a Mbed.
Ovviamente il codice sorgente del sistema operativo Mbed è disponibile sia su GitHub che sulla relativa pagina di rilascio.
Ma cos’è Mbed?
Mbed OS fornisce un’API ben definita per sviluppare applicazioni C++, oltre a strumenti gratuiti e migliaia di esempi di codice, librerie e driver per componenti comuni. Con uno stack di sicurezza integrato, componenti principali come l’archiviazione e diverse opzioni di connettività, puoi concentrarti sul codice.
Profili e RTOS
Il profilo completo di Mbed OS è un RTOS (Real-Time Operating System). Esso include un RTX e tutte le API RTOS, quindi supporta l’esecuzione di software deterministica, multithread e in tempo reale. Le primitive RTOS sono sempre disponibili, consentendo a driver e applicazioni di fare affidamento su thread, semafori, mutex e altre funzionalità RTOS. Il profilo completo include anche tutte le API per impostazione predefinita, sebbene sia possibile rimuovere quelle inutilizzate in fase di compilazione ottimizzandone l’esecuzione.
Il profilo bare metal, invece, non include un RTX e quindi non è un RTOS: è progettato per applicazioni che non richiedono una gestione complessa dei thread. È progettato anche per dispositivi vincolati e quindi si concentra sulla riduzione al minimo delle dimensioni dell’applicazione finale: per impostazione predefinita, include solo il set di API più piccolo possibile, a cui è possibile aggiungere manualmente le API richieste dall’applicazione. Il profilo bare metal può utilizzare le piccole librerie C (che non sono thread-safe) per ridurre ulteriormente le dimensioni dell’applicazione.
Architettura
Questa è l’architettura di base di una scheda Mbed che esegue il sistema operativo Mbed:
Fondamenti del sistema operativo Mbed
Mbed OS utilizza un livello di astrazione hardware (HAL) per supportare le parti più comuni di un microcontrollore, come i timer. Questa base facilita la scrittura di applicazioni su un set comune di API (Application Programming Interface); il dispositivo include automaticamente le librerie necessarie e il supporto dei driver per le periferiche MCU standard, come I2C, Bus e SPI.
La struttura del sistema operativo Mbed consente di abbinare applicazioni e sistemi di archiviazione. In altre parole, dove le opzioni di archiviazione a livello di blocco variano e dipendono dall’applicazione, puoi scegliere il file system che meglio si adatta al tuo dispositivo IoT. Il file system FAT, supportato da una scheda SD, offre compatibilità con altri sistemi operativi, come Windows, Mac OS o Linux. Quando l’elevata affidabilità e il ripristino da un’interruzione di corrente sono importanti, ha senso utilizzare il file system integrato, supportato da un chip flash (Q)SPI NOR.
Infine, Mbed OS implementa per te il livello di retargeting e l’integrazione del processo di avvio di ciascuna toolchain supportata, quindi lo sviluppo delle applicazioni è simile allo sviluppo in C o C++ per qualsiasi altro sistema operativo.
Connettività
Arm collabora con i suoi partner per abilitare Bluetooth Low Energy, NFC, RFID, LoRa, 6LoWPAN-ND, Wi-SUN, Ethernet, Wi-Fi, IoT cellulare e mobile (LPWA) su dispositivi e architetture di sistema che eseguono Mbed OS. Mbed OS offre un nucleo stabile delle tecnologie di connettività esistenti. Allo stesso tempo, ne aggiunge di moderne nelle versioni trimestrali delle funzionalità, tenendoti informato sulle tendenze del settore in modo da poter passare a soluzioni nuove e innovative che generano valore aziendale.
Gli stack di rete e connettività sono sufficientemente flessibili da soddisfare le esigenze dei progetti di dispositivi IoT più esigenti, che si tratti di una combinazione di un microcontrollore a chip singolo e di una radio o di più chip collegati su bus seriali.
Sicurezza
La piattaforma Pelion IoT ha una sicurezza integrata a tutti i livelli, sottolineando sia la protezione contro le violazioni che la mitigazione delle loro conseguenze. Oltre a servizi cloud rafforzati, stack di comunicazione robusti e aggiornamenti firmware sicuri, Mbed offre elementi costitutivi incorporati specifici per la sicurezza: Arm Mbed TLSanda Secure Partition Manager (SPM) che soddisfa le migliori pratiche del settore come parte dell’architettura di sicurezza della piattaforma di Arm. Mbed TLS protegge i canali di comunicazione tra un dispositivo e un gateway o un server, e l’uso di un gestore di partizioni sicuro e domini di sicurezza isolati per servizi di sistema affidabili riduce la superficie di attacco. Nel complesso, viene fornito un modello di sicurezza unico da chip a cloud, basandosi sulle capacità di basso livello fornite dai partner di silicio dell’ecosistema Arm per proteggere i dati e l’identità dei dispositivi connessi al cloud.
Hardware
Arm, i suoi partner e la comunità di sviluppatori Arm Mbed lavorano insieme per sviluppare il progetto Mbed OS. Questo significa che il sistema operativo Mbed include driver per molti hardware diversi.
In linea di massima, l’hardware utilizzato sui sistemi Mbed è di tre tipi:
- Moduli: includono un microcontrollore, connettività incentrata sull’IoT e memoria integrata richiesta. Sono ideali per la progettazione di prodotti IoT, dalla prototipazione alla produzione di massa. I moduli abilitati Mbed hanno il pieno supporto per il sistema operativo Mbed con tutti i driver di connettività disponibili.
- Schede: le schede di sviluppo sono un modo economico per iniziare a sviluppare con Mbed OS e altri componenti.
- Componenti: il Database dei componenti ospita librerie riutilizzabili per diversi servizi hardware, middleware e IoT utilizzabili con microcontrollori ARM. Questi componenti possono essere utilizzati come elementi costitutivi per lo sviluppo rapido di prototipi e prodotti.
Tools
La suite di prodotti Mbed include gli strumenti necessari per lavorare con il sistema operativo Mbed, qualunque sia il livello di abilità posseduto.
Per la maggior parte degli utenti su Windows, macOS e Linux, viene consigliato Mbed Studio, che è il classico IDE desktop. Mbed Studio include le dipendenze e gli strumenti necessari per lavorare con il sistema operativo Mbed, incluso l’accesso a Arm Compiler 6 per creare il codice e pyOCD per eseguirne il debug. Per gli sviluppatori esperti, vengono anche inclusi gli strumenti della riga di comando di Mbed (come Mbed CLI).
Se invece si preferisce lavorare online, esiste il compilatore Mbed Online, che consente di scrivere e creare applicazioni utilizzando un browser Web senza alcuna configurazione aggiuntiva.
È anche possibile esportare il proprio lavoro dagli strumenti Mbed ad altri IDE.
Ciascuno strumento di compilazione viene fornito con la sua completa e gratuita documentazione.
Al termine del ciclo di sviluppo, è infine possibile utilizzare gli strumenti di convalida del sistema operativo Mbed, Greentea e utest, per testare il progetto.
Conclusioni
Il sistema Mbed appare professionale e flessibile, e si adatta ad un elevatissimo numero di schede e moduli hardware. Per tale ragione Moreware ha scelto di dedicare una serie di articoli a questo tipo di piattaforma Open.