Raspberry Pi 2 anzi, “quattro”


RaspberryB2_Apertura

Annunciato di mattina presto, decine di migliaia di esemplari venduti in poche ore, prestazioni di tutto rispetto, costi immutati, ecco come Raspberry Pi ha deciso di occupare un posto nel nostro futuro.

Eccolo qui. Sulla scrivania, acceso e funzionante, che senza scaldarsi sta elaborando le nostre applicazioni scritte per i Raspberry Pi … precedenti, con prestazioni da strabuzzare gli occhi. Stiamo parlando di Raspberry Pi 2. Stesso aspetto della versione B+ ma un cuore con quattro CPU e un GB di memoria. Chi vive nel mondo dell’informatica da molti anni se l’aspettava, nonostante le affermazioni della Fondazione di qualche tempo fa che indicavano una certa “stabilità” di produzione sui modelli ormai consolidati. Ovviamente questa posizione appariva come un segno di continuità per un prodotto destinato al mondo “educational” per vocazione … di nascita e per statuto. Nella realtà molti piccoli segni lasciavano abbastanza perplessi, ed invitavano a tenere dritte le antenne. Di fondo, per chi ha la mia età, il ricordo delle affermazioni del Sig. Moore, co-fondatore di Intel, che nel 1965 aveva costatato che dal 1959 ad allora circa ogni  18 mesi il numero di transistor contenuto nei microcontrollori raddoppiava e, di conseguenza, aumentava proporzionalmente la loro capacità di elaborazione, mentre i costi si riducevano in modo inversamente proporzionale. Come si può vedere in Fig. 1 tale andamento si è verificato sino ad oggi, con scarsa varianza, tanto che le sue costatazioni sono state promosse al rango di legge, quella nota come “prima legge di Moore”.

RB_Fig01

Quindi, a rigore di logica, anche Raspberry Pi avrebbe dovuto farci i conti. A rafforzare la convinzione anche il continuo apparire di microcomputer, “cloni” di “Raspberry Pi”, con CPU più potenti e con sistemi operativi e applicazioni scarsamente compatibili tra di loro. Ultimamente, anche da parte della fondazione Raspberry Pi, i rilasci delle distribuzioni si sono fatti più frequenti, con modifiche alla partizione di “root” … sospette, come l’apparire dei file di configurazione hardware .dtb, dei quali parleremo in seguito. Infine il momento storico nel quale stiamo vivendo, classificato come di profonda crisi. Ma da che esiste il mondo i periodi di crisi sono quelli nei quali maturano le idee e le soluzioni più rivoluzionarie, che segneranno il cammino per il prossimo periodo di crescita e benessere.

Chiaramente i periodi di crisi sono accompagnati anche da disparità, da tecnologie che perdono importanza e redditività economica, in contrapposizione ad altre che appaiono sulla scena in modo dirompente. Alcune avranno vita breve, altre sono destinate a durare e sostenere per lungo tempo la rinascita. Probabilmente una di quelle destinate a durare è la fondazione Raspberry Pi che, almeno a nostro parere, sta gestendo al meglio la spinta innovativa mantenendo la compatibilità applicativa tra le versioni di prodotti vecchi e nuovi, comportamento che nel passato ha costituito il motivo principale della sopravvivenza, anche sino ai giorni nostri, delle aziende ad alto contenuto tecnologico.

Il nostro modo di verificarlo è stato sfilare la SD Card con una nostra applicazione attualmente in sviluppo, per la verità che gira abbastanza al limite delle risorse sui Raspberry Pi attuali, ed inserirla nel nuovo … mostro. Tutto è partito senza esitazioni con prestazioni decisamente non confrontabili. Ma andiamo con ordine. Innanzi tutto vediamo cosa

è cambiato nella carrozzeria e sotto il cofano del nuovo Raspberry Pi 2 e cosa non è cambiato: le dimensioni, i fori di montaggio, la disposizione dei connettori e dello slot per la SD Card. Così è possibile riutilizzare contenitori e alloggiamenti esistenti. Chiaramente è cambiata la disposizione dei componenti sul circuito stampato, viste le accresciute dimensione e numero dei principali chip. Ah, dimenticavo, non è cambiato il prezzo rispetto alla versione precedente. Questo, sempre per la “legge” di Moore. Vediamo invece le caratteristiche tecniche, dove i cambiamenti si vedono, e come.

Caratteristiche tecniche

Per riconoscere se quella che avete in mano è un Raspberry Pi 2 od un “vecchio” Rasperry Pi B+ potete analizzare i seguenti elementi, visibili nelle Fig. 2 e Fig. 3 assieme alle indicazioni del posizionamento dei principali componenti.

Per primo la scritta sulla parte superiore del circuito stampato “Raspberry Pi 2 – Model B”. Poi il processore con il logo Broadcom, sempre sulla parte superiore del circuito stampato, Fig. 2:

RB_Fig02

ed il chip con la memoria RAM situato invece nella parte inferiore, Fig. 3:

RB_Fig03

Le caratteristiche principali sono:

  • Processore Broadcom BCM2836 con CPU ARM Cortex-A7 900MHz quad-core
  • Memoria: 1GB LPDDR2 SDRAM

Il resto è equivalente a Raspberry Pi B+:

  • Processore Video: VideoCore IV
  • 4 porte USB standard su bus dedicato
  • Un ingresso Ethernet 10/100 Mb
  • Uscita video HDMI e A/V (i terminali del connettore sono visibili in Fig. 4)
  • Connettore GPIO da 40 pin con 26 pin di I/O, bus UART, I2C, SPI
  • Un connettore CSI (Camera serial Interface)
  • Un connettore DSI (Display Serial Interface)
  • Una porta micro USB per l’alimentazione per la quale si raccomanda un alimentatore da 2A, in quanto il consumo, senza periferiche collegate, può raggiungere i 700 mA, a 5V, che vengono superati non appena si collega qualche periferica USB.

RB_Fig04

In Fig. 5 è visibile il pinout del GPIO di Raspberry Pi 2, identico a quello di Raspberry Pi B+:

RB_Fig05

In Fig. 6  possiamo verificare la presenza delle quattro CPU, ottenuta con il comando:

cat /proc/cpuinfo

RB_Fig06

già anticipata dai quattro lamponi presenti nella schermata dei messaggi di console che accompagnano il processo di “boot” di Raspberry Pi.

In Fig. 7 è visibile la quantità di memoria disponibile ed utilizzata:

RB_Fig.07

Grande attenzione alla compatibilità

Questo elenco di caratteristiche potrebbe far pensare ad un semplice upgrade delle caratteristiche di un microcomputer di successo, per adeguarlo alle possibilità offerte dalle nuove tecnologie. Invece, a nostro parere, c’è molto di più. In particolare la volontà della fondazione di salvaguardare gli investimenti dedicati allo sviluppo di software, sistemi operativi ed applicazioni utente, adattati e resi particolarmente efficienti per essere utilizzati sui microcomputer Raspberri Py della serie precedente, dotati di processore Broadcom BCM2835.

Stiamo parlando delle migliaia di ore investite, e dei relativi costi economici, destinate al “porting” della distribuzione GNU/Linux Debian per funzionare sull’hardware ARMv6, incluso il supporto hardware per le operazioni in floating point e per rendere stabile e sempre più performante la distribuzione stessa. Altrettanto lavoro ed impegno economico è stato speso nell’ottimizzare per Raspberry Pi, una grande quantità di librerie ed applicazioni Open Source come WebKit, LibreOffice, Scratch, Pixman, XBMC/Kodi, libav e PyPy. Infine lo sforzo profuso nello sviluppare e ottimizzare continuamente strumenti che potessero facilitare la vita agli utilizzatori alle prime armi (e non) come lo strumento NOOBS che permette di gestire diverse distribuzioni GNU/Linux sullo stesso microcomputer, passando con facilità da una all’altra, oppure il configuratore raspi-config o il pacchetto di aggiornamento della partizione di root rpi-update. Inoltre molti sviluppatori indipendenti hanno costruito applicazioni, tutorial, libri e documentazioni basandosi su Raspberry Pi.

Passare ad un nuovo hardware significa spesso invalidare tutto questo patrimonio di investimenti, software e competenze per “ricominciare” da capo su nuove piattaforme dalle caratteristiche spesso non compatibili con le precedenti. Da questo problema non sono state e non sono immuni nemmeno grandi e grandissime organizzazioni di produzione di hardware e software, nel passato come tuttora. Nello sviluppo della nuova Raspberry Pi 2 tutto questo è stato salvaguardato. Broadcom ha messo a disposizione il nuovo SoC BCM2836 dove la “vecchia” CPU ARMv6 è stata “ritagliata” e sostituita con la nuova Cortex A7 quadricore. Il banco di memoria da 1 Gb è stato collocato nella parte inferiore del circuito stampato, con vantaggio sulle capacità di raffreddamento del processore principale. Il processore Videocore IV è lo stesso del BCM2835.

A questo punto è stato realizzato il porting del kernel di Raspbian per aderire alle specifiche hardware del nuovo Soc. In questa fase è dove si è rivelata vincente l’architettura del sistema operativo GNU/Linux, peraltro progettata da sempre proprio per questo tipo di operazioni. GNU/Linux è un sistema operativo appartenente alla famiglia dei sistemi basati su kernel “monolitici”, con una netta separazione tra “spazio kernel” e “spazio utente”. Lo scopo è di semplificare la vita all’utilizzatore del sistema, interfacciando e “normalizzando” la comunicazione tra le applicazioni e l’hardware e le periferiche fisiche del computer. In estrema sintesi, il kernel (nocciolo) del sistema operativo, tra l’altro,  si occupa di interfacciare l’hardware (CPU, memorie, bus, periferiche fisiche) e di fornire un primo livello di driver “standardizzati”. Lo strato successivo, si occupa di semplificare ulteriormente le modalità di comunicazione con le periferiche, normalizzando il tutto e rendendolo “visibile” all’utilizzatore finale attraverso il file system “virtuale”, unica e sola “finestra” disponibile all’utente per comunicare con il sistema fisico.

Di fatto il file system virtuale costituisce il confine tra quello che abbiamo definito “spazio kernel” e lo “spazio utente” dove scriviamo e/o elaboriamo le nostre applicazioni. L’architettura di GNU/Linux è stata descritta già diverse volte nella rivista e nel libro “Raspberry Pi – Il mio primo Linux embedded” (che, tra l’altro, mantiene, in gran parte, la sua validità anche per quanto riguarda Raspberry Pi 2). Per quanto riguarda i componenti al di fuori del kernel non sono ancora stati ottimizzati per la nuova CPU, in modo da mantenere la compatibilità con le schede precedenti. Questo avverrà, a detta della fondazione, nel tempo e selezionando accuratamente quali librerie aggiornare per ottenere il miglior compromesso di funzionalità, stabilità e prestazioni da entrambi gli ambienti. Già da subito, tra le altre novità degne di nota la disponibilità di nuove distribuzioni di sistemi operativi finalizzati alla nuova versione, tra le quali Snappy Ubuntu Core for Developers, Fig.8:

RB_Fig08

già disponibile e scaricabile in versione alpha e … udite, udite Windows 10 for Raspberry Pi, al momento allo stato di annuncio, ma che sembra sarà distribuito gratuitamente agli sviluppatori, Fig.9:

RB_Fig09

Entrambe queste distribuzioni sono orientate allo sviluppo di applicazioni per quello che viene definito IoT (Internet of Thing), un universo in fermento che, nel futuro, dovrebbe vedere un mondo sempre più interconnesso, ma i contorni del quale sono ancora in corso di definizione, almeno questo è il mio parere personale. Ciò che è importante della presenza di queste due distribuzioni nell’elenco ufficiale è l’attenzione ed il conseguente supporto, in particolare finanziario, che i due competitor sul mercato Microsoft per quanto riguarda Windows 10 e Canonical per Ubuntu Snappy stanno ponendo nei confronti dei prodotti della fondazione Raspberry Pi, anche se non esclusiva. Il punto sostanziale è la presa d’atto da parte dei produttori mondiali dello spostamento dell’asse dello sviluppo dell’informatica sempre più verso applicazioni in campi quantomeno “non tradizionali”, per il mondo dell’informatica, come auto motive, automazione industriale, casalinga e ambientale, mobile, in quantità e pervasività sempre più accentuate.

Accendiamo Raspberry Pi 2

Per “dare vita” al nostro nuovo Raspberry Pi abbiamo diverse possibilità, la prima è di scaricare la nuova immagine della distribuzione Raspbian, oppure lo strumento NOOBS, dal sito ufficiale di Raspberry Pi, trasferire l’immagine su una micro SD Card (attenzione, è necessario utilizzare una micro SD Card, come già richiesto per Raspberry Pi B+; le SD Card in formato standard non sono più utilizzabili, anche se da tempo, pressoché tutte le SD Card in commercio sono costituite da una micro SD Card ed un adattatore), inserirla nell’apposito slot sul microcomputer e collegare l’alimentatore per mezzo del connettore micro USB. Questo appena descritto, è sicuramente il metodo da preferire, per chi, con l’occasione, si avvicina per la prima volta a Raspberry Pi.

Per chi è un utilizzatore delle versioni precedenti di Raspberry Pi può verificare che le distribuzioni precedenti a quella datata 31-1-2015 non possono, ovviamente funzionare sul nuovo microcontrollore. In questa situazione una possibilità è fare un salvataggio dei propri file, partire da una distribuzione “fresca” ed eseguire il restore dei nostri file. In questo modo dovremo però anche reinstallare tutti i pacchetti che ci necessitano e riconfigurarli secondo le nostre necessità. Una mole di lavoro che nasconde notevoli insidie e quantomeno la necessità di rieseguire i test di tutte le funzionalità. Noi abbiamo preferito la terza via, che è probabilmente il metodo da preferire nel caso si utilizzi la distribuzione Raspbian di GNU/Linux. Anzi, abbiamo voluto sottoporre il nuovo gioiello alla prova della compatibilità nel modo più … rude possibile.

Alcune SD Card della collezione che utilizziamo per lavoro risalgono alle prime distribuzioni di Raspbian apparse nel 2012. Ovviamente sono state sempre aggiornate con i comandi che vi raccomandiamo in ogni articolo ed in alcuni casi sono state clonate trasferendo l’immagine dalla SD Card originale ad una più nuova, e di tipo micro. Per inciso vi raccomandiamo di eseguire regolarmente la “manutenzione” delle SD Card in quanto il loro utilizzo sui microcomputer ne “accorcia” la vita. Le SD Card hanno un numero massimo di scritture possibili, numeri molto grandi ed in continua crescita, che garantiscono vita eterna nel caso vengano utilizzate in macchine fotografiche, smartphone, tablet e simili. Nel caso di microcomputer con applicazioni ad alta intensità di scrittura, in particolare con l’utilizzo di database, le scritture si concentrano in gran numero sulla stessa “zona” dell’area di memoria della SD Card, e prima o poi il numero massimo di scritture viene raggiunto con conseguente blocco dell’applicazione e perdita di dati. Quindi, se sviluppate applicazioni “professionali” con Raspberry Pi, cosa che diventa assolutamente possibile con la nuova versione, è fondamentale tenere conto e progettare accuratamente le funzionalità di back up e salvaguardia dei dati.

Detto questo abbiamo preso una delle nostre SD Card storiche e, utilizzando un Raspberry Pi “tradizionale”, dopo averlo collegato  alla rete, abbiamo eseguito i comandi che permettono di aggiornare completamente la distribuzione per farla funzionare sul nuovo Raspberry Pi, kernel compreso. Se siete nella nostra situazione vi raccomandiamo questo metodo. Come prima operazione vi consigliamo di realizzare un’immagine di backup della SD Card, utilizzando WinDiskImager. Poi aggiorniamo la distribuzione nel modo consueto, loggati con l’utente “root”, con i comandi:

apt-get update
apt-get upgrade
apt-get dist-upgrade 

Se la distribuzione non viene aggiornata da qualche tempo, il processo si rivelerà abbastanza lungo. Da qualche versione la distribuzione Raspbian adotta una nuova versione dell’interfaccia grafica Lxde (Lightweight X11 Desktop Environment), che prevede la barra delle applicazioni in alto nello schermo, un desktop vuoto da popolare con le applicazioni che preferiamo ed il menu “Start” in alto a sinistra. Aggiorniamo la distribuzione alla nuova interfaccia grafica con il comando:

apt-get install raspberrypi-ui-mods 

Dopo questa operazione è opportuno “ripulire” la distribuzione con i comandi:

apt-get autoremove 

che elimina eventuali pacchetti non più utilizzati e:

apt-get purge 

che elimina i file di configurazione non più utilizzati. Infine aggiorniamo la partizione di root con il comando:

rpi-update 

se ottenete un errore del tipo “command not found” potete installare lo strumento di upgrade con il comando:

apt-get install rpi-update 

Fatto tutto? Potete spegnere il “vecchio” Raspberry Pi trasferire la SD Card sul nuovo modello Raspberry Pi 2 e collegare l’alimentazione. Lanciate le vostre applicazioni. Misurate le prestazioni sia visivamente che con i comandi

top 

per l’utilizzo di cpu (si esce con il tasto “q”) e:

free –m 

per l’utilizzo di memoria.

Ovviamente la stessa SD Card è in grado di funzionare su tutte le versioni di Raspberry Pi. Questo è quello che consideriamo il vero concetto di retro compatibilità. Per capire di più su come la distribuzione Raspian è stata configurata per ottenere questo risultato, andiamo ad analizzare la partizione di root, il cui contenuto è visibile nella Fig. 10:

RB_Fig10

Se abbiamo ispezionato in passato la partizione di root troviamo la presenza di un certo numero di file aggiuntivi rispetto ai soliti: il file immagine del kernel Linux, i file start.elf, config.txt e cmdline.txt. Fondamentalmente troviamo l’immagine di un secondo kernel di nome “kernel7.img”, un chiaro riferimento alla nuova cpu Cortex A7 ed alcuni file con suffisso .dtb (device tree blob).

I file .dtb sono sempre più utilizzati per comunicare la struttura dell’hardware da parte del bootloader al kernel durante il processo di boot. Di fatto il file.dtb è un database compilato in formato binario che contiene la descrizione della struttura dell’hardware in uno standard comprensibile sia al bootloader che al kernel. Con questa configurazione, a seconda della versione di Raspberry Pi dove viene installata la SD Card, durante il processo di boot viene caricato il corretto bootloader di stage 1, al quale fa seguito il caricamento del corretto kernel con i rispettivi file di configurazione. I vecchi file di configurazione config.txt e cmdline.txt sono tuttora condivisi da entrambi i sistemi mantenendo ancora una volta la compatibilità applicativa tra le due generazioni di prodotti. Nel nostro caso, per esempio, in una delle nostre applicazioni è previsto l’utilizzo per la partizione di root, di un hard disk esterno collegato via usb. Dopo il processo di aggiornamento che vi abbiamo indicato, la soluzione con hard disk esterno, che richiede di personalizzare i file cmdline.txt ed /etc/fstab (vedi libro), ha funzionato a dovere su entrambe le configurazioni, come visibile in Fig. 11:

RB_Fig11

dal frammento dei messaggi di boot di Raspberry Pi 2. Lo strumento di configurazione “raspi-config” è stato arricchito con nuove funzionalità. Oltre alle solite funzioni che permettono di: espandere la partizione di root, lanciare l’interfaccia grafica al boot, eseguire l’overclocking della CPU, abilitare la Camera PI ed altre, visibili in Fig. 12. scegliendo la voce “Advanced Options” si accede al menu di secondo livello, che permette di eseguire diverse configurazioni che prima dovevano essere eseguite da linea di comando.

In Fig. 13 oltre alle funzionalità tradizionali come “Overscan” che permette di gestire le “cornici” attorno allo schermo, se necessario, SSH che permette di abilitare e disabilitare il server per l’accesso da remoto, memory split per assegnare più o meno memoria alla GPU video e hostname per cambiare nome al microcomputer, assegnare o meno il bus seriale alla console di sistema e configurare l’uscita audio verso il connettore HDMI oppure verso il jack da 3,5mm.
Particolare attenzione va dedicata alle funzioni per abilitare e disabilitare i bus I2C e SPI. Il vecchio metodo della blacklist e del caricamento del driver con “modprobe” deve essere integrato con l’attivazione dei bus i2C e/o SPI utilizzando le funzioni messe a disposizione.

 

RB_Fig12_13_14

Dal punto di vista delle prestazioni c’è poco da dire, niente di comparabile rispetto alle versioni precedenti, i benchmark reperibili sul web danno un incremento delle prestazioni di circa sei volte quelle attuali. Ovviamente dipende dal tipo di applicazioni e dal modo nel quale queste utilizzano le risorse. Per quanto riguarda uno dei nostri progetti, che presenteremo presto sulla rivista, la schermata principale del quale è visibile in Fig. 14. Le Fig. 15 e Fig. 16, che riportano il consumo di CPU rispettivamente su Raspberry Pi B+ e 2, parlano da sole.

RB_Fig15_16

Di fatto, allo stato attuale, Raspberry Pi 2 può essere paragonato ad un personal computer di fascia bassa, dove è possibile eseguire le normali applicazioni d’ufficio e didattiche in modo più che accettabile. Ne sono un esempio LibreOffice e Geogebra, quest’ultimo non certo parco nell’utilizzo di risorse, che vi mostriamo nelle Fig. 17:

RB_Fig17

e Figura 18:

RB_Fig18

Definitivamente uscita dall’essere confinata al campo hobbistico ed alle applicazioni poco esose in termini di risorse, Raspberry Pi 2 approda nel mondo professionale a tutti gli effetti, oltre che apparire a pieno titolo la soluzione ad oggi più adatta nella maggior parte delle applicazioni didattiche, risolvendo anche questioni organizzative finora difficili da risolvere.

Pensiamo per esempio ad un laboratorio scolastico, con un certo numero di personal computer installati, sul quale ruotano gli studenti di numerose classi, magari con esigenze applicative differenti a secondo dell’indirizzo e del livello del corso seguito. Oggi, questa architettura, richiede un’amministrazione del parco macchine, degli utenti e dei permessi, abbastanza complesso, se vogliamo che ciascuno abbia a disposizione le risorse necessarie a svolgere i compiti assegnati senza interferire con il lavoro degli altri studenti.

Con le dotazioni attuali basate su sistemi Microsoft alcune tipologie di esercitazioni sono abbastanza complesse da portare a termine. Pensiamo alla disciplina di progettazione e realizzazione di reti di comunicazioni, in particolare TCP/IP, dove sia necessario configurare sistemi con diversi indirizzi IP assegnati alla stessa interfaccia di rete, configurare router, firewall, access point, VPN e realizzare applicazioni ponte e broker basate su socket TCP/IP. Con una “manciata” di Raspberry Pi ed un investimento economico equivalente all’acquisto di un paio di personal computer tradizionali è possibile allestire un intero laboratorio di reti e informatica in senso più generale, senza necessità di costi aggiuntivi per l’acquisto di licenze di pacchetti di applicazioni di ufficio, o di ambienti di sviluppo applicazioni. E infatti lo scopo principale che si prefigge la fondazione Raspberry Pi è proprio fornire strumenti didattici open source, economici ed al passo con la tecnologia emergente. Sempre dal punto di vista organizzativo, provate a pensare ciascun studente che entra in laboratorio con la propria SD Card con la situazione aggiornata all’ultima esercitazione svolta, che il laboratorio sia lo stesso od un altro, senza interferenze con altri studenti.

La stessa SD Card potrà poi essere usata sul Raspberry di casa per continuare il lavoro iniziato a scuola ed approfondire gli argomenti trattati. Diverse SD Card permettono di configurare il laboratorio con architetture diverse a seconda delle esigenze, sottoreti, server, client, ecc. Senza dimenticare, al riguardo, che una legge del 2012 richiede alle amministrazioni pubbliche di preferire l’adozione di soluzioni open, nel caso queste siano disponibili.

Per concludere, normalmente teniamo sulla scrivania le soluzioni migliori che appaiono sul mercato per utilizzarle nei nostri progetti. Questa volta il personal computer che utilizziamo normalmente ci sta guardando preoccupato, molto probabilmente ha intravisto qualcosa in grado di … rottamarlo. Forse non è proprio arrivato il momento definitivo ma come apparirà Raspberry Pi 3 non vi saranno più dubbi. Già, la “legge” di Moore. A proposito, come avrete notato in Fig. 17, questo articolo lo abbiamo scritto con LibreOffice sul nuovo Raspberry Pi, utilizzando schermo, tastiera e mouse del vecchio PC. Ora lo riaccendo, altrimenti si offende.

Presso Futura Elettronica è disponibile a magazzino sia la board Raspberry Pi 2 che lo Starter Kit RASPKITV4.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ricevi un avviso se ci sono nuovi commenti. Oppure iscriviti senza commentare.