Il 29 febbraio 2012 la Raspberry Pi Foundation ha messo in vendita il Model B, un single-board computer da 35 dollari costruito attorno al SoC Broadcom BCM2835. Le prime decine di migliaia di unità sono finite in poche ore e i siti dei due distributori, RS Components e Premier Farnell, sono andati giù sotto il carico. Tolto il clamore, la scheda interessa chi insegna informatica per un motivo preciso: costa abbastanza poco da poterla rompere, ed è abbastanza completa da poterla capire fino in fondo.

Contesto

La fondazione nasce nel 2009 da un’osservazione di Eben Upton e altri al Computer Laboratory di Cambridge. Gli studenti che si iscrivono a informatica arrivano con meno pratica di programmazione rispetto alla generazione cresciuta su macchine come il BBC Micro, dove accendere il computer voleva dire trovarsi davanti un prompt e un interprete BASIC. L’ipotesi è che il calo dipenda anche dalla scomparsa, in casa, di un computer su cui sperimentare senza la paura di danneggiare lo strumento di lavoro di famiglia. Una macchina da 35 dollari rimette quel margine di sperimentazione alla portata di una scuola o di un singolo studente.

Architettura

Il Model B monta il BCM2835, un SoC che integra una CPU ARM1176JZF-S a 700 MHz (architettura ARMv6, con unità in virgola mobile) e una GPU VideoCore IV. La RAM è 256 MB. La scheda non ha storage di massa integrato: il sistema operativo si avvia da SD card. Per la connettività ci sono due porte USB 2.0, una porta Ethernet 10/100, uscita video HDMI e composita, jack audio analogico da 3,5 mm e un header GPIO a 26 pin, che espone linee digitali general-purpose insieme a bus seriali come I2C, SPI e UART. L’alimentazione è 5 V via micro-USB, con consumi nell’ordine di pochi watt.

Il sistema operativo di riferimento al lancio è una Debian Squeeze adattata per ARMv6. Essendo Linux su una piattaforma documentata, l’intero stack — kernel, init, shell, toolchain — è ispezionabile dallo studente, che può ricompilare, sostituire componenti e leggere il codice di ciò che sta usando. È questa la proprietà didattica che la fondazione cerca: un dispositivo di cui si possono seguire tutti gli strati, non solo eseguirne i programmi.

Il punto critico

Uno strato però non si lascia ispezionare, ed è il primo a girare. Su questa piattaforma a partire non è la CPU ARM ma la GPU VideoCore. All’accensione un piccolo core dentro la GPU esegue un bootloader di primo stadio in ROM, che monta la SD card e carica bootcode.bin; questo attiva la SDRAM e carica a sua volta start.elf, il firmware della GPU, che inizializza il sistema e infine passa il controllo alla CPU ARM facendole caricare il kernel Linux. In pratica è la GPU a governare l’avvio, e la CPU dipende da lei: l’ordine gerarchico è rovesciato rispetto a quello che ci si aspetta.

I file bootcode.bin e start.elf sono binari proprietari di Broadcom, distribuiti senza sorgenti. La sequenza più a monte dell’avvio — quella che decide quanta memoria assegnare alla CPU e quanta alla GPU, e che inizializza l’hardware video — resta quindi una scatola chiusa anche su una scheda nata per essere aperta e studiata. Per chi insegna è un dettaglio onesto da mettere sul tavolo: l’ispezionabilità di un sistema non è una proprietà del dispositivo nel suo insieme, ma cambia strato per strato, e il confine di ciò che si può leggere coincide spesso con il confine commerciale di chi ha fornito il silicio.

Implicazioni per la didattica

L’header GPIO è il motivo per cui il Model B funziona come strumento didattico anche al di là del software. Un pin che si porta a livello alto o basso da una riga di shell, e un LED che si accende di conseguenza, rendono tangibile un confine che a lezione resta spesso astratto: quello tra un valore in memoria e un effetto fisico nel mondo. Da lì si sale di complessità per gradi — un pulsante letto in ingresso, un sensore di temperatura su I2C, un controllo software che diventa un comportamento osservabile — senza dover prima costruire un’intera infrastruttura. E siccome la stessa scheda è un computer Linux completo, si lavora in un linguaggio di alto livello e si parla comunque ai pin, senza passare per un toolchain di cross-compilazione.

La SD card come unico supporto di boot ha un valore pedagogico che si sottovaluta facilmente. Un’immagine corrotta da un esperimento finito male si riscrive in pochi minuti, e una classe può lavorare su immagini diverse cambiando semplicemente scheda. Il costo di un errore tende a zero, e con esso scende la soglia oltre la quale uno studente smette di provare per paura di rompere qualcosa. È la stessa logica che, secondo la fondazione, rendeva fertile il BBC Micro: una macchina dedicata, dove sbagliare non ha conseguenze.

Limiti

Conviene tenere le aspettative ancorate ai numeri. Una CPU ARMv6 a 700 MHz con 256 MB di RAM è una macchina modesta: l’ambiente desktop grafico è lento, compilare software non banale richiede pazienza e diversi pacchetti pensati per ARMv7 non girano senza ricompilazione. Avvio e storage dipendono interamente dalla SD card, e spesso sono il suo throughput e la sua affidabilità sotto scrittura ripetuta a fare da collo di bottiglia reale, più della CPU.

C’è poi il rovescio dell’economicità. Una scheda da 35 dollari senza enclosure, senza alimentatore garantito e senza SD card nel prezzo scarica parte del costo e della cura sull’utente, e in una scuola questo si traduce in lavoro di allestimento e in guasti da alimentazione marginale che sembrano bug software. Meglio sapere in anticipo dove la macchina è fragile, perché quel sapere fa parte di ciò che, su una piattaforma del genere, si finisce per insegnare.


Immagine di copertina: Scheda Raspberry Pi 1 Model B vista dall’alto su un piano chiaro: il circuito stampato verde con il SoC Broadcom centrale, due porte… — foto di Justin417, CC BY-SA 3.0 — https://commons.wikimedia.org/wiki/File:Raspberry_Pi_Model_B.JPG