Narratore: In questa
lezione inizieremo a parlare di alcuni sistemi embedded.
Quando si parla di sistema incorporato,
si intende un sistema informatico progettato
per svolgere una funzione specifica e dedicata.
Spesso, quando si parla di un sistema embedded,
ci si riferisce a cose che
riguardano più il settore della produzione o dell'automazione.
Quindi, in un sistema di flebo medicale,
un microcontrollore potrebbe avere un solo compito.
Serve a misurare il volume di fluido che passa attraverso
la macchina e viene immesso nella flebo, in modo da poter dare al paziente
ciò di cui ha bisogno.
Potreste averne un altro per
un sistema di controllo di un impianto di trattamento delle acque.
E la sua responsabilità è quella di
assicurarsi che l'acqua scorra ad una certa velocità.
E apriranno o chiuderanno le valvole per assicurarsi
di mantenere la quantità di flusso attraverso il sistema.
Questa è l'idea di un sistema incorporato.
Può trattarsi di un dispositivo molto semplice o
di un dispositivo molto complesso
con un sistema operativo completo, come Linux o Android,
per l'esecuzione di questo tipo di sistemi.
Dipende.
Ora, in questa particolare lezione,
mi concentrerò maggiormente sui sistemi embedded specifici
che hanno una singola funzione
e hanno il loro sistema operativo o microprocessore
dedicato per svolgere tale funzione.
Ad esempio, a casa mia ho un contatore intelligente.
Quindi, se vado sul lato della mia casa, posso
guardare il contatore elettrico della
mia abitazione e mi dirà quanti chilowatt all'ora sto utilizzando e quanto
ho consumato nel tempo.
Ora, queste informazioni sono collegate a Internet, in modo che
la società elettrica non debba
mandare qualcuno a casa mia per leggere
il contatore una volta al mese.
Ora, invece, tutto avviene per via elettronica.
Lo fanno utilizzando modem cellulari
e si collegano attraverso la rete
cellulare alla loro sede centrale e ai
loro server per fornire i dati relativi
al consumo di energia.
Se guardate il contatore di casa
vostra, probabilmente avete qualcosa di molto simile.
Ora, questi tipi di sistemi embedded sono
considerati ambienti statici in cui non vengono
apportate o consentite modifiche frequenti.
Quando è stata l'ultima volta che avete aggiornato il software del
vostro contatore elettrico, ad esempio?
Probabilmente non l'avete mai fatto.
E probabilmente nemmeno l'azienda elettrica
lo fa di frequente.
Questa è l'idea di questi sistemi embedded.
Si tratta di un sistema molto spoglio,
realizzato per uno scopo e un solo scopo.
In questo modo, si contribuisce ad aumentare la sicurezza,
perché non c'è molto codice aggiuntivo.
Ma se il codice originale non è stato
realizzato in buono stato, diventa difficile eseguire
gli aggiornamenti, perché questi apparecchi
non sono costruiti per poter ricevere
aggiornamenti software frequenti.
Per questo motivo, i sistemi
embedded spesso dispongono di un supporto molto limitato per
l'identificazione e la correzione dei problemi di sicurezza.
Non si può chiamare la società elettrica e
dirle di venire a mettere in sicurezza il contatore.
Questo non fa parte di ciò che faranno per voi.
Lo faranno nel modo in cui vogliono,
perché è il loro dispositivo.
E spesso se avete un sistema incorporato all'interno della vostra
fabbrica o del vostro stabilimento, se siete in un'area di produzione,
avrete un supporto limitato da parte del produttore.
Si tratta quindi di un'area
in cui è preferibile inserire tutti
i dispositivi in una rete separata
e non collegarli a Internet in generale, che potrebbe rappresentare
una grande area di vulnerabilità.
Ora, quando si parla di sistemi
embedded, esiste un termine chiamato
PLC, che è un controllore logico programmabile.
Si tratta di un tipo di computer progettato per l'impiego
in ambienti industriali o esterni, in grado
di automatizzare i moderni sistemi meccanici.
Quando pensate a un PLC, pensate
a qualcosa di simile alla produzione
che apre o chiude una valvola per
far entrare più o meno acqua.
Questa è l'idea di un PLC.
È un controllore logico programmabile.
Ora, questi PLC funzionano con il firmware perché, ancora
una volta, si tratta di sistemi incorporati.
Quindi il firmware, che è un software su un chip, può essere patchato
e riprogrammato per risolvere le vulnerabilità
quando si verificano.
Ma anche in questo caso si tratta di un processo molto specifico
e il supporto del produttore è solitamente limitato.
Non è come per Microsoft,
che vi darà una patch ogni martedì.
Con questi PLC, è possibile ottenere una patch ogni sei
mesi, o un anno, o due anni.
Di solito, l'intervallo tra una patch e l'altra è molto lungo.
Ora, l'altra cosa di cui vogliamo parlare sono
alcuni dei sistemi operativi che utilizzano.
Esiste quindi una cosa nota come RTOS, ovvero
un sistema operativo in tempo reale.
Si tratta di un tipo di sistema operativo
che privilegia l'esecuzione deterministica delle operazioni.
E questo ci aiuterà a garantire una risposta coerente
per le attività critiche in termini di tempo.
Ora, pensate a questo.
Se state gestendo qualcosa che deve aprire o chiudere una valvola all'interno
di una centrale nucleare, potete avere la
possibilità di metterla offline in qualsiasi momento?
Probabilmente no, giusto?
Ecco, questa è l'idea di utilizzare un RTOS, un
sistema operativo in tempo reale.
Questo perché molti dei nostri sistemi
embedded non possono tollerare riavvii o crash
e devono avere tempi di risposta
prevedibili entro i millisecondi.
Quindi, se sto costruendo
qualcosa che deve far funzionare parti di un aeroplano,
che deve aiutare il mio autopilota a volare, e se l'autopilota
deve effettuare regolazioni sulle ali ogni
paio di millisecondi, beh, questo è qualcosa per cui vorremmo
usare un sistema operativo in tempo reale.
Non possiamo usare un sistema Windows standard per questo.
Non è abbastanza veloce o potente.
È soggetto a riavvii o a crash, a patch
di sicurezza e a tutte le altre cose.
Quindi RTOS, quando sentite questo termine, pensate
a questo tipo di sistema operativo che viene spesso
utilizzato con i sistemi embedded, soprattutto
nelle applicazioni critiche.
Un altro modo per farlo è utilizzare
il cosiddetto system-on-a-chip.
Si tratta di un'altra forma di sistemi incorporati.
In questo caso il nostro processore integra
le funzionalità della piattaforma di più controllori
logici in un unico chip.
Ora, questi system-on-a-chip possono essere molto efficienti dal punto di vista energetico
e quindi vengono spesso utilizzati con dispositivi più piccoli che
devono avere un sistema incorporato.
Quindi, se devo creare qualcosa
che abbia un sistema incorporato
e che sia molto piccolo e possa stare in tasca, di solito
uso qualcosa come un system-on-a-chip.
Se si utilizza qualcosa come
un Roomba o un aspirapolvere robot,
questi utilizzano una mentalità di tipo system-on-a-chip perché
cercano di inserire tutte le informazioni
in un unico chip, perché anche in questo caso
occupa meno spazio e quindi si può lasciare più spazio per le parti
funzionanti necessarie, come l'aspirapolvere.
Per system-on-a-chip si intende un tipo di circuito integrato
che contiene tutti i componenti di un sistema informatico
in un unico chip.
Questo include il processore, la memoria, lo storage, il processore
grafico e le periferiche, come i controller
USB, i circuiti di gestione dell'alimentazione e le radio
wireless per il wifi o il Bluetooth.
Un ottimo esempio di system-on-a-chip è il Raspberry Pi, che
contiene un computer completamente
contenuto in un singolo chip.
Ora, molti di questi system-on-a-chip
saranno integrati in altri dispositivi
come smart TV e set top box, come i dispositivi di streaming Amazon
Fire TV, Roku e Apple TV.
I progetti System-on-a-chip sono diventati molto popolari
grazie al loro basso consumo energetico,
alle prestazioni decenti e al fattore di forma ridotto.
Ad esempio, se si possiede un Roku o un Fire TV Stick, questi
hanno le dimensioni di una chiavetta USB.
Tuttavia, essi forniscono una funzionalità smart TV pienamente funzionante in
qualsiasi televisore esistente e possono
elaborare video in streaming attraverso
una connessione wireless utilizzando questi dispositivi.