Prendiamo l'esempio di un'unità di controllo elettronica (ECU) che utilizza un software statico embedded tradizionale. Il bootloader è un componente software utilizzato sia per avviare il software principale dell'ECU, incluso copiare il software nella RAM, sia per eseguire eventuali controlli sul software prima dell'avvio. Il bootloader è anche responsabile dell'aggiornamento del software, della ricezione, del controllo e della scrittura del software aggiornato in memoria, solitamente nella memoria flash. Pertanto, si usa spesso il termine Flash Bootloader.
Vengono utilizzati gli stessi bootloader sia in fase di sviluppo sia in fase di produzione?
Di solito, è possibile utilizzare lo stesso bootloader sia nello sviluppo dei veicoli e delle ECU associate sia nella normale produzione, con protezioni per assicurarsi che molte delle capacità di sviluppo o dei bootloader di ingegneria delle ECU di produzione siano disattivati. Durante lo sviluppo del veicolo, è spesso auspicabile rimuovere i meccanismi di sicurezza dei bootloader di produzione per consentire una rapida distribuzione del software di sviluppo.
Bootloader sicuro
Oggi, è sempre più richiesto che tutti i bootloader siano sicuri. Tuttavia, tradizionalmente il bootloader sicuro era una tipologia distinta che solitamente veniva implementata per proteggere le funzionalità soggette a problemi relativi alla sicurezza, alla protezione e talvolta alle prestazioni.
In genere, i bootloader controllano la memoria software della ECU all'avvio e il software ricevuto prima di un aggiornamento software e successivamente nella memoria.
I meccanismi comunemente includono:
- Autenticazione del software ricevuto e/o presente in memoria al momento dell'avvio, spesso utilizzando un hash del codice binario del software per verificare la correttezza generata da un processo di compilazione sicuro delle versioni software rilasciate ufficialmente.
- Autenticazione del mittente tramite seed e chiave, protezione dei dati sicuri all'interno della ECU tramite memoria protetta e mappe di memoria per definire aree accessibili/riscrivibili.
Doppio bootloader
Alcuni bootloader presentano un'implementazione in due parti, da cui il termine doppio bootloader. In questo caso, il bootloader primario non è aggiornabile, per garantire la sicurezza del bootloader Questo ha a che fare con l'avvio del modulo e con l'aggiornamento del bootloader secondario. Il bootloader secondario può essere aggiornato tramite un processo sicuro, permettendo di modificare il processo di aggiornamento del software, ad esempio con una mappa di memoria, e consentendo di bloccarle normalmente. Adesso questo tipo di bootloader è meno comune a causa dei nuovi metodi di protezione del processo di aggiornamento che prevedono l'uso di hardware sicuro integrato, ad esempio HSM (Hardware Secure Module).
È analogo al dual boot, in cui sono disponibili blocchi con doppio avvio o memorie complete, che consentono di eseguire un aggiornamento sulla versione inutilizzata mentre una versione è attiva. Questo richiede memoria aggiuntiva in ogni ECU che supporta questo metodo di aggiornamento.
Capital Embedded Bootloader
Capital Embedded Bootloader supporta aggiornamenti affidabili dell'ECU durante lo sviluppo, la produzione a bordo del veicolo e durante la vita del veicolo tramite strumenti di diagnostica collegati o metodologie over-the-air. Il protocollo UDS standardizzato ISO 14229 viene utilizzato su un'ampia gamma di bus di rete per veicoli comuni, Ethernet, CAN/CAN-FD, LIN, FlexRay, ed è anche possibile utilizzare altri metodi, come i protocolli di calibrazione ASAM. La sicurezza informatica è un aspetto chiave del flusso e delle funzionalità di aggiornamento software, che consente l'autenticazione software, e le opzioni di avvio sicuro sono parte della soluzione. Per soddisfare i requisiti specifici degli OEM (produttori di apparecchiature originali) e degli MCU, è disponibile un ampio supporto per una vasta gamma di progetti ECU.
Qual è la differenza tra pianificazione e programmazione?
L'aggiornamento OTA (over the air), o FOTA (firmware over the air), è un metodo per ottenere un nuovo software per un dispositivo integrato, ad esempio una ECU del settore automotive, in modalità remota, non tramite uno strumento di servizio collegato direttamente in un'officina. Ciò potrebbe richiedere alcune funzionalità di tester diagnostico integrate in una ECU di coordinamento e/o capacità di ripristino e test automatico nel bootloader stesso.