Quando si inizia un nuovo progetto di prodotto integrato, una delle decisioni più importanti da prendere, oltre a scegliere il System on Module giusto, è trovare il sistema operativo più adatto. Proprio come le fondamenta di un edificio ne determinano la resilienza e la longevità, la scelta del sistema operativo può influenzare profondamente le prestazioni, la scalabilità e la facilità d’uso del prodotto finale. Con così tante opzioni disponibili, può essere defatigante valutare i pro e i contro di ciascuna.

In questo articolo riassumeremo le caratteristiche principali, i vantaggi e gli svantaggi di Yocto, Boot to Qt, Debian e Android come piattaforme software integrate nei progetti di «prodotti intelligenti». Il nostro obiettivo è dare indicazioni che possano guidare e aiutare a prendere una decisione informata nella scelta del sistema operativo giusto per un progetto integrato.

Nota: in genere emergono considerazioni aggiuntive rispetto a quelle elencate di seguito e anche gli sviluppatori avranno opinioni diverse. Quello che segue è un riepilogo di massima dei pro e dei contro di ciascuna opzione.

 

Yocto Project

Lo Yocto Project è un progetto di collaborazione open source che aiuta gli sviluppatori a creare sistemi personalizzati basati su Linux indipendentemente dall’architettura hardware.

Ecco alcuni punti di forza chiave di Yocto:

  • Il principale vantaggio di Yocto è la sua capacità di creare pacchetti dal codice sorgente utilizzando un «manifest». Con questo manifest è possibile ricreare facilmente un’immagine, anche se risalente a cinque anni fa, garantendo una replica fedele di versioni software specifiche.
  • La configurazione del software su tutti i dispositivi distribuiti è nota e riproducibile dal codice sorgente.
  • Poiché tutti i pacchetti sono compilati dalla sorgente, è possibile applicare tutte le patch necessarie per l’applicazione.
  • Le versioni dei pacchetti sono allineate su tutti i dispositivi distribuiti.
  • Gli aggiornamenti sono insulari e protetti dalla perdita di alimentazione quando si utilizzano framework come SWUpdate o Mender.
  • L’immagine finale può essere facilmente personalizzata con i soli pacchetti necessari per l’applicazione, consentendo un uso più efficiente di RAM, spazio d’archiviazione e CPU.

Tuttavia, Yocto presenta anche una serie di problemi.

  • Per chi è nuovo a Yocto, la curva di apprendimento potrebbe apparire ripida.
  • La creazione di un’immagine può richiedere molto tempo e risorse, poiché la maggior parte dei pacchetti viene compilata dalla sorgente.
  • È possibile creare e installare nuovi pacchetti su un dispositivo in esecuzione. Tuttavia, se il nuovo pacchetto richiede dipendenze aggiuntive, potrebbe essere necessario ricostruire e reinstallare l’intera immagine sul dispositivo di destinazione.

Nota: le immagini Yocto in genere non includono un sistema di gestione dei pacchetti come apt-get. Per installare nuovi pacchetti, è necessario aggiungerli alla ricetta dell’immagine e all’immagine ricostruita. Ciò garantisce che l’immagine del sistema operativo sia costantemente riproducibile da un file manifest, una scelta progettuale voluta mirata a stabilità e prevedibilità.

Ecco un esempio di release Yocto per DART-MX8M-PLUS basata sull’NXP i.MX 8M Plus processore.

 

 

DART-MX8M-PLUS System on Module (SoM)

DART-MX8M-PLUS System on Module

 

 

Boot to Qt

Boot to Qt (“Qt” pronunciato come “cute”, “carino” in inglese) è una soluzione offerta da The Qt Company. Radicato nel Yocto Project, è uno strato semplificato sopra Yocto stesso, ottimizzato per l’implementazione di applicazioni basate su Qt su dispositivi integrati.

  • Boot to Qt è basato su Yocto, quindi ripresenta la maggior parte dei pro e dei contro di Yocto (come accennato in precedenza).
  • Boot to Qt è fornito da Qt, quindi offre la migliore integrazione con le applicazioni basate su Qt.
  • Boot to Qt offre una versione di Qt più recente rispetto alla stessa versione di Yocto (ad esempio, paragonando Boot to Qt Hardknott con Yocto Hardknott).
  • Qt fornisce una documentazione chiara per la creazione di toolchain per lo sviluppo di applicazioni su computer Linux e Windows. Questo semplifica il lavoro agli sviluppatori abituati agli ambienti di sviluppo Windows.
    Nota: Boot to Qt supporta anche lo sviluppo di applicazioni su macOS utilizzando le toolchain basate su Docker di Qt. Per ulteriori informazioni, si veda: https://doc.qt.io/Boot2Qt/b2qt-requirements-mac.html

Nota: quando si sviluppa un prodotto commerciale con Boot to Qt come sistema operativo integrato è necessaria una licenza commerciale; prestare quindi attenzione ai termini di licenza di Qt.

Ecco un esempio di release Boot to Qt per DART-MX8M-PLUS basata su e NXP i.MX8M Plus processore.

 

Debian GNU/Linux

Debian GNU/Linux è una famosa distribuzione Linux nota per robustezza e gestione semplificata del software tramite l’Advanced Package Tool (APT). La sua reputazione di vecchia data la rende una scelta affidabile per molti sviluppatori su varie applicazioni.

  • L’Advanced Package Tool (APT) di Debian facilita la prototipazione rapida, permettendo agli sviluppatori di installare senza fatica una vasta gamma di pacchetti precompilati e le relative dipendenze. Come dimostrato dall’immagine Debian di Variscite, questo significa che i pacchetti possono essere installati sul dispositivo di destinazione proprio come si farebbe su un computer tradizionale.
  • Essendo una delle distribuzioni Linux più vecchie e popolari, Debian ha una comunità numerosa e attiva e un’ampia documentazione, il che può tornare utile per la risoluzione di problemi e l’acquisizione di informazioni qualificate.
  • È facile distribuire aggiornamenti minori tramite nuovi pacchetti Debian e la disponibilità di repository Debian assicura che i pacchetti software possano essere aggiornati senza fatica, mantenendo i sistemi sicuri e aggiornati.

Tuttavia, l’utilizzo di Debian GNU/Linux su dispositivi integrati presenta alcuni problemi.

  • A seconda del momento in cui vengono eseguiti gli aggiornamenti, le versioni dei pacchetti possono non corrispondere sui diversi dispositivi. Questo può complicare la riproduzione dei problemi sui sistemi sul campo.
  • Gli aggiornamenti non sono insulari. Pertanto, l’interruzione dell’alimentazione durante un aggiornamento può causare una configurazione errata.
  • La stabilità di Debian può essere un problema in determinati contesti o casi d’uso, soprattutto in quanto lo sviluppatore non compila i pacchetti dal codice sorgente. Ciò può rendere difficile la riproduzione di un’immagine in futuro.

Ecco un esempio di release Debian per DART-MX8M-PLUS.

 

Sistema operativo Android

Originariamente progettato per dispositivi mobili, Android ha esteso il suo raggio d’azione a varie piattaforme e dispositivi. Il suo uso diffuso e la familiarità degli sviluppatori lo rendono una scelta frequente per molti progetti oltre ai semplici telefoni e tablet.

  • Molti clienti sceglieranno Android perché i loro sviluppatori lo conoscono bene e hanno già un ecosistema basato su Android.
  • Il sistema operativo Android supporta nativamente Widevine, consentendo la decodifica di contenuti protetti da DRM come i video.
  • Il predominio di Android nel mercato dei telefoni e dei tablet ha creato un vasto bacino di risorse per sviluppatori e soluzioni trovate dalla community.

Tuttavia, il sistema operativo Android, così come gli altri, presenta alcuni problemi.

  • In termini di risorse di sistema come RAM, CPU e spazio di archiviazione, Android in genere ha requisiti più elevati rispetto agli altri sistemi operativi citati.
  • L’aggiornamento da una versione di Android a un’altra può essere complesso; a volte richiede il ripartizionamento dei dispositivi di archiviazione.

Ecco un esempio di release Android per DART-MX8M-PLUS.

 

Conclusioni

La scelta del sistema operativo giusto per un progetto integrato è fondamentale. Ogni opzione — Yocto, Boot to Qt, Debian o Android — presenta propri punti di forza e di debolezza. È essenziale allineare la scelta del sistema operativo alle esigenze specifiche e agli obiettivi a lungo termine del progetto. Sebbene nessuna soluzione sia adatta a tutti gli scenari, una decisione informata è il primo passo verso un prodotto di successo.