Tecnologia embedded

Print

Embedded vuol dire immerso, contenuto, interno e va inteso come tutt'uno tra software e hardware, inscindibile e fortemente personalizzato.

Il termine "sistema embedded"  è solitamente utilizzato per identificare i sistemi elettronici a microprocessore che vengono progettati appositamente per una determinata applicazione, spesso con una piattaforma hardware ad hoc. In quest’area si collocano sistemi di svariate tipologie e dimensioni che differiscono anche notevolmente gli uni dagli altri per i diversi tipi di:  microprocessore, sistemi operativi e complessità del software che può variare da poche centinaia di bytes a parecchi megabytes di codice. 

Questi sistemi possono operare in autonomia, oppure possono essere connessi ad altri computer convenzionali, dove risiedono tipicamente le funzioni di monitoraggio e controllo.

Questi dispositivi vengono realizzati in modo da resistere al funzionamento in ambienti ostili, tipici del settore industriale.

La maggiore resistenza non è l’unico requisito richiesto ad un sistema embedded che deve essere, tra l’altro, caratterizzato anche da una maggiore affidabilità rispetto ad altri sistemi a microprocessore per ridurre, al limite del possibile, i guasti ed il blocco del sistema.

Queste richieste sono comprensibili se si immagina che un malfunzionamento può compromettere importanti processi industriali o  mancati interventi dei mezzi di sicurezza mettendo a rischio la vita stessa delle persone. A titolo di esempio, basti pensare alla elevata affidabilità che è richiesta in sistemi per il controllo di un bisturi robotizzato o al sistema di controllo basato sul bus CAN di una automobile.

I prerequisiti di affidabilità e di robustezza di cui si sta parlando non vanno intesi solo in termini hardware ma anche il software deve fornire determinate garanzie. Per questo non vengono utilizzate in queste applicazioni gli stessi sistemi operativi di uso comune, ma versioni appositamente modificate per il mondo embedded.  Una caratteristica dei sistemi operativi embedded è la stratificazione. Ovvero, questi sistemi, hanno una modularità tale da poter creare una versione degli stessi delle dimensioni minime necessarie a garantire le caratteristiche strettamente richieste per la gestione dell’applicazione senza essere appesantiti da funzioni che non sono necessarie. Questa caratteristica è indispensabile perché consente di risparmiare memoria. Le risorse di memoria sono estremamente importanti se si pensa al fatto che le grandi memorie di massa come i dischi fissi [1] sono poco affidabili e generalmente vengono sostituite, dalle più costose, memorie flash.

Un sistema embedded non è necessariamente real-time[2] in quanto non sempre è necessaria una risposta immediata ad un cambiamento di stato di una periferica.

Essi sono self-starting in quanto non necessitano dell’intervento dell’uomo per funzionare e l’utente non è in grado di capire se il controllo avviene da un microprocessore o da un hardware dedicato. Un microprocessore embedded generalmente è dotato di queste caratteristiche:

 

 

Solitamente i programmi sono contenuti in EPROM di piccole dimensioni. Questo è possibile perché i task che deve gestire un dispositivo di questo tipo sono notevolmente inferiori a quelli gestiti da un normale personal computer al quale si chiede di eseguire operazioni più complesse dal punto di vista delle risorse, come può essere anche il semplice passaggio da un foglio di calcolo ad un word processor. Fondamentalmente si possono sintetizzare due motivi fondamentali che spingono all’uso di un microprocessore embedded:

 

 

1) Il costo di sviluppo del firmware di un sistema embedded è molto alto, tuttavia questo è un costo di tipo nonrecurring expense (NRE). I costi di sviluppo ricorrono solo una volta e questo rende possibile un costo del prodotto finito molto basso se paragonato con analoghi progetti realizzati con hardware dedicati.

 

2) Offre notevole flessibilità. In un progetto di tipo hardware-based si richiede di ridisegnare il sistema nel caso in cui vengano richiesti dei cambiamenti utili ad esempio a differenziare la produzione. In un sistema basato su microcontrollore le stesse modifiche si possono ottenere modificando poche righe di codice.

 

 

Tipiche applicazioni dei sistemi a microprocessore

Figura 1: Tipiche applicazioni dei sistemi a microprocessore

 

Nel 2003 una indagine sostenuta e condotta da IBM, ha dimostrato che lo sviluppo di sistemi embedded ha meno successo di quello dei sistemi elettronici in genere. Questa indagine ha mostrato, infatti, che più del 50% di questi progetti terminano ben oltre i tempi stimati, il 44% giunge alla fine dello sviluppo con il 20% di probabilità di sopravvivere commercialmente sul mercato ed il 25% dei progetti vengono abbandonati prima di finirne lo sviluppo. (Simili sono le stime di Venture Develpment Corporation)

Queste difficoltà sono dovute al fatto che il software che sta a bordo di un sistema è diventato molto pervasivo e strategico nel decidere il successo o l’insuccesso dei prodotti elettronici.

La conseguenza di questa situazione è che i costruttori sono costretti a lottare con un miscuglio di architetture sul silicio, middleware, tool di sviluppo e sistemi operativi.

Per questo occorre un nuovo mercato che segni l’inizio di una rivoluzione tecnologica probabilmente incentrata sulla Device Software Optimzation (DSO) che consenta di risolvere le attuali difficoltà progettuali.

Con molta probabilità, il calibro da utilizzare per misurare la competitività che avranno i prodotti di nuova generazione è dato dalla qualità dei pacchetti software supplementari di supporto alla progettazione.

I componenti ideali per realizzare sistemi embedded a basso costo sono i microcontrollori. Un microcontrollore può essere definito come un singolo chip self-contained computer che incorpora tutti i componenti fondamentali di un personal computer su scala molto più piccola.

In altre parole, mentre un microprocessore è un singolo chip (CPU) usato nei computer, i microcontrollori sono essi stessi computer in un singolo chip.

Il prezzo da pagare, per usufruire delle drastiche riduzioni di costo che si ottengono con questi dispositivi, è dato dalle ridotte risorse a disposizione.

Dal punto di vista fisico il microcontrollore appare come un circuito integrato con pin lungo i propri lati (vedi figura).

 

 Sistema EmbeddedSistema Embedded

 Figura 2: Esempi di alcuni microcontrollori

I pin presenti sul microcontrollore vengono utilizzati per fornire alimentazione elettrica, segnale di clock, segnali di interrupt request, reset e I/O. La differenza con i pin di un microprocessore è di tipo funzionale dato che, in questo caso, vengono utilizzati principalmente per interfacciare i bus dei segnali piuttosto che dispositivi di I/O.

 

 


[1] Questo componente è statisticamente una delle principali cause di guasto.

[2] Sistema real-time: Sistema in cui il corretto funzionamento non dipende soltanto dalla esattezza logica del  risultato ma anche dal momento nel quale il risultato stesso viene prodotto. Una distinzione più sottile é quella tra ‘hard’ real-time e ‘soft’ real-time. In linea di massima i sistemi ‘hard’ richiedono un rispetto rigido dei vincoli di precisione temporale, in quanto mancare una scadenza significherebbe invalidare il funzionamento dell’intero sistema; quelli ‘soft’ si limitano ad un rispetto statistico dei vincoli che, se forzati, portano ad una degradazione dell’applicazione che può però essere tollerata in funzione del suo costo per l’utilizzatore