Gestione aggiornamenti software su sistemi embedded
I sistemi embedded diventano sempre più complessi e il loro software ne riflette la loro complessità. Nuove funzionalità e correzione di bug richiedono che il software su un sistema embedded possa essere aggiornato in modo assolutamente affidabile.
Su un sistema basato su Linux, possiamo trovare nella maggior parte dei casi i seguenti elementi:
- il boot loader
- il kernel e il DT (Device Tree)
- il root file system
- altri file systems, montati successivamente
- dai utente, in formato raw o su file system
- software applicativo specifico. Per esempio il firmware che viene caricato su micro-controllori connessi, e così via.
In generale, nella maggior parte dei casi è necessario aggiornare il kernel e il file system root, preservando i dati dell’utente, ma i casi variano.
Solo in alcuni casi è necessario aggiornare anche il boot loader. In effetti, l’aggiornamento del boot loader è abbastanza rischioso, perché un errore nell’aggiornamento rompe la scheda. In alcuni casi è possibile ripristinare una scheda rotta, ma nella maggior parte dei casi questo non viene lasciato all’utente finale e il sistema deve essere rispedito al produttore.
Aggiornamento Sicuro del firmware
Fondamentalmente, gli aggiornamenti del firmware delle immagini possono spaziare dall’intero sistema (cioè il kernel, la root e le partizioni dell’utente) a solo alcuni di essi.
Ci sono due tipi di aggiornamenti dell’immagine possibili: simmetrici e asimmetrici.
- Simmetrici: gli aggiornamenti simmetrici richiedono l’aggiornamento di una doppia copia delle immagini della partizione, in modo che sia possibile aggiornarne una mentre l’altra è in esecuzione. Questo in genere richiede due partizioni boot / kernel, due filesystem di root e due partizioni utente. Il bootloader quindi tiene traccia delle partizioni da utilizzare per un determinato avvio. Gli aggiornamenti simmetrici hanno tempi di inattività minimi, in genere solo il tempo di riavvio e consentono l’annullamento dell’aggiornamento.
- Asimmetrici: gli aggiornamenti asimmetrici utilizzano un sistema operativo di ripristino che di solito viene eseguito dalla memoria, con un kernel Linux e un’immagine di initramfs. Ciò riduce il numero di partizioni necessarie, poiché la modalità di ripristino è disponibile in una sola partizione aggiuntiva e può aggiornare le altre. Se l’aggiornamento fallisce, è possibile riprovare il recupero. Gli aggiornamenti asimmetrici hanno tempi di fermo più lunghi durante l’aggiornamento e non consentono l’annullamento dell’utente.
Aggiornamento ‘Over The Air’
Un processo di aggiornamento del firmware deve essere in grado di effettuare l’aggiornamento sia da fonti locali (ad esempio, flash, USB, μSD o UART), sia da remoto in quello che è comunemente noto come aggiornamento OTA (over-the-air). Gli aggiornamenti OTA utilizzano un server remoto per inviare aggiornamenti a un client in esecuzione sul dispositivo.
La programmazione Over-the-Air (OTA) si riferisce a vari metodi di distribuzione di nuovo software, impostazioni di configurazione e persino l’aggiornamento delle chiavi di crittografia a dispositivi come telefoni cellulari, set-top box o apparecchiature di comunicazione vocale sicure (radio a 2 vie crittografate).
Una caratteristica importante di OTA è che una postazione centrale può inviare un aggiornamento a tutti gli utenti, che non sono in grado di rifiutare, sconfiggere o modificare quell’aggiornamento e che l’aggiornamento si applica immediatamente a tutti gli utenti del canale.
Un utente potrebbe “rifiutare” l’OTA, ma il “channel manager” potrebbe anche “kick-off” il canale automaticamente.
Accelera il tuo time to market
Koan può aiutarti a implementare meccanismi di aggiornamento firmware sicuri e opzioni open source per dispositivi Linux embedded.
Contattaci oggi per trovare una soluzione software in grado di accelerare il tuo time-to-market e di concentrarti sullo sviluppo delle tue applicazioni.