Sistema embedded

Un sistema embedded è un computer che è stato costruito per risolvere solo alcuni problemi molto specifici e non è facilmente modificabile. La parola "embedded" significa che è incorporato nel sistema. È una parte permanente in un sistema più grande. Di solito non ha l'aspetto di un computer, spesso senza tastiera, monitor o mouse. Ma come ogni computer ha un processore e un software, input e output.

Ad esempio, il controllore incorporato in un ascensore dice al motore di spostare l'ascensore a diversi piani, in base ai pulsanti che vengono premuti. Un decoder è incorporato in un decoder per televisori satellitari (chiamato STB) per leggere un segnale dalla parabola e inviare qualcosa che un televisore capisce. Spesso questo tipo di sistema deve svolgere il suo lavoro in un determinato lasso di tempo. Questo si chiama calcolo in tempo reale. Se un set-top box venisse interrotto per fare un altro compito, si vedrebbe una brutta immagine sul televisore, per esempio. Un computer generico ha spesso brevi pause mentre fa qualcos'altro, non è in tempo reale.

I sistemi integrati controllano molti dei dispositivi più comuni oggi in uso, come i lettori di schede nelle serrature delle porte degli alberghi o diverse cose in un'auto. Possono controllare piccole cose come un lettore MP3 o una macchina fotografica digitale, e grandi cose come i sistemi a semaforo, gli aerei o le linee di assemblaggio in una fabbrica.

Immagine degli interni di un modem/router ADSL. Un esempio moderno di sistema embedded. Le parti etichettate includono un microprocessore (4), RAM (6) e memoria flash (7)Zoom
Immagine degli interni di un modem/router ADSL. Un esempio moderno di sistema embedded. Le parti etichettate includono un microprocessore (4), RAM (6) e memoria flash (7)

Esempi di sistemi incorporati

I sistemi incorporati sono utilizzati in molti tipi di dispositivi elettrici, tra cui:

  • I sistemi di telecomunicazione li utilizzano per telefoni, reti di telefonia mobile e router wi-fi.
  • L'elettronica di consumo comprende ricevitori broadcast, lettori MP3, telefoni cellulari, console per videogiochi, fotocamere digitali, lettori DVD, ricevitori GPS, sistemi di sicurezza domestica e stampanti.
  • Gli elettrodomestici, come i forni a microonde, le lavatrici, i sistemi di allarme antifurto e le lavastoviglie hanno sistemi incorporati.
  • I trasporti utilizzano sistemi integrati per tutto, dalle locomotive per treni, aerei e automobili.
  • L'industria utilizza motori elettrici con controllori elettronici, lettori di schede e macchine CNC che producono automaticamente parti metalliche.
  • Dispositivi medici come defibrillatori, lettori automatici di pressione sanguigna e pompe per insulina automatiche.
  • Dispositivi militari, come walkie-talkie, satelliti e sistemi di guida per missili.

Caratteristiche comuni

  • I sistemi incorporati sono progettati per svolgere un compito specifico, a differenza dei computer generici.
  • Non sembra un computer - potrebbe non esserci un monitor completo o una tastiera.
  • Molti sistemi embedded devono essere in grado di fare le cose in tempo reale - in un breve lasso di tempo (quasi istantaneamente dal punto di vista umano).
  • Molti sistemi embedded devono essere molto sicuri ed affidabili, specialmente per dispositivi medici o avionica che controllano gli aerei.
  • Inizia molto rapidamente. La gente non vuole aspettare un minuto o due per far partire la propria auto o le attrezzature di emergenza.
  • Può utilizzare un sistema operativo speciale (o a volte un piccolo sistema operativo fatto in casa) che aiuta a soddisfare questi requisiti chiamato sistema operativo in tempo reale, o RTOS.
  • Le istruzioni del programma scritte per i sistemi embedded sono denominate firmware e vengono memorizzate in memoria di sola lettura o in chip di memoria flash. Funzionano con risorse hardware del computer limitate: poca memoria, tastiera e/o schermo piccolo o inesistente.

I sistemi incorporati non sono sempre dispositivi autonomi. A volte sono costruiti come un insieme, come le varie parti di un'auto - la radio, il controllo dell'acceleratore, il controllo dell'inquinamento, ecc. A volte possono comunicare con internet o con una rete di telefonia mobile e possono avere un lettore USB o altre connessioni.

Interfacce utente

I sistemi integrati vanno dall'assenza di qualsiasi interfaccia utente - solo l'invio e la ricezione di segnali elettrici - ad un'interfaccia grafica completa come quella di un moderno computer. Molto spesso sono dotati di alcuni pulsanti e di un piccolo display e di alcuni LED. Un sistema più complesso può avere un touch screen, che permette di cambiare il significato dei pulsanti con ogni schermo come negli smart phone.

Un esempio di interfaccia utente con pulsanti e un semplice display LCD.Zoom
Un esempio di interfaccia utente con pulsanti e un semplice display LCD.

Hardware

L'hardware comprende i chip, i fili, i circuiti stampati, i pulsanti e i display.

CPU

Il chip più importante è l'unità centrale di elaborazione o la CPU. Questa esegue le istruzioni del software. Può essere un microprocessore standard o un microcontrollore. I microcontrollori includono il microprocessore così come semplici apparecchiature periferiche in modo che il sistema possa essere più piccolo e meno costoso. Hanno una minore flessibilità perché queste parti non possono essere cambiate. Di solito queste parti includono memoria Flash e supporto per porte seriali, USB, ecc.

A differenza di un microprocessore per un computer generico, più grande e veloce non è sempre meglio. Molti processori embedded sono molto piccoli. A volte si tratta di usare meno spazio o meno energia, altre volte di essere più economici. I computer per uso generale utilizzeranno microprocessori che leggono parole a 32 o 64 bit e funzionano a velocità misurate in GHz, ma i processori embedded sono di solito da 4 a 32 bit e funzionano a velocità di solito misurate in decine di MHz (cento volte più lenti). (Ma i programmi sono anche più piccoli e non controllano le cose che non vengono utilizzate).

Schede per computer pronte all'uso

Ci sono schede per computer "pronte per l'uso" che possono essere utilizzate in alcuni sistemi embedded. Questi spesso usano Windows CE, Linux, NetBSD, o un sistema operativo embedded in tempo reale.

A volte può essere più facile usare un circuito stampato già realizzato. Questi di solito condividono molti componenti con i computer per uso generale, ma sono più piccoli di uno in un computer per uso generale. Schede come il VIA EPIA possono eseguire Microsoft Windows. Il vantaggio è che fa risparmiare un po' di tempo all'ingegneria elettrica e può utilizzare gli stessi strumenti di sviluppo software utilizzati per lo sviluppo di software di tipo PC. Esempi di tali dispositivi incorporati sono i bancomat o gli schermi nei casinò. Questo funziona bene se i requisiti in tempo reale non sono molto severi (non importa molto se un lavoro richiede otto secondi invece di cinque, per esempio).

Soluzioni ASIC e FPGA

Se il dispositivo deve essere molto piccolo o sarà venduto in grandi quantità ("alto volume"), ha senso realizzare un chip personalizzato o specializzato che faccia esattamente ciò che serve. Si tratta di un sistema su un chip (SoC) che contiene un sistema completo - processore, unità in virgola mobile, cache di memoria e interfacce su un singolo circuito integrato. I SoC possono essere realizzati come un circuito integrato specifico per applicazioni speciali (ASIC) o utilizzando un array di gate programmabile sul campo (FPGA) che viene programmato da chi costruisce il sistema integrato.

Periferiche

I sistemi embedded parlano con il mondo esterno o con altri componenti che utilizzano periferiche come ad esempio:

  • Porte seriali: RS-232, RS-422, RS-485. Questo era abbastanza comune, con i connettori a 9 pin (o più grandi).
  • Interfaccia di comunicazione seriale sincrona: Circuito integrato I²C, Suono integrato I²S, SPI, MIcrowire, ...
  • Universal Serial Bus (USB).
  • Reti: Ethernet, Controller Area Network, LonWorks, ...
  • Ingresso/Uscita discreta: General Purpose Input/Output (GPIO). Può essere un singolo filo con un segnale on/off. Può essere usato per una piccola tastiera o per accendere un LED.
  • Convertitori da analogico a digitale/digitale a analogico (ADC/DAC). Questo misura qualcosa che cambia di forza, come un sensore di luce o un controllo del motore.
  • Debugging: JTAG, porta ICSP, per ingegneri del software.
Soekris net4801, un sistema embedded mirato alle applicazioni di rete.Zoom
Soekris net4801, un sistema embedded mirato alle applicazioni di rete.

Software

Sistemi operativi

I sistemi embedded spesso non hanno bisogno di un sistema operativo completo. Alcuni usano sistemi operativi piccoli e semplici costruiti appositamente che si avviano molto rapidamente, altri non ne hanno affatto bisogno. I sistemi embedded non si adattano così facilmente, ma sono costruiti per svolgere i loro compiti in modo molto più affidabile. Poiché l'hardware è più semplice, spesso è anche più economico costruire e funzionare più velocemente.

Al contrario, un computer per uso generale deve essere pronto per l'uso di nuovi driver di dispositivi e software per l'esecuzione di hardware di cui non è ancora a conoscenza, come nuove stampanti o dischi rigidi. Ha bisogno di eseguire diversi programmi applicativi.

Man mano che i sistemi embedded diventano sempre più grandi, cose che prima erano solo su computer generici o anche sui mainframe stanno diventando comuni sui sistemi embedded. Questo include lo spazio di memoria protetto, e un ambiente di programmazione aperto che include Linux, NetBSD, ecc.

Alcuni esempi di sistemi operativi, da semplici a complessi:

  • Semplice loop di controllo - Un timer e un loop vengono utilizzati per chiamare ripetutamente diverse subroutine. Questo viene spesso effettuato da una sola persona per i sistemi più piccoli.
  • Controllo delle interruzioni - Le attività sono avviate da diversi tipi di eventi. L'evento potrebbe essere qualcosa di temporizzato (ogni dieci secondi, per esempio) o dalla pressione di un pulsante o dai dati ricevuti.
  • multitasking non preventivo - Ogni attività ha il suo turno di esecuzione, e quando finisce chiama un pianificatore nel sistema operativo per eseguire l'attività successiva.
  • multitasking preventivo o multi-threading - Un'attività può essere interrotta dopo un certo periodo di tempo per lasciarne eseguire un'altra per un po' di tempo. Nessun compito può monopolizzare il sistema. A questo livello il sistema è considerato avere un kernel "sistema operativo" e può eseguire task in parallelo. Questo tipo di sistema operativo viene solitamente acquistato da una società che lavora solo su sistemi operativi embedded.

I sistemi operativi in tempo reale includono prodotti come MicroC/OS-II, Green Hills INTEGRITY, QNX o VxWorks. A differenza di MacOS o Windows 7, questi sistemi operativi non sono conosciuti molto bene dalla maggior parte delle persone. Ma sono utilizzati in molti luoghi dove il tempo e la sicurezza sono molto importanti. Le persone li usano ogni giorno e non se ne rendono conto.

Esempi comuni di kernel più grandi sono Embedded Linux e Windows CE. Anche se questi non hanno i limiti di tempo stretti necessari per un rigoroso sistema in tempo reale, stanno diventando sempre più comuni, soprattutto per i dispositivi più potenti come i router wireless e i GPS. Essi consentono il riutilizzo del codice nel dominio pubblico per i Driver dei dispositivi, i Web Server, i Firewall e altro codice. Gli sviluppatori di software che sono più a loro agio a scrivere applicazioni per PC troveranno più familiare anche questo. Se necessario, un FPGA o altro hardware speciale può essere usato per le cose che necessitano di limiti di tempo ristretti.

Strumenti

Come altri software, i progettisti di sistemi embedded utilizzano compilatori, assemblatori e debugger per sviluppare software di sistema embedded. Tuttavia, essi possono anche utilizzare alcuni strumenti più specifici:

  • Per i sistemi che utilizzano l'elaborazione digitale dei segnali, gli sviluppatori possono utilizzare strumenti matematici come MATLAB, MathCad o Mathematica.
  • I compilatori e i linker personalizzati possono essere utilizzati per migliorare l'ottimizzazione per il particolare hardware.
  • Un sistema embedded può avere un proprio linguaggio speciale o uno strumento di progettazione, o aggiungere miglioramenti a un linguaggio esistente come quello utilizzato da Basic Stamp.

Strumenti di debug:

  • Un debugger in-circuit (ICD), un dispositivo hardware che si collega al microprocessore tramite un'interfaccia JTAG. Questo avvia e ferma il microprocessore dall'esterno mentre esegue il software. Permette anche di leggere la memoria e i registri e di memorizzare il programma software in memoria.
  • Debug esterno utilizzando il logging o l'uscita della porta seriale per tracciare il funzionamento utilizzando un monitor lampeggiante (printfs).
  • Debug interattivo residente - se il sistema operativo lo supporta, si tratta di una shell sul processore embedded che esegue comandi digitati dallo sviluppatore (Linux, per esempio).
  • Un emulatore in-circuit sostituisce il microprocessore sulla scheda, fornendo il pieno controllo su tutto ciò che il microprocessore può fare.
  • Un emulatore completo simula tutte le caratteristiche dell'hardware, permettendo di controllarlo e modificarlo. L'hardware in realtà non esiste, ma una sua versione fittizia (una macchina "virtuale") si trova su un normale PC.
  • Controllo delle linee esterne con un analizzatore logico o multimetro.

A meno che non sia limitato al debug esterno, il programmatore può tipicamente caricare ed eseguire il software attraverso gli strumenti, visualizzare il codice in esecuzione nel processore e avviare o arrestare il suo funzionamento. La visualizzazione del codice può essere come codice assembly o codice sorgente. Alcuni sistemi integrati (come VxWorks o Green Hills) hanno caratteristiche speciali, come la possibilità di tenere traccia di quanto spazio occupa il software mentre viene eseguito, di quali attività sono in esecuzione e quando le cose accadono.

A seconda del tipo di sistema embedded che si sta realizzando, influirà sul modo in cui può essere debuggato. Per esempio, il debug di un singolo sistema a microprocessore è diverso dal debug di un sistema in cui l'elaborazione viene effettuata anche su una periferica (DSP, FPGA, co-processore).

Sicurezza e affidabilità

I sistemi incorporati sono spesso in macchine che si prevede funzionino per anni senza errori, e in alcuni casi si recuperano da soli se si verifica un errore. Ciò significa che il software è di solito sviluppato e testato con più attenzione di quello per i personal computer, e si evitano le parti meccaniche in movimento inaffidabili come le unità disco e le ventole.

Luoghi dove la sicurezza e l'affidabilità sono importanti:

  • Alcuni sistemi non possono essere chiusi in modo sicuro per la riparazione, o è troppo difficile da riparare. Ne sono un esempio i sistemi spaziali (satelliti, rover), i cavi sottomarini e i controlli delle centrali nucleari.
  • Il sistema potrebbe uccidere le persone se fallisce, come i controlli degli aerei, i controlli delle fabbriche chimiche, i segnali dei treni e i defibrillatori cardiaci.
  • Il sistema perde grandi quantità di denaro se viene chiuso o se viene commesso un errore: Interruttori telefonici, controlli di fabbrica, registratori di cassa, sportelli automatici.

Modi per recuperare dagli errori - sia i bug del software, come le perdite di memoria, sia gli errori soft nell'hardware:

  • Watchdog timer che riavvia il sistema embedded se qualcosa smette di funzionare.
  • Parti duplicate, dove un sistema può prendere il sopravvento se un altro smette di funzionare.
  • Software "limp mode" che forniscono una funzione parziale.
  • Programmazione consapevole dell'immunità

Pagine correlate

Domande e risposte

D: Che cos'è un sistema incorporato?


R: Un sistema incorporato è un computer costruito per risolvere problemi specifici e non è facile da modificare.

D: In che modo un sistema incorporato differisce da un computer di uso generale?


R: Un sistema embedded di solito non ha una tastiera, un monitor o un mouse e ha funzioni specializzate. Un computer generico può svolgere un'ampia gamma di compiti.

D: Quali sono alcuni esempi di sistemi embedded?


R: Tra gli esempi di sistemi embedded ci sono i controller degli ascensori, i set-top box, i lettori di carte nelle serrature degli hotel, i sistemi semaforici, gli aerei e le catene di montaggio nelle fabbriche.

D: Che cos'è l'informatica in tempo reale?


R: L'informatica in tempo reale è quando un sistema incorporato deve completare il suo lavoro entro un tempo specifico. Se viene interrotto, può causare problemi come la scarsa qualità dell'immagine su un televisore.

D: Quali sono i componenti di un sistema embedded?


R: Come qualsiasi computer, un sistema embedded ha un processore, un software, un ingresso e un'uscita.

D: Quali sono alcuni compiti che un sistema incorporato può controllare?


R: Un sistema incorporato può controllare piccoli dispositivi come lettori MP3 o fotocamere digitali, oppure sistemi più grandi come semafori o aerei.

D: Che cosa significa il termine "incorporato" in relazione ai sistemi incorporati?


R: Il termine "incorporato" significa che il computer è integrato in un sistema più grande e non è facilmente modificabile.

AlegsaOnline.com - 2020 / 2023 - License CC3