22 luglio 2014

Le alternative multi-core a Raspberry Pi


Nell'universo delle board ARM, Raspberry Pi ha conquistato una fetta importante di mercato ed ha fatto breccia nel cuore di hobbysti e makers, complice un prezzo alla portata di tutti e una solidissima community, sempre pronta a sfornare idee, accessori e piccoli hack per questa piccola board.
Alla modica cifra di 35€ si puó portare a casa un micro computer capace di eseguire alcune tra le piú importanti distribuzioni Linux e di interagire con altri componenti elettrici/elettronici per mezzo delle interfacce presenti, tra le quali citiamo le GPIO.
I maggiori limiti di questa scheda sono senza dubbio la CPU, caratterizzata dall'architettura (ormai un po' vetusta) ARMv6 con una frequenza di clock di 700MHz, e i 512 MB di RAM disponibile.
Per progetti ed impieghi poco avidi di risorse hardware (web server, file server di piccole dimensioni) questi requisiti sono piú che soddisfacenti, ma in caso di impieghi real-time o complessi (ad esempio, un sistema media center Full-HD, una piattaforma per videogiochi 3D, sistemi di videosorveglianza intelligenti), occorre passare a ben altro.

Le Alternative

Restando all'interno dei confini della definizione magica 'low cost', il mercato offre soluzioni multi-core interessanti ed in grado di soddisfare gli utenti piú esigenti. Le board di spicco sono le seguenti:
Queste 3 piattaforme hanno in comune la capacitá di eseguire sia Android, sia Linux in svariate declinazioni (ArchLinux, Ubuntu, Debian, Kali, XBMC,  Fedora, OpenWRT).
Per completezza, occorre dire che esistono anche altre soluzioni multi-core (tra cui le schede AllWinner - PandaBoard), ma la scelta è stata fatta considerando diversi fattori, tra cui il tipo di CPU, la disponibilità di risorse (software, guide, estensioni hardware), la community.
Nella tabella seguente vengono elencate le caratteristiche tecniche delle tre schede prese in considerazione in questa recensione:


Wandboard Quad ODroid-XU3 Radxa Rock
Prezzo (s.s. escluse) 129 € 133 € 99 €
CPU Freescale I.MX6 Quad Samsung Exynos5422 Rockchip RK3188
Tipo CPU ARM Cortex A9 ARM Cortex A15 + Cortex A7 ARM Cortex A9
Clock CPU 4x1.2 GHz 4x2.0 GHz (A15) + 4x1.6 GHz (A7) 4x1.6 GHz
RAM 2 GB 2 GB 2 GB
GPU Vivante GC 320/355/2000 Mali-T628 MP6 Mali400 MP4
Storage 2x microSD, 1x SATA 1x eMMC, 1x microSD 8GB NAND Flash, 1x microSD
Network WiFi, Bluetooth, Gigabit LAN Gigabit LAN WiFi, LAN, Bluetooth, IR

Il metodo di valutazione

Al fine di effettuare una valutazione più completa delle potenzialità di queste schede e sul loro reale impiego, è stata sviluppata una applicazione multi-thread (in C++) ad-hoc che effettua riconoscimento in tempo reale dello stato occupazionale di posti a sedere in ambienti interni (uffici, aule, treni) con una videocamera e di scambiare informazioni/modificare le impostazioni dell'algoritmo di tracking con un server centrale, attraverso l'impiego di websockets.

Setup

Le tre schede, a differenza della loro sorella minore (il Raspberry Pi, ndr), operano nel seguente modo: in assenza di software e firmware caricato direttamente sulle schede, occorre scaricare, compilare ed installare all'interno della memoria di massa l'uboot, un bootloader che permette il caricamento del kernel del sistema operativo ed inizializza le periferiche hardware; oltre all'uboot, occorre copiare all'interno della memoria di massa il kernel, i moduli del kernel e il filesystem relativo alla distribuzione Linux desiderata. Per quanto riguarda l'installazione di Android, la procedura è leggermente piú laboriosa, ma esistono giá alcune immagini disco giá pronte da poter essere impiegate, senza dover compilare i sorgenti da sé (ed evitare errori o tempi di attesa, talvolta biblici, in dipendenza del PC che si possiede).
Il sistema operativo scelto per la prova è Ubuntu 14.04 LTS Core, ovvero senza interfaccia grafica e con solamente i comandi *nix di base, al fine di poter ricavare il massimo delle performance dalla CPU.
Wandboard vs ODroid vs Radxa: dettaglio delle schede e dei sistemi di dissipazione

Wandboard Quad

La configurazione della Wandboard Quad è stata fatta seguendo la guida di Robert Nelson, molto dettagliata e sempre aggiornata.
Di base, la Wandboard Quad è in grado di eseguire il boot (e quindi uboot) solamente da microSD, mentre il filesystem puó esser copiato sia su microSD, sia su un disco USB, sia su un disco SATA, cambiando opportunamente i parametri da passare all'uboot, per mezzo del file uEnv.txt.
Esiste tuttavia un hack che permette di eseguire il boot direttamente da un disco SATA, ma richiede un saldatore e tanta precisione, ma invalida la garanzia della scheda stessa.
Il kernel utilizzato nella prova è il 3.14.6, del ramo mainline. Questo kernel non è ufficialmente supportato da Wandboard e da Freescale in generale (i kernel ufficiali sono il 3.0.35 ed il 3.10.7), ma è molto stabile e completo, grazie all'elevato numero di patch disponibili, rendendo di fatti questa scheda la più open di tutte.

ODroid-XU3

La configurazione di ODroid-XU3 è un po' laboriosa per via del kernel non proprio aggiornato (il 3.4) e di alcune restrizioni nella reperibilità dei driver closed di Samsung. Di fatti, questa scheda dual CPU in realtà utilizza una CPU per volta in ambiente Linux, per mancanza di firmware compatibili con uboot. Le due CPU vengono utilizzate insieme solamente in ambiente Android.
Il miglior setup ottenibile in ambiente Linux è mediante l'uso dell'immagine reperibile a questo link.
Di base, l'immagine contiene il file system di Ubuntu 13.10 ma è possibile eseguire l'aggiornamento da 'saucy' a 'trusty' modificando il file /etc/apt/sources.list.
ODroid-XU3 supporta sia le schede microSD, sia le piú veloci eMMC: attraverso appositi switch presenti sulla scheda, è possibile selezionare il tipo di boot desiderato.

Radxa Rock

Il team di Radxa definisce la scheda opensource, grazie alla disponibilità dei tool per la creazione di immagini custom. In realtà, Radxa, come tutti gli altri dispositivi Rockchip, soffre la mancanza di driver e moduli kernel open: l'unico kernel configurabile è il 3.0.36+ (è disponibile anche il 3.10, ma molte periferiche vitali non funzionano, tra cui HDMI, NAND Flash, WiFi, Bluetooth, il che lo rende inutilizzabile), che limita di molto la compatibilità con il nuovo hardware, soprattutto con le periferiche USB, quali le Webcam ad alta definizione: in questo caso, solamente un ristretto numero di webcam è compatibile con questa scheda, molte delle quali sono difficili da reperire in Italia ed Europa.
La configurazione della Radxa in sé risulta facile e rapida: il wiki contiene le istruzioni passo-passo per creare una immagine custom e i link ad immagini pre-realizzate. E' possibile configurare il sistema sia sulla NAND Flash interna, sia su una scheda microSD. Per motivi prestazionali, ovviamente la NAND Flash è preferibile.

I Risultati


Il vecchio detto 'più grande è, meglio è' vale anche in questo caso: il chip Exynos5422 (lo stesso del Samsung Galaxy S4, ma con frequenza di clock più alta) permette all'ODroid-XU3 di vincere a mani basse la prova di forza, mentre la Wandboard Quad, 'soffre' a causa della frequenza di clock inferiore, come rappresentato nel grafico:
Percentuale di utilizzo della CPU
Per rendere l'idea delle potenzialità di queste schede, il software è stato compilato ed eseguito su un Desktop PC con processore Intel Core2Quad da 2.6 GHz.
Dal punto di vista delle temperature operative, invece, il risultato è opposto a quello visto precedentemente: eseguendo il test ad una temperatura ambiente di circa 25°C, il Freescale I.MX6 della Wandboard, pur avendo una velocità di clock inferiore ed un sistema di dissipazione passivo, raggiunge temperature massime di picco intorno ai 45°C, mentre RadxaRock ed ODroid raggiungono facilmente i 60°C, complice l'assenza di un dissipatore (sulla Radxa) e la frequenza di clock elevata (su ODroid), fattore che può compromettere il funzionamento delle stesse schede in condizioni più estreme, tipo l'impiego in autoveicoli per sistemi infotainment.
Screenshot dell'applicativo: ODroid-XU3 raggiunge i 60°C nonostante il basso utilizzo della CPU

Conclusione

La scheda più performante, a parità di setup e di task eseguito, è la ODroid-XU3. Sicuramente, l'impossibilità di utilizzare la seconda CPU in ambiente Linux costituisce un freno alle prestazioni massime ottenibili da questa scheda low cost, ma siamo fiduciosi nel lavoro di porting del codice da Android a Linux. Dall'altro lato, la community risulta poco attiva a riguardo di questa nuova scheda, accolta quasi freddamente, forse anche a causa dell'elevato prezzo, rispetto ad altri modelli prodotti da HardKernel. Un altro fattore penalizzante per questa scheda, dal punto di vista di noi Europei è rappresentato dal costo di spedizione, non indifferente: la scheda viene prodotta nella Corea del Sud e le spese di spedizione più dogana raggiungono i 45€, da sommare ai 133€ della scheda stessa, più il costo di eventuali accessori (scheda eMMC, case, cavo seriale, cavo di alimentazione, adattatore WiFi).
Per giudizio personale, considero tuttavia la Wandboard Quad come la vincitrice morale della sfida, grazie al miglior bilanciamento prezzo-prestazioni-temperature-risorse: la CPU è una delle migliori in circolazione (è utilizzata nei sistemi car-infotainment di Audi e Mercedes) e gode del supporto da parte del kernel mainline e del progetto Yocto Linux, che di fatti la rende realmente flessibile e aderente alla filosofia open che accompagna lo spirito dei sistemi DoItYourself, alla base del successo di Raspberry Pi. In Europa, è disponibile presso presso FutureElectronics o DigiKey e quindi priva di eventuali sorprese e costi nascosti.
La scheda da evitare è la RadxaRock: lo scarso supporto a periferiche hardware, il kernel non aggiornato e la community praticamente inesistente rendono il prodotto poco flessibile e poco configurabile, nonostante la presenza di un'ottima memoria flash, che offre prestazioni di molto superiori a schede microSD di classe 10 e un prezzo accattivante di soli 99€.
Wandboard Quad: dettaglio del dissipatore passivo. La vincitrice morale del confronto.


Nessun commento:

Posta un commento

Licenza
Licenza Creative Commons

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 3.0 Unported. Questo blog non rappresenta una testata giornalistica, in quanto viene aggiornato senza alcuna periodicità. Non può, pertanto, considerarsi un prodotto editoriale, ai sensi della legge n. 62 del 7/03/2001

Disclaimer immagini

Le immagini utilizzate in questo blog appartengono ai loro rispettivi autori e sono utilizzati per scopi educativi, personali e senza scopo di lucro. Ogni eventuale violazione del copyright non è intenzionale, ma se si riconosce un'immagine protetta da copyright, fatemelo sapere qui, e sarò lieto di aggiungere i credits o modificarla o rimuoverla.

Disclaimer images

Images used on this blog belong to their respective authors and are used for educational, personal and no profit purposes. Any eventual copyright infringement is not intentional, but if you recognize a copyrighted image, please let me know here, and I'll happily provide to add the right credits or modify or remove it.