Firmware embedded: Sistema Operativo o Bare Metal?

In questo articolo cercheremo di chiarire le differenze tra queste due opzioni e di illustrarvi i vantaggi e gli svantaggi di ciascuna.

Un firmware bare metal è un software che non utilizza un sistema operativo, ma esegue direttamente il codice dell’applicazione sul microprocessore o sul microcontrollore. Un firmware bare metal ha il vantaggio di essere più semplice, veloce e prevedibile, ma anche più limitato nelle funzionalità, nella portabilità e nella scalabilità.

Un firmware con sistema operativo è un software che utilizza un sistema operativo embedded, ovvero un software che fornisce un’astrazione delle risorse hardware e offre servizi come la gestione dei processi, della memoria, della comunicazione e delle periferiche. Un firmware con sistema operativo ha il vantaggio di essere più flessibile, modulare e compatibile, ma anche più complesso, lento e soggetto a interferenze.

Firmware bare metal vs firmware embedded con Operating System

Naturalmente l’esecuzione di un sistema operativo comporta un overhead che altrimenti non si avrebbe e questo overhead può essere più o meno rilevante a seconda della configurazione del sistema operativo,  dalle caratteristiche dell’hardware e dai servizi che si intende offrire.

La scelta tra firmware bare metal o firmware con sistema operativo dipende da diversi fattori, tra cui:

  • Le prestazioni richieste: se il vostro progetto richiede una bassa latenza, una elevata affidabilità e una risposta deterministica agli eventi, potreste optare per un firmware bare metal. Se invece il vostro progetto richiede una maggiore flessibilità, una elevata interattività e una gestione complessa delle risorse, potreste optare per un firmware con sistema operativo.
  • Le risorse disponibili: se il vostro progetto dispone di risorse limitate in termini di memoria, potenza di calcolo e consumo energetico, potreste optare per un firmware bare metal. Se invece il vostro progetto dispone di maggiori risorse o può permettersi di sacrificarne alcune in cambio di maggiori funzionalità, potreste optare per un firmware con sistema operativo.
  • La portabilità e la scalabilità: se il vostro progetto è pensato per essere eseguito su una sola piattaforma hardware e non prevede modifiche o aggiornamenti futuri, potreste optare per un firmware bare metal. Se invece il vostro progetto è pensato per essere eseguito su diverse piattaforme hardware o prevede modifiche o aggiornamenti futuri, potreste optare per un firmware con sistema operativo.
  • Alcune applicazioni in cui si preferiscono sistemi bare metal sono:
  • Sistemi di controllo industriale, dove è necessario garantire una elevata precisione, affidabilità e sicurezza nel controllo dei processi produttivi;
  • Sistemi di misura e acquisizione dati, per i quali è fondamentale acquisire e processare dati provenienti da sensori o strumenti di misura con una elevata frequenza e risoluzione;
  • Sistemi di comunicazione wireless nei casi in cui è necessario implementare algoritmi personalizzati e ottimizzati per il microcontrollore e ridurre al minimo l’overhead o la vulnerabilità dovuti al sistema operativo.

I casi tipici in cui si preferisce invece adottare sistemi operativi possono essere:

  • Sistemi multimediali che devono gestire flussi di dati audio e video con una elevata interattività;
  • Sistemi intelligenti che devono eseguire algoritmi di intelligenza artificiale, apprendimento automatico o visione artificiale con una elevata complessità e flessibilità;
  • Sistemi mobili, tipici casi in cui è necessario gestire diverse funzionalità e applicazioni con una elevata interattività e connettività.

Esistono diversi sistemi operativi per progetti embedded, che si differenziano per caratteristiche, prestazioni e licenze. Alcuni sono gratuiti e open source, altri sono a pagamento e proprietari. Ecco alcuni esempi:

  • FreeRTOS: è un sistema operativo in tempo reale (RTOS) gratuito e open source, basato su un kernel minimale che offre solo i servizi essenziali di multitasking e sincronizzazione. È adatto per sistemi con risorse limitate che richiedono una bassa latenza e una elevata affidabilità.
  • Linux Embedded: è una versione ridotta e personalizzabile del sistema operativo Linux, adattata per i sistemi embedded. È gratuito e open source, basato su un kernel monolitico che offre una vasta gamma di servizi e funzionalità. È adatto per sistemi con maggiori risorse che richiedono una maggiore flessibilità e compatibilità.
  • Android: (ebbene sì!) è un sistema operativo basato su Linux Embedded, sviluppato da Google per i dispositivi mobili. È gratuito e open source, basato su un kernel monolitico modificato che offre una interfaccia grafica utente (GUI) e una piattaforma di sviluppo basata sulla macchina virtuale Java. È adatto per sistemi con elevate risorse che richiedono una elevata interattività e connettività.
  • VxWorks: è un sistema operativo in tempo reale (RTOS) a pagamento e proprietario, sviluppato da Wind River Systems per i sistemi embedded critici. È basato su un kernel modulare che offre servizi avanzati di gestione dei processi, della memoria, della comunicazione e delle periferiche. È adatto per sistemi con elevate esigenze di sicurezza, robustezza e determinismo.
  • QNX: è un sistema operativo in tempo reale (RTOS) a pagamento e proprietario, sviluppato da BlackBerry per i sistemi embedded complessi. È basato su un kernel microkernel che offre servizi distribuiti e trasparenti di gestione dei processi, della memoria, della comunicazione e delle periferiche. È adatto per sistemi con elevate esigenze di scalabilità, modularità e fault-tolerance.
  • ChibiOS. Si tratta di un sistema operativo in tempo reale (RTOS) completo e gratuito. È disponibile sotto licenze open source (GPL3 o Apache 2.0) o commerciali. ChibiOS è progettato per essere compatto e veloce, supportando diverse architetture e offrendo vari servizi tra cui il multitasking preemptive, pile TCP/IP LwIP e uIP, la libreria per il file system FatFs e la piattaforma di intelligenza artificiale Edge Impulse.

 In questo articolo abbiamo visto cos’è un firmware bare metal e un firmware con sistema operativo, quali sono le differenze tra i due approcci, quali sono i principali sistemi operativi per progetti embedded disponibili sul mercato, quali sono i vantaggi e gli svantaggi di ciascuna soluzione, quali sono le applicazioni più adatte per l’una o l’altra soluzione.
Se volete approfondire ulteriormente l’argomento o se avete bisogno di consulenza o assistenza per i vostri progetti embedded, vi invitiamo a visitare la nostra pagine, dove troverete informazioni, risorse e contatti utili per ricevere consulenza o anche solo semplici consigli.