L’intelligenza embedded

La grande richiesta di single board computer è legata all'esplosione della richiesta di intelligenza nei sistemi embedded. Se da una parte questa esigenza, relativamente alle applicazioni embedded molto spinte, viene soddisfatta dallo sviluppo della tecnologia system-on-chip, dall'altra, per le applicazioni embedded meno spinte, i single board computer sono senza dubbio la soluzione che meglio ha recepito questa esigenza. Tra i fattori che motivano l'uso crescente di Sbc vi è prima di tutto la necessità di disporre nei sistemi embedded di interfacce uomo-macchina abbastanza evolute (per esempio di natura grafica, di natura audio, con caratteristiche hand-free, ecc.). Altre esigenze riguardano la necessità di comunicazione in qualsiasi contesto, in particolare quella riferita a Internet. Anche la comunicazione con altri dispositivi embedded e non embedded, tramite popolari interfacce come Usb, Ethernet, FireWire, ecc., è un altro importante fattore che incentiva a introdurre nei sistemi embedded le Sbc piuttosto dei processori assemblati in maniera custom e proprietaria all'interno dell'applicazione o del prodotto. I single board computer sono quindi l'equivalente dei SoC e tendenzialmente a questi si sovrappongono, anche in conseguenza dello sviluppo che gli stessi SoC stanno avendo in questi anni. L'idea di base per i Sbc, sin dall'introduzione dei computer negli anno '80, è stata quella di mettere su un'unica scheda tutte quelle funzionalità che nei computer erano basate su un insieme di schede (anche diverse decine) assemblate in un backplane. Di fatto, tutte le schede di un computer altro non sono che la Cpu, la memoria, i controller dei dischi, le interfacce di comunicazione, ecc. Un Sbc assembla tutte queste funzioni su un'unica scheda, utilizzando chipset ad elevata scala di integrazione e sfruttando al massimo la caratterizzazione delle applicazioni embedded, molto più essenziali rispetto a quelle generali cui sono destinati i computer multischede. L'obiettivo quindi dei Sbc è quello di soddisfare in maniera efficiente applicazioni soprattutto di natura industriale come l'acquisizione dati, il controllo di processo, la comunicazione, la misura, l'acquisizione dati, ecc. La riduzione su singola scheda di tutta la funzionalità di un computer è essenzialmente una strategia di ottimizzazione e non di diversificazione rispetto al computer stesso. La compatibilità con questo rimane un fattore importante per lo sviluppatore quando questo deve scegliere una famiglia di Sbc da utilizzare per la progettazione dei suoi sistemi embedded.
I computer desktop sono ormai allineati a determinati standard sia hardware che software. Dal punto di vista hardware la compatibilità richiesta riguarda prima di tutto la Cpu e il chipset cui questa fa riferimento. Dal punto di vista software la compatibilità con i computer desktop consente di trarre vantaggio dalla grande quantità di software disponibile per i computer desktop, prima di tutto i sistemi operativi, poi anche i linguaggi di programmazione (compilatori), gli strumenti e gli ambienti di sviluppo, il software applicativo, ecc. Da questo punto di vista una fondamentale differenziazione nell'offerta di Sbc riguarda la Cpu di riferimento e di riflesso il sistema operativo di riferimento. Da una parte vi è la tendenza a mantenere la compatibilità con l'architettura x86 e i sistemi operativi che ad essa fanno riferimento, primo tra tutti Windows. Dall'altra vi è una parallela tendenza a far riferimento a processori come Mips, Arm, PowerPC, ecc. e a sistemi operativi open source come Linux, per meglio centrare le esigenze di settori applicativi embedded con requisiti stringenti sui costi e sulle prestazioni.

Applicazioni, tipologie e standard
L'offerta di soluzioni Sbc è fondamentalmente diretta al mondo delle applicazioni embedded come i sistemi computerizzati di intrattenimento e di gioco, i sistemi di distribuzione automatica di prodotto e di servizi, i sistemi di controllo delle macchine industriali, ecc. La natura delle applicazioni cui sono destinate le Sbc ha portato alla definizione di alcune tipologie diventate anche standard industriali. Una distinzione abbastanza significativa nella tipologia concerne soprattutto la possibilità di essere utilizzate in sistemi basati su backplane (CompactPCI, Pxi, VMEbus, VXI, Picmg) oppure sulla possibilità di essere autoassemblabili in modalità a stack senza richiedere un backplane. Questo è il caso del PC/104 e di altre varianti simili, che utilizzano il sistema a innesto di pin su zoccoli per le necessarie espansioni, sia di natura multiprocessore, sia di natura periferica (memorie Simm, Dimm, hard disc, ecc.). Anche se l'obiettivo fondamentale delle Sbc è la minor dimensione possibile, lo standard dimensionale è comunque importante ai fini delle applicazioni industriali. Il formato PC/104 è il più popolare per la sua compatibilità con il Pc, ma anche per la compattezza, la robustezza, la possibilità di assemblaggio a stack (a pila) e l'espansibilità sia a livello di zoccoli, sia a livello di scheda. Il fattore di forma, quando la Sbc è destinata a combinarsi con altre schede e moduli, o comunque essere inserita in un backplane, fa riferimento a uno standard industriale.
PC/104 è uno standard per le applicazioni embedded che fa capo al PC/104 Consortium che si occupa delle specifiche di formato e di interfaccia. A tale formato ha fatto riferimento anche un tentativo di standard Ieee che però non è stato mai ratificato. La caratteristica del PC/104, rispetto ad altri formati di Sbc, è quella di non avere il backplane come sistema di assemblaggio e di comunicazione verso altri sistemi. In genere una sola scheda PC/104 contiene tutte le risorse necessarie per l'applicazione di riferimento. Comunque, quando è necessario, il sistema di espansione è basato sullo stacking. Questo è un sistema di espansione a basso costo e molto affidabile che consente virtualmente di aggiungere alla Sbc qualsiasi tipo di espansione, sia quelle offerte a livello Cots (Commercial-off-the-shelf), sia realizzate direttamente dallo sviluppatore embedded (soprattutto periferiche specializzate e proprietarie). Il formato della scheda standard PC/104 è di 3,55'' x 3,775'', ma non tutti i produttori di Sbc PC/104 rispettano queste dimensioni. CompactPci è un formato di tipo Eurocard (3U e 6U) che utilizza il sistema di interconnessione a backplane passivo. Definito inizialmente per il backplaning passivo Pci questo standard si è sviluppato facendo convergere su sè una serie di tecnologie che fanno riferimento al suo formato di connessione (2 mm pin spacing) differente dal VME (2,54 mm pin spacing).

Dual-core su single board
Applicazioni come l'automazione industriale, il multimedia e i dispositivi di imaging,  hanno requisiti di potenza computazionale che solo la recente disponibilità di processori dual-core consente di soddisfare. Un esempio di Sbc che supporta il dual core Intel (L2400) è l'Sbc ReadyBoard 830 di Ampro Computers. Questo integra su una sola scheda oltre al dual-core, anche la Ram, le risorse necessarie alla gestione della grafica e della rete, e tutte le necessarie estensioni di I/O. In particolare il graphic display GMA950 di Intel consente di utilizzare visualizzatori di qualsiasi tipologia (Crt, Tv, schermi piatti, ecc.) fino a risoluzioni di 2048 x 1536 pixel. Un video encoder onboard rende disponibile l'uscita video Tv come Hdtv, Component e S-Video. L'espandibilità di questa Sbc è sia di tipo Pci Express, sia di tipo PC/104. Vari tipi di sistemi operativi embedded sono supportati, tra cui Linux 2.6 e Windows embedded (CE e XP). Questa Sbc integra, oltre al processore, anche la Ram, le risorse per la gestione della grafica e del networking, oltre a un sottosistema di I/O molto robusto. Il processore Duo L2400 opera a 1,66 GHz, mentre i due zoccoli Sodimm ospitano fino a 4 GB di Ram Ddr2 a 533 MHz. La versione dual core a 1,66 GHz consuma meno di 15 W.

Sbc con Dsp e Fpga
Un numero crescente di applicazioni embedded richiedono funzionalità di elaborazione del segnale più o meno avanzate e configurazioni di sistema flessibili. In queste situazioni è necessario disporre di application-specific processor come i Dsp e di architetture di computing riconfigurabili come le Fpga. La combinazione tra un Dsp e una Fpga offre allo sviluppatore tutte le risorse computazionali e di architettura di sistema necessarie a soddisfare in maniera ottimale le stringenti esigenze applicative nel compo dei segnali. La Sbc di Critical Link MityDsp-Pro integra sulla stessa board un Dsp di Texas Instruments (TMS320C6455) e una Fpga di Xilinx (XC3S20000 Spartan 3). Per tutti i blocchi Fpga c'è una corrispondente libreria software Dsp e gli schematici hardware. Nella Fpga sono implementate anche Uart standard. L'interfaccia esterna di tali Uart consiste dei segnali Tx, Rx, CTS e RTS di tipo TTL, quindi che richiedono solo un line driver per essere utilizzati.

Sbc PC/104 fanless e a basso consumo
Basso consumo ed eliminazione del sistema meccanico di raffreddamento sono spesso requisiti applicativi importanti che è possibile soddisfare in maniera conveniente solo se si utilizzano Sbc che già hanno risolto questa problematica all'origine. Un esempio di tale soluzione è Cougar PC/104 plus di VersaLogic, una Sbc di formato PC/104 plus concepita per essere resistente e allo stesso tempo sufficientemente potente per supportare applicazioni embedded avanzate come quelle aerospaziali e medicali, oltre a quelle industriali. Questa Sbc utilizza il processore LX800 di Amd, capace di consumare meno di 5 W. L'Sbc monta anche il supporto per display piatti con multimedia extension (MMX) e le estensioni 3DNow! per le applicazioni video avanzate. Sono supportati gli standard ISA e PCI per l'interfacciamento di altri moduli.

Sbc alimentata da Usb
Beagle Board è una Sbc che fa parte di un progetto aperto che rende disponibile in forma libera tutto il materiale di sviluppo. Si caratterizza per il basso costo e il basso consumo, oltre alla comunità open source di riferimento che offre supporto e aggiornamenti. Beagle Board di Digi-Key è un esempio di tipologia di Sbc capace di soddisfare una larga gamma di applicazioni con un basso costo pur offrendo elevate prestazioni come il basso consumo, l'assenza di raffreddamento meccanico, la potenza di un processore avanzato. Beagle Board è una Sbc basata su OMAP3530 application processor con Arm Cortex A8 operante a 600 MHz (sviluppa 1200 Dhrystone Mips grazie all'architettura superscalar e alla branch prediction). Una caratterizzazione è la Usb 2.0 on-the-go che consente di alimentare la scheda e di implementare espansioni flessibili. Questa soluzione Sbc consente di risolvere problematiche applicative che richiedono computer desktop o anche laptop che ovviamente non offrono le necessarie possibilità di embedding di questa tipologia di Sbc. Le dimensioni della BeagleBoard sono estremamente ridotte considerando le risorse di computing su essa integrate. Si tratta di una scheda di 3” per 3” che racchiude tutte le funzionalità di un computer. La Cpu Arm può eseguire Windows-CE oppure Linux, mentre il Dsp di 320C64xx svolge la funzione di acceleratore per il processing di audio e video (soprattutto la decodifica). Oltre a questa risorsa programmabile, Bearle Board include anche una Cpu specializzata per il rendering video 2D e 3D. Si tratta della Graphical Processing Unit PowerVR SGX430 di Imagination Technologies che supporta OpenGL ES 2.0, il subset cross-langage di OpenGL per la codifica di applicazioni di grafica computerizzata 2D e 3D. Il consumo di potenza dell'ordine dei 2W consente a questa Sbc di essere alimentata da Usb e di non richiedere un sistema di raffreddamento forzato.

Linux su Single Board Computer

Linux nella versione embedded è ormai particolarmente apprezzato dagli sviluppatori in alternativa ai sistemi operativi proprietari. Molti produttori di Single Board Computer dichiarano di supportare Linux sulle loro famiglie di Sbc, ma a differenza dei sistemi operativi proprietari che, per la natura chiusa del codice, il supporto deve essere effettivamente garantito, per Linux l'effettivo supporto non è garantito in maniera assoluta. In particolare, il supporto di Linux spesso viene ottenuto attraverso terze parti che non necessariamente sono a conoscenza di tutti i dettagli realizzativi della Sbc di riferimento. Va considerato che le Sbc sono spesso una ottimizzazione molto spinta dal punto di vista hardware dei computer che utilizzano un determinato chip set. Il supporto di Linux sul computer di riferimento non è una garanzia che il supporto sia effettivo sulla versione embedded in formato Sbc, ove ottimizzazioni dell'hardware possono aver portato a varianti funzionali che non sono implementate nella versione Linux di riferimento. Gli elementi critici dell'architettura di una Sbc relativamente al supporto Linux sono il sottosistema di display, il sistema di memorizzazione di massa allo stato solido, i sottosistemi periferici di controllo come il watchdog, il sottosistema di I/O, l'interfaccia Pcmcia e il sottosistema di comunicazione. Malgrado questi rischi di non corrispondenza tra il dichiarato supporto di Linux e la sua effettiva funzionalità su una Sbc, Linux rimane molto attrattivo per gli sviluppatori anche perché, se qualcosa non funziona è sempre possibile esaminare il codice sorgente e consultare la sterminata comunità di sviluppatori Linux, sempre disposti a dare una mano a risolvere i problemi degli altri. Ovviamente, con i sistemi operativi proprietari se qualcosa va storto, trovare la soluzione può essere un vero e proprio rompicapo se la piattaforma è un Sbc.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome