Che cosa sono i sistemi embedded
Un sistema embedded è definito come un sistema elettronico basato su microprocessore o microcontrollore, progettato per svolgere specifiche funzioni sia come sistema indipendente (Stand-Alone) che come parte di un sistema più ampio. La sua complessità varia notevolmente a seconda della funzione per la quale è stato progettato. Tali sistemi sono in genere di dimensioni limitate, a basso consumo energetico e basso costo di produzione.
Hardware nei sistemi embedded:
A livello hardware un sistema embedded è centrato su un’unità di elaborazione centrale (CPU), che funge da controller principale del sistema. Una CPU può essere integrata come segue:
- Un microprocessore (µP) con la CPU di potenza sufficiente per eseguire le pertinenti attività di elaborazione, ed altre periferiche come memorie dati e di programma, porte I/O e interfacce di comunicazione devono essere integrate al fine di creare insieme al microprocessore un unico sistema funzionale. Tendenzialmente il tutto è racchiuso in un modulo SoM (System on Module).
- Un microcontrollore (MCU), invece è un sistema autonomo che include la CPU, memorie dati e di programma (RAM, Flash) e le varie periferiche (porte di comunicazione seriale), il tutto racchiuso in un unico componente SoC (System on chip).
Altri componenti hardware embedded essenziali includono:
-
- Alimentazione
- Varie porte di input/output (I/O).
- Bus di comunicazione per il trasferimento dati tra componenti hardware.
- Sensori per il rilevamento di segnali elettrici analogici.
- ADC (convertitori da analogico a digitale) che convertono i segnali elettrici analogici in segnali digitali in modo da essere processati dalla CPU.
- DAC (convertitori da digitale ad analogico) convertono i segnali digitali dal processore in segnali elettrici.
- Driver di uscita
- Display
- Sistemi di comunicazione radio (WiFi, BLE, etc.).
Tipi di sistemi embedded:
In base alle prestazioni e ai requisiti funzionali, i sistemi embedded sono classificati in quattro tipi.
- Sistemi embedded in tempo reale: sono sistemi che interagiscono con il mondo fisico esterno in real-time (tempo reale), devono quindi essere in grado di gestire gli eventi fisici nei tempi in cui si manifestano. Ciò implica che tali sistemi embedded devono essere progettati in modo da rispettare questa condizione, avere prestazioni hardware e/o software adeguate a gestire il tempo di esecuzione dei processi entro intervalli certi.
- Sistemi embedded Stand-Alone: i sistemi embedded stand-alone (autonomi) possono funzionare in modo indipendente, sono progettati in modo che un qualsiasi comando ricevuto (l’input) venga elaborato e prodotto l’output desiderato in modo del tutto autonomo, cioè senza fare affidamento su un sistema secondario (host).
- Sistemi embedded connessi alla rete: tali sistemi si basano su una connessione di rete per eseguire e completare le funzionalità richieste.
- Sistemi embedded mobili: sono dispositivi di piccole dimensioni, ad alte prestazioni, economici, affidabili e capaci di funzionare a lungo in autonomia anche in assenza di fonti di alimentazione esterne, il tutto mentre rilevano e influenzano l’ambiente circostante.
I sistemi embedded sono inoltre classificati in base alle prestazioni del loro microcontrollore/microprocessore.
- Sistemi embedded su piccola scala: sono in genere progettati e realizzati con un microcontrollore a 8 bit. Sono adatti per quelle funzionalità dove è richiesta una bassa capacità di calcolo e sono caratterizzati dal loro basso costo.
- Sistemi embedded su scala media: utilizzano un singolo µP o MCU a 16 o 32 bit, o più micro collegati tra loro. Implementano più funzionalità, richiedendo un elevata capacità di calcolo.
- Sistemi embedded avanzati: tali sistemi embedded utilizzano spesso sofisticati algoritmi, con conseguente complessità software e hardware. Richiedono una potenza di calcolo molto elevata ed elevate capacità di archiviazione dati. Sono destinati ad applicazioni nelle quali si predilige l’efficienza e le prestazioni del prodotto piuttosto che alla sua economicità.
Progettazione di sistemi embedded
La progettazione di sistemi embedded consente di sviluppare a livello hardware e software una soluzione specifica per un dato compito o obiettivo, per il quale non esiste sul mercato una soluzione adeguata. Di seguito l’elenco delle principali fasi di progettazione:
- Analisi dei requisiti: la prima fase cruciale nella progettazione di sistemi embedded è analizzare i requisiti del prodotto e trasformarli in specifiche, in questo modo vengono determinate le condizioni operative e le specifiche funzionali per l’intero sistema.
- Realizzazione dello schematico: una volta che i requisiti sono stati tradotti in specifiche, il progettista può iniziare a costruire lo schema circuitale. In questa fase della progettazione viene scelto il tipo di µP o MCU più adatto nonché i componenti necessari al completamento delle funzioni circuitali richieste. Il micro è il cuore di un sistema embedded, considerazioni come la velocità di elaborazione, la memoria, le periferiche di comunicazione, il consumo energetico e il costo devono essere attentamente ponderate al fine di soddisfare tutte le specifiche richieste riguardanti anche la successiva fase produttiva.
- Layout del PCB: una volta completato lo schema circuitale, lo step successivo è quello del layout del circuito stampato. La progettazione del circuito stampato diventa complessa quando si lavora su un µP o un MCU che gestisce segnali ad alta frequenza e/o circuiti a segnale misto. Tali velocità danno origine a problemi come interferenze EMI, quindi richiedono una particolare gestione in fase di progettazione del PCB.
- Sviluppo del firmware: l’hardware è solo una parte della complessa progettazione di un sistema embedded. Il processo di sviluppo può essere accelerato utilizzando librerie di driver già esistenti, messi a disposizione dai vari produttori. Lo sviluppo del firmware è un processo che richiede tempo, meticolosità e verifiche, ogni singola riga di codice fuori posto può comportare ore di debug.
- Test e collaudo: prima che il progetto venga approvato per la produzione, deve superare severi test e collaudi, in particolar modo tali test devono dare esito positivo quando la scheda elettronica andrà ad operare vicino ai suoi limiti di funzionamento.
Utilizzo dei sistemi embedded
Di seguito una lista dei principali settori di utilizzo dei sistemi embedded:
- Smart Home: dispositivi elettronici ed elettrodomestici come TV e sistemi musicali, fotocamere digitali, smartphone, console di gioco, condizionatori d’aria, frigoriferi, macchine da caffè e robot aspirapolvere sono solo alcuni esempi di sistemi embedded utilizzati nelle moderne abitazioni. Il concetto di casa intelligente è emerso quando tali dispositivi sono stati connessi ad Internet facendo in modo che gli utenti potessero gestirli da remoto tramite connettività wireless. Nasce così l’elettronica per l’IoT (Internet of Things).
- Smart City: nelle città di tutto il mondo sono in uso dispositivi elettronici e sistemi embedded. Combinandosi in vaste reti intelligenti, formano un nuovo ecosistema noto come “città intelligente”, che esiste esclusivamente per supportare la sicurezza e ottimizzare i processi in vaste aree popolate da milioni di persone. I parcheggi intelligenti, i sistemi di sorveglianza, i sistemi di controllo del traffico, le soluzioni di monitoraggio dell’inquinamento e una varietà di servizi per la comunità, tutti questi si basano sulla tecnologia embedded.
- Medico: l’uso dei sistemi embedded è ormai molto diffuso in ambito sanitario, portando alla realizzazione di una varietà di dispositivi indossabili e sistemi diagnostici consente il monitoraggio della salute del paziente, la raccolta, l’archiviazione e l’analisi dei dati.
- Automotive: i sistemi embedded sono integrati praticamente ovunque nelle automobili più moderne. Di seguito sono riportati alcuni esempi:
- I sistemi di frenata antibloccaggio, il cambio automatico, il rilevamento degli angoli ciechi, il cruise control e vari sensori sono progettati per rendere più sicuri i movimenti dell’auto e prevenire gli incidenti.
- Sistemi di controllo del carburante tengono traccia della quantità di carburante utilizzata.
- Tecnologia di controllo delle emissioni.
- Climatizzazione automatica, sistemi di infotainment, ecc.
- Industriale: la produzione industriale è da sempre influenzata dai progressi tecnologici portando all’integrazione attiva nei processi di produzione i sistemi embedded, la robotica, IIoT (Industrial Internet of Things), AI (Artificial Intelligence) e Big Data. Portando in questo modo a raggiungere una produzione industriale molto efficiente.
- Difesa e Aerospaziale: l’importanza di sensori, sistemi di navigazione e soluzioni di comunicazione ad alte prestazioni nelle attività aeronautiche, spaziali e militari non può non essere menzionata. I sistemi embedded sono fondamentali in questo settore perché sono responsabili del controllo e gestione di un’infinità di apparecchiature utilizzate nel campo Difesa e Aerospaziale. Alcuni esempi possono essere i dispositivi di gestione del decollo e l’atterraggio degli aerei oppure il controllo dei satelliti che girano intorno alla Terra che inviano e ricevono segnali.
I principali linguaggi per lo sviluppo software/firmware di sistemi embedded
C/C++: per molti sistemi embedded i linguaggi C/C++ sono la scelta migliore per quanto riguarda lo sviluppo di firmware, essendo questi ultimi linguaggi estremamente efficienti. Il dispositivo embedded traduce direttamente il codice in linguaggio macchina, il che significa che il linguaggio è veloce e stabile. Tale efficienza e spesso richiesta per dispositivi a bassa potenza e con poca memoria.
C#: è un linguaggio di programmazione strutturato e orientato agli oggetti derivato dalla famiglia del linguaggio C. È una buona scelta per lo sviluppo firmware per sistemi embedded e IoT poiché i programmi in C# possono essere eseguiti su diverse architetture.
Linguaggio assembly: Il linguaggio assembly è famoso per i sistemi a risorse limitate perché traduce direttamente il codice in linguaggio macchina che l’hardware può facilmente interpretare. Inoltre, il linguaggio è rapido ed efficiente in termini di utilizzo della memoria.
Java: è, al giorno d’oggi, uno dei linguaggi più diffusi e viene utilizzato anche per realizzare programmi per sistemi embedded. Gli sviluppatori possono creare applicazioni portatili compatibili con vari tipi di hardware sfruttando le sue potenti librerie e Java Virtual Machine (JWM).
Python: è un linguaggio interpretato, di facile lettura, il che accelera il processo di sviluppo di app. Inoltre, Python può raccogliere, archiviare e analizzare enormi quantità di dati in tempo reale attraverso l’utilizzando di algoritmi di intelligenza artificiale. Esistono implementazioni di Python dedicate ai sistemi embedded, come ad esempio MicroPython.
Linux: con il termine Embedded Linux ci si riferisce a quell’insieme di distribuzioni Linux concepite per essere utilizzate su sistemi embedded. Le caratteristiche principali di tali sistemi impongono dei vincoli molto severi al sistema operativo in termini di memoria flash occupata, memoria centrale necessaria e tempi di reazione molto brevi.
Differenza tra firmware, software embedded e IoT:
- Il firmware è un’istruzione di programma archiviata nella memoria di un dispositivo elettronico, predisposto per eseguire determinate funzioni e comunemente archiviato nella memoria flash, dove può essere facilmente aggiornato. Viene scritto in linguaggi di basso livello (come C o Assembly) e quindi tradotto in codice macchina in modo che l’hardware di un dispositivo specifico possa leggerlo ed eseguirlo.
- Il software embedded, come il firmware, è progettato unicamente per un determinato dispositivo, è inoltre più sofisticato ed esegue funzioni di alto livello come l’elaborazione dei dati e l’interazione con altri dispositivi poiché è scritto in linguaggi di alto livello. Mentre il firmware può eseguire attività senza utilizzare un sistema operativo, il software integrato richiede un sistema operativo specializzato ed una memoria RAM
- Quando un sistema embedded viene connesso alla rete Internet può essere un dispositivo IoT. Il dispositivo IoT comprende vari componenti hardware che con l’ausilio di un software integrato e di una connessione di rete possono essere controllati e aggiornati da remoto. Grazie al rapido ritmo di sviluppo dell’IoT, quasi tutti i sistemi embedded possono essere connessi alla rete e diventare dispositivi IoT.
Sistemi embedded in TCL Group
TCL Group è altamente specializzata nella progettazione e realizzazione di sistemi embedded. Siamo in grado di implementare qualsiasi funzionalità basata su microcontrollore (MCU) o microprocessore (µP) minimizzando i costi di produzione e riuscendo a mantenere un elevata qualità del prodotto finito. Forniamo prodotti affidabili e di alta qualità alle aziende che operano nei settori dell’elettronica di consumo, dell’automazione industriale, della domotica, robotica e in tutti i settori in cui possono essere applicate le tecnologie embedded e real-time.