Lo sviluppo di un sistema embedded basato su Android
Contributo di Electronic Products
2014-03-12
La piattaforma Android ad architettura aperta ha registrato un successo eccezionale nell'acquisizione della maggiore quota di mercato degli smartphone. Sostenuto e acquisito da Google nel 2005, il sistema operativo Android è presente in oltre un miliardo di cellulari e tablet dalla sua inaugurazione nel 2007 e se ne prevede la continua espansione con l'emergere di soluzioni embedded per "Internet delle cose (IoT)".
Una forza acceleratrice fondamentale per l'accettazione di Android è la Open Handset Alliance, che mantiene la definizione di hardware, software e telecomunicazioni attraverso l'uso di standard aperti. Contribuisce inoltre a garantire il successo del sistema operativo Android la sua intuitiva interfaccia utente, che si avvale del tocco e dei gesti per fornire un'interazione ad alto livello con gli utenti. In più, i miglioramenti nel riconoscimento vocale, molti collegamenti flessibili per le comunicazioni, display brillanti ad alta definizione e moduli fotocamera con risoluzione ben oltre la norma sono solo alcune delle caratteristiche che contribuiscono al successo dei prodotti basati su Android.
Che cosa significa tutto questo per i progettisti di apparecchiature e sistemi con interfaccia utente? Questo articolo esamina gli elementi di un progetto Android e discute gli approcci tecnici, le risorse, gli strumenti e i progetti di riferimento disponibili per aiutare a sviluppare hardware Android primario e/o di tipo add-on. Tutti i componenti, gli strumenti di sviluppo, le risorse di formazione e altre menzionate in questa sede sono reperibili sul sito DigiKey.
Open-source o closed-source?
La battaglia tra open-source e closed-source ha imperversato per diverse generazioni nel mondo della progettazione. Closed-source significa che solo un ristretto gruppo di innovatori viene lasciato libero di creare, dato che le risorse di sviluppo e le licenze implicano un certo impegno per i progettisti. Open-source significa che chiunque può sviluppare un prodotto entro un quadro generale, di solito gratuitamente o a costi molto bassi. I prodotti closed-source spesso paiono funzionare meglio non appena messi a disposizione, dal momento che (di solito) sono sostenuti da un team più disciplinato.
Tuttavia, non c'è dubbio che il basso costo, schermate sexy, interfacce utente e la diversità delle applicazioni hanno spinto le vendite Android ben oltre quelle del concorrente più vicino, Apple per iPhone e iPad. Produttori come Samsung con i suoi prodotti di classe Galaxy e una nutrito assortimento di società hardware non tradizionali tra cui Barnes & Noble e Amazon offrono varie forme del sistema operativo Android in bundle con numerose caratteristiche e applicazioni.
Tutto questo ha un duplice significato. Anzitutto, siamo in grado di progettare hardware personalizzato come add-on a basso costo per un OEM Android e utilizzare il sistema Android per il nostro display, il collegamento di comunicazione e l'interfaccia utente. In alternativa, possiamo progettare un sistema Android che si adatta perfettamente al nostro hardware dedicato o a sistemi proprietari e sfruttare al meglio le risorse open-source, ma anche renderci indipendenti dall'hardware per godere di una maggiore scelta tra i processori di prossima generazione, moduli, schede o tablet OEM, a condizione che siano conformi ai requisiti Android.
Cosa occorre
Di pari passo con il migliorare delle funzionalità, cambieranno anche i requisiti minimi. I progetti Android moderni richiedono almeno la potenza di un'architettura ARM7 a 32 bit, MIPS o x86, con almeno 512 MB di RAM. I processori devono essere in grado di eseguire lo schema di gestione della memoria che mantiene aperti i processi, ma che può essere sospeso per risparmiare energia.
Non sono cose da poco. Non è un compito facile avere un singolo processore, anche a 1 GHz, per gestire e dirigere molte funzioni time-critical e spesso sovrapposte quali elaborazione grafica, accelerometri e altri sensori, touchscreen capacitivo proiettato in grado di riconoscere i gesti, videocamera, USB, GPS, Wi-Fi, Bluetooth e I/O audio, tanto per citarne alcuni.
Quando si sviluppa un progetto basato su piattaforma hardware compatibile Android, è necessario esaminare dapprima i chipmaker che forniscono i processori ARM, MIPS o X86 in grado di sostenere ed eseguire il sistema operativo di sapore Linux soggiacente alla personalità di Android. Tuttavia, per questo è bene tenere a mente che, oltre ai processori di classe gigahertz di fascia alta, esistono anche processori e coprocessori più piccoli, integrati e dedicati che possono sobbarcarsi di molti dei processi che competono per ottenere attenzione e risorse.
Si prenda in esempio FT311D-32L1C-R di FTDI, un enumeratore Android USB dedicato e controller del collegamento di comunicazione. Definito un CI host USB per Android, è progettato specificamente per permettere l'accesso a periferiche hardware all'interno di un sistema Android attraverso la porta USB.
Android Open Accessory Mode (OAM, da OS 3.1 in poi) consente alle periferiche esterne con hardware USB di interagire in una modalità accessorio speciale. L'alimentazione proveniente dal dispositivo esterno viene utilizzata in modo che il tablet o lo smartphone non sia tenuto a fornire i 500 mA necessari per soddisfare USB come controller sul lato host. In questa modalità, non sono richiesti driver, software o risorse aggiuntive sul sistema Android.
Il relativamente piccolo FT311D a 32 pin gestisce l'intera sequenza di enumerazione USB e supporta Android Open Accessory Mode come coprocessore indipendente (figura 1).

Figura 1: Sollevando Open Accessory Mode dalle responsabilità, il coprocessore gestisce l'enumerazione e la rienumerazione senza richiedere driver o risorse aggiuntive dal processore Android.
Con il supporto USB 2.0 a 12 MHz, può alleggerire il processore principale, sollevandolo da tutte le responsabilità relative a USB, specialmente durante il collegamento delle periferiche alla porta USB. FTDI fornisce un Modulo didattico per l'uso dei prodotti per soluzioni con interfaccia Android sul sito DigiKey.
Anche Microchip, produttore del processore PIC, supporta la popolare piattaforma Arduino. Tenendo a mente lo sviluppo per Android, Microchip offre lo starter kit per lo sviluppo di accessori DM240415 basato su processori PIC24F. Questo kit fornisce anche un approccio con coprocessore dedicato per alleggerire il carico di collegamenti critici e funzioni, come il trasferimento dati, da e verso un Android tramite un microcontroller o USB nell'ottica OAM.
Lo starter kit per lo sviluppo di accessori DM240415, non soggetto a royalty e senza canoni di licenza, fornisce un debugger embedded, alimentazione e librerie grafiche di supporto software, stack IrDA e USB, file system su unità flash, software per funzionalità tattile capacitiva, stack TCP/IP e supporto Wi-Fi MiWi personale. Per l'interfacciamento di hardware personalizzato a un sistema Android, la scheda offre anche otto LED di stato, un potenziometro e pulsanti di interfaccia utente per fungere da scheda di prova e aiutare nello sviluppo di applicazioni. È fornito uno schema di riferimento[1], a fianco di un progetto di riferimento di un tablet. Il driver client Android è implementato come un livello sopra lo stack host USB PIC (figura 2).

Figura 2: Il software non soggetto a royalty per la modalità OAM Android di Microchip potenzia lo stack USB aggiungendovi un driver client Android.
Sia Microchip che FTDI offrono supporto allo sviluppo per i propri dispositivi, ma l'assistenza può anche essere fornita da terzi. Embedded Artists offre una demo open-source e una scheda di sviluppo con il kit applicativo EA-APP-001 per Android Open Accessory. Seguendo lo stesso schema di distribuzione divisa per la gestione delle attività del processore, utilizza due coprocessori: LPC1769 di NXP Semiconductors, un dispositivo ARM® Cortex™-M3 a 32 bit, 120 MHz di fascia alta, abbinato a LPC11C24 di NXP, un processore ARM Cortex-M0 a 32 bit, 50 MHz più piccolo, per distribuire le attività di elaborazione di livello più alto e più basso in flussi operativi paralleli.
Il lato LPC1769 può supportare Ethernet 10/100, CAN, ZigBee (NXP Jennic) e attività in serie. Il lato LPC11C condivide una interconnessione CAN, ma gestisce anche lo sviluppare hardware e l'interfacciamento dei sensori con LED RGB, pulsanti e sensori di temperatura e di luce. Può anche testare lo sviluppo della riattivazione dallo stato a basso consumo attraverso uno dei suoi I/O a bassa potenza (PIO1_4).
Una caratteristica interessante è il feed-through del caricatore. In aggiunta a una fonte di alimentazione alternativa a 5 V, l'interfaccia del caricatore tipo USB estrae la potenza dall'unità sottoposta al test (figura 3). L'area di prototipazione disponibile consente l'accesso ai segnali di dati USB e alla modalità OAM attraverso i caricatori. Un caricatore può quindi sincronizzare le immagini e la musica tramite Wi-Fi mentre è in carica. NXP mette a diposizione il modulo didattico per l'uso dei prodotti per la serie LPC1700 e il modulo didattico per l'uso dei prodotti per densità di codice LPC11xx.

Figura 3: I coprocessori duali possono distribuire le periferiche e le e attività associate ad Android, nonché fungere da piattaforma per lo sviluppo di add-on hardware Android.
Born to run
Oltre allo sviluppo di periferiche e al supporto OAM, sono disponibili sistemi a livello di scheda e progetti di riferimento, così come kit di sviluppo, capaci di eseguire processori gigahertz di fascia alta per le principali applicazioni Android. Date un'occhiata alla scheda A13-OLINUXINO-MICRO basata su ARM Cortex-A8 a 1 GHz di Olimex per lo sviluppo Android su base Linux. Basata sul SoC Allwinner, questa è una delle schede processore di classe gigahertz OLinuXino basate su vari processori (A8, A13, MX233 e altri) consigliate per l'uso per un maggiore controllo (figura 4).

Figura 4: La piattaforma di sviluppo altamente integrata per Linux Android di Olimex, basata su Allwinner A13, utilizza la tecnologia SoC per fornire alte prestazioni, basso consumo e compatibilità Android.
A queste velocità, i processori single o multi-core possono assorbire tutto il sovraccarico delle diversi funzioni periferiche e sobbarcarsi direttamente dei dati e/o delle attività più complesse come NAND Flash, RAM DDR, schede SD, grafica 3D, USB e altre.
Olimex offre anche la scheda Linux A10S-OLINUXINO-MICRO a 1 GHz basata su ARM Cortex-A8, un minicomputer open-source monoscheda Android/Linux. Questa scheda include supporto USB 2.0 e grafica HDMI e supporta la risoluzione TFT VGA. Offre anche 50 linee I/O per assistere nello sviluppo di hardware nativo e interfacce proprie.
Nel complesso, il blocco processore Android può essere considerato il processore embedded di prossima generazione con un set standardizzato di periferiche, funzioni, caratteristiche e codice open-source. Le sue prestazioni ad alto livello e le opzioni di progettazione potrebbero fare dei sistemi Android una nuova un'interfaccia utente ampiamente adottata dai produttori di apparecchiature, che spalanca le porte ai sistemi OEM Android perché possano divenire un componente prezioso per i progettisti di sistemi embedded.
Per ulteriori informazioni sui componenti discussi in questo articolo, utilizzare i collegamenti forniti per l'accesso alle pagine di prodotto sul sito DigiKey.
Riferimenti
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

