Sviluppo rapido con Raspberry Pi 3 (vs Scarce Raspberry Pi Zero)

Contributo di Editori nordamericani di DigiKey

Le schede Raspberry Pi, in tutte le loro iterazioni sono state una manna per gli sviluppatori, sia a livello professionale che hobbistico. Nonostante Raspberry Pi Zero abbia ricevuto molta attenzione, non è facile da procurare. Per fortuna i progettisti hanno a disposizione molte altre schede all'interno della famiglia Pi, con caratteristiche superiori per soddisfare le esigenze delle loro applicazioni.

Grazie al processore quad core, il modello Raspberry Pi 3 offre una memoria doppia rispetto alla scheda Pi Zero single core. Agli sviluppatori che richiedono un ingombro contenuto da progetto, ma per i quali le prestazioni del modello Pi Zero non sono sufficienti, il modulo di elaborazione Raspberry Pi Compute Module 3 (CM3) offre sia le alte prestazioni della scheda Pi 3, sia l'ingombro delle dimensioni di una carta di credito del modello Pi Zero. Grazie al vasto assortimento di schede hardware aggiuntive e di software facilmente reperibili, gli sviluppatori dispongono degli strumenti necessari per soddisfare un'ampia gamma di requisiti applicativi con la scheda Pi 3 e il modulo CM3.

Operazioni iniziali con le schede Raspberry Pi

I sistemi Raspberry Pi offrono una solida base open-source che consente a fornitori, sviluppatori terzi e utenti di avvalersi di un ecosistema sempre più ricco di software e hardware, nonché di contribuirvi. Sviluppato in origine da Raspberry Pi Foundation come piattaforma a basso costo per l'insegnamento delle tecniche di elaborazione, l'hardware Pi si è evoluto fino a diventare una piattaforma potente ma economica, idonea per la prototipazione rapida e, in misura crescente, una piattaforma di elaborazione integrabile.

Il software Pi offre un analogo livello di prestazioni e accessibilità. Le schede Pi si basano sul sistema Raspbian, una versione del sistema operativo (OS) GNU/Linux ottimizzata per le schede Raspberry Pi. Gli sviluppatori possono inserire in un'interfaccia SD della scheda Pi una scheda SD contenente l'installatore di Raspbian, NOOBS, e completare in pochi secondi le operazioni iniziali in un ambiente Linux con cui hanno familiarità.

Grazie al grande dinamismo della comunità Raspberry Pi, gli sviluppatori con requisiti specifici hanno la possibilità di scegliere fra OS alternativi quali, fra gli altri, Ubuntu desktop, Ubuntu Core, Windows 10 IoT Core, Linux-based Open Source Media Center (OSMC) e RISC OS. Per tali operazioni di distribuzione, gli sviluppatori non devono fare altro che caricare il sistema con un'immagine scaricata e archiviata su una scheda SD. I progettisti di software possono infine avvalersi di una ricca serie di librerie software disponibili come supporto per le attività di sviluppo in un'ampia gamma di linguaggi di programmazione.

Slice Pi

A livello fisico, l'hardware Pi si è evoluto secondo tre direttrici principali, che presentano alcune differenze di rilievo in termini di prestazioni, dimensioni e funzionalità (tabella 1). Il modello Pi Zero introdotto di recente si distingue per le sue piccole dimensioni e funge da scheda entry-level, con un costo e un ingombro inferiori a fronte della rinuncia ad alcuni elementi funzionali. Il modello Pi 3 e il modulo CM3, sua variante integrata, sono viceversa dotati di un processore quad core ad alte prestazioni e di un'ampia memoria, offrendo quindi il genere di robusta piattaforma hardware necessaria per le applicazioni embedded. Il modulo CM3 offre inoltre un ingombro quasi uguale a quello della scheda Pi Zero, ma senza riduzioni di prestazioni o funzionalità.

Pi Processore Memoria Dimensioni I/O
Pi 3 BCM2837 (ARM Cortex-A53 quad core a 1,2 GHz e 64 bit con GPU dual core VideoCore IV)

1 GB di RAM

NVM: slot per schede Micro SD

85 x 56 mm

Basetta Pi a 40 pin

40 GPIO

Wi-Fi 802.11n

Bluetooth 4.1

Ethernet

USB

HDMI

Porta AV

Interfaccia per foto/videocamera (CSI)

Interfaccia per display (DSI)

Pi CM3 Come Pi 3

1 GB di RAM

NVM: eMMC Flash da 4 GB su scheda

67,6 x 31 mm

SODIMM a 200 pin

48 GPIO

2 x I2C

2 x SPI

2 x UART

2 x SD/SDIO

HDMI

USB

DPI, SMI, CSI e DSI

Pi Zero BCM2835 (ARM1176 single core a 1 GHz)

512 MB di RAM

NVM: slot per schede Micro SD

65 x 30 mm

Foro passante Pi a 40 pin

HDMI

USB

Basetta compatibile con hardware HAT

Basette per video composito e ripristino

Connettore per foto/videocamera CSI

Tabella 1: Confronto fra i modelli Raspberry Pi 3, Compute Module 3 (CM3) e Pi Zero (fonte: DigiKey, elaborazione basata su dati di Raspberry Pi Foundation)

La disponibilità di interfacce hardware standard è un fattore critico per il successo di una piattaforma come Raspberry Pi. Le schede Pi più recenti, fra cui i modelli Pi 3 e Pi Zero, offrono la medesima interfaccia a 40 pin, fra cui 28 pin GPIO, alcuni dei quali fungono anche da collegamenti I2C, SPI e UART (Figura 1). Oltre ai pin GPIO, questa interfaccia standard Pi fornisce linee a 3,3 V, 5 V, di massa e di altro tipo, come EEPROM ID. Tale piedinatura comune consente agli utenti Pi di utilizzare un'ampia scelta di schede aggiuntive di terzi, tutte realizzate a fronte di questa interfaccia standard.

Schema delle schede Pi, inclusi i modelli Pi 3 e Pi Zero

Figura 1: Un'interfaccia a 40 pin comune alle schede Pi, compresi i modelli Pi 3 e Pi Zero, offre linee GPIO e di altro tipo provenienti dal processore host della scheda e dai componenti associati. (Immagine per gentile concessione di Raspberry Pi Foundation)

Per gli utenti del modello Pi Zero, tuttavia, tale interfaccia a 40 pin viene fornita sotto forma di fori passanti metallizzati sulla scheda PCB, che richiedono all'utente di installare a pressione o saldare una basetta per connettore a foro passante. Per il modello Pi 3 la basetta per connettore viene fornita di serie (Figura 2) e così pure i connettori per caratteristiche quali Wi-Fi ed Ethernet, non disponibili con la scheda Pi Zero, come descritto nella tabella.

Immagine delle schede Pi Zero e Pi 3

Figura 2: Riguardo all'interfaccia a 40 pin a standard Pi, la scheda Pi Zero (a) offre soltanto collegamenti a foro passante, mentre la scheda Pi 3 (b) include un connettore a 40 pin pronto per l'inserimento di schede aggiuntive, dette hardware fissato superiormente (HAT, Hardware Attached on Top). (Immagine per gentile concessione di Raspberry Pi Foundation)

Hardware aggiuntivo

Poiché l'interfaccia Pi fornisce alimentazione, massa e GPIO, gli sviluppatori possono cablare i loro circuiti discreti direttamente sui pin dell'interfaccia GPIO della scheda Pi 3. Invece di cablare i circuiti ex novo, la piattaforma Pi offre tuttavia un modo più efficace di espandere le funzionalità dei sistemi Pi 3. In questo caso, la basetta a 40 pin disponibile sulla scheda Pi 3 fornisce un'interfaccia standard per le schede aggiuntive configurate come hardware fissato superiormente (HAT, Hardware Attached on Top). Questa semplice interfaccia elettrica e meccanica consente agli sviluppatori di espandere rapidamente la scheda base Pi 3 con funzionalità specifiche per l'applicazione in questione. Gli sviluppatori non devono fare altro che premere un elemento HAT compatibile con Pi sul connettore a 40 pin, e possono inoltre creare stack di schede aggiuntive che condividono tutte tale interfaccia singola.

Gli sviluppatori possono avvalersi di un notevole parco di schede aggiuntive. L'hardware Pi Sense HAT include ad esempio una serie completa di sensori necessari per le applicazioni di orientamento o rilevamento dell'ambiente. Fornisce inoltre una matrice di LED e un joystick a cinque pulsanti per le interazioni con l'utente e le sue retroazioni (Figura 3).

Immagine di Pi Sense HAT

Figura 3: Per aggiungere funzionalità a una scheda Pi, gli sviluppatori devono semplicemente collegare dispositivi HAT come questo Pi Sense HAT, che fornisce vari sensori oltre a una matrice a LED e a un joystick a cinque pulsanti per le interazioni con l'utente. (Immagine per gentile concessione di Raspberry Pi Foundation)

L'hardware Sense HAT è di per sé un sottosistema sofisticato: oltre a una propria MCU ATtiny a 8 bit (ATTINY88) di Microchip Technology, questa scheda aggiuntiva include un'unità di misura inerziale (IMU, Inertial Measurement Unit) LSM9DS1 di STMicroelectronics, un sensore di umidità/temperatura HTS221 e un sensore di pressione LPS25HBTR, sempre di STMicroelectronics.

Implementazione semplice

Come per altre schede aggiuntive compatibili con Pi, gli sviluppatori collegano Sense HAT al loro sistema Pi 3 semplicemente inserendo la scheda HAT nella basetta a 40 pin presente sulla scheda the Pi 3. L'interfaccia software è altrettanto agevole: la libreria Sense HAT Python ufficialmente supportata nasconde le interazioni hardware di basso livello dietro chiamate semplici e intuitive (Listato 1).

from sense_hat import SenseHat

sense = SenseHat()

temp = sense.get_temperature()

print("Temperature: %s C" % temp)

humidity = sense.get_humidity()

print("Humidity: %s %%rH" % humidity)

# get_orientation_degrees returns a Python dictionary

# with keys pitch, roll, and yaw

orientation = sense.get_orientation_degrees()

print("p: {pitch}, r: {roll}, y: {yaw}".format(**orientation))

Listato 1: La libreria Raspberry Pi Sense HAT consente agli sviluppatori di software di acquisire i dati provenienti dall'hardware Sense HAT utilizzando poche chiamate intuitive. (Codice per gentile concessione di Raspberry Pi Foundation)

Oltre ai dispositivi Pi Sense HAT, gli sviluppatori possono utilizzare hardware HAT di terzi in grado di soddisfare la maggior parte dei requisiti applicativi tipici. Il modello 114990831 di Seeed Technology fornisce ad esempio un convertitore digitale/analogico (DAC) a 2 canali a 16 bit e un convertitore analogico/digitale (ADC) a 24 bit con 8 canali di ingresso a terminazione singola o 4 canali con ingresso differenziale. Gli sviluppatori hanno a disposizione elementi aggiuntivi che vanno da un GPS di Seeed a un telemetro a ultrasuoni di DFRobot e a un motore passo-passo di Adafruit e molti altri ancora.

Per gli sviluppatori con requisiti che non è possibile soddisfare tramite le schede aggiuntive esistenti, Seeed Technology offre una scheda di breakout HAT con una serie di componenti incorporati fra cui transistor P-MOS, N-MOS, NPN e PNP.

Nel lavorare con l'hardware HAT, gli sviluppatori possono avvalersi di una serie di strumenti software forniti da Raspberry Pi Foundation, da vari fornitori e da altri membri della comunità Pi. Lo strumento Raspberry Pi raspi-gpio consente ad esempio agli sviluppatori di visualizzare lo stato di un GPIO e di modificarne il comportamento. I programmatori possono inoltre utilizzare il codice C open-source di tale strumento come modello per realizzare proprie routine software di controllo dei GPIO.

Gli sviluppatori hanno anche a disposizione librerie GPIO per linguaggi di livello superiore, come Python. Il modulo Python RPi.GPIO consente agli sviluppatori di controllare ogni aspetto della funzione GPIO a livello di pin con chiamate come GPIO.input(channel) per leggere il valore di un pin GPIO e GPIO.output(channel, state) per impostare uno stato specifico per il pin GPIO specificato.

La libreria Python gpiozero assicura un salto di qualità nella programmazione GPIO grazie ad astrazioni di livello superiore come MotionSensor, LightSensor, LED, Motor e altre ancora. Adottando questo approccio, i programmatori gestiscono l'hardware sottostante leggendone o impostandone lo stato con comandi più intuitivi, come led.on() per accendere un LED, affidandosi alla libreria per la gestione delle sottostanti transazioni GPIO.

Uso di Grove

Lo standard di interfaccia HAT Pi fornisce una base interessante per gli sviluppatori terzi, ma resta comunque vincolato alla piattaforma Pi. L'interfaccia Grove fornisce viceversa una singola base standard trasversale alle piattaforme hardware, attraendo un numero ancora maggiore di sviluppatori di schede aggiuntive. Lo starter kit Grove di Seeed Technology fornisce una scheda HAT compatibile con Pi dotata di vari connettori compatibili con l'interfaccia Grove. Come nel caso di altri HAT, l'hardware HAT Grove viene montato sul connettore a 40 pin della scheda Pi 3 (Figura 4).

Immagine dello starter kit Grove di Seeed Technology

Figura 4: Lo starter kit Grove di Seeed Technology viene montato sul connettore a 40 pin a standard Pi, consentendo agli sviluppatori di potenziare i loro sistemi Pi avvalendosi della vasta gamma di periferiche compatibili con l'interfaccia Grove. (Immagine per gentile concessione di Seeed Technology)

Con l'hardware HAT Grove, gli sviluppatori continuano a disporre della semplicità e delle prestazioni della scheda Pi 3, ma acquisiscono la possibilità di accedere a un'ampia gamma di elementi aggiuntivi compatibili con l'interfaccia Grove, compresi attuatori, sensori di gas, dispositivi di comando per il controllo motori, diffusori, transceiver wireless e molti altri ancora. Anziché collegare le funzionalità aggiuntive direttamente al connettore a 40 pin della scheda Pi 3, gli sviluppatori inseriscono il connettore Grove fornito con i prodotti in questione in uno degli zoccoli Grove presenti sull'hardware HAT Grove (vedere nuovamente la Figura 4).

Gli sviluppatori hanno a disposizione librerie software Grove per C, Java, Node.js, Python e altri linguaggi che consentono loro in modo analogo di inserire le funzionalità Grove nelle loro applicazioni. In questo caso, le routine di livello superiore consentono agli sviluppatori di pensare in termini di acquisizione di dati analogici (Listato 2), affidandosi alle routine di basso livello della libreria per eseguire le corrispondenti transazioni a livello di bit (Listato 3).

# Tweet the temperature, light, and sound levels with our Raspberry Pi

# http://www.dexterindustries.com/GrovePi/projects-for-the-raspberry-pi/raspberry-pi-twitter-sensor-feed/

 

import twitter

import time

import grovepi

import math

 

# Connections

sound_sensor = 0        # port A0

light_sensor = 1        # port A1

temperature_sensor = 2 # port D2

led = 3                 # port D3

 

intro_str = "DI Lab's"

 

# Connect to Twitter

api = twitter.Api(

    consumer_key='YourKey',

    consumer_secret='YourKey',

    access_token_key='YourKey',

    access_token_secret='YourKey'

    )

 

grovepi.pinMode(led,"OUTPUT")

grovepi.analogWrite(led,255)  #turn led to max to show readiness

 

while True:

    # Error handling in case of problems communicating with the GrovePi

    try:

        # Get value from temperature sensor

        [t,h] = grovepi.dht(temperature_sensor,0)

 

        # Get value from light sensor

        light_intensity = grovepi.analogRead(light_sensor)

 

        # Give PWM output to LED

        grovepi.analogWrite(led,light_intensity/4)

 

        # Get sound level

        sound_level = grovepi.analogRead(sound_sensor)

 

        # Post a tweet

        out_str ="%s Temp: %d C, Humidity: %d, Light: %d, Sound: %d" %(intro_str,t,h,light_intensity/10,sound_level)

        print (out_str)

        api.PostUpdate(out_str)

        time.sleep(60)

    except IOError:

        print("Error")

    except KeyboardInterrupt:

        exit()

    except:

        print("Duplicate Tweet or Twitter Refusal")

Listato 2: Gli sviluppatori possono utilizzare una scheda Pi, elementi aggiuntivi Grove e una libreria software Grove per implementare rapidamente applicazioni sofisticate come quella dell'esempio, che emula un processo del tipo Internet degli oggetti per la trasmissione di dati ambientali a un servizio host, in questo caso Twitter. (Codice per gentile concessione di Dexter Industries)

# Read analog value from Pin

def analogRead(pin):

      write_i2c_block(address, aRead_cmd + [pin, unused, unused])

      read_i2c_byte(address)

      number = read_i2c_block(address)

      return number[1] * 256 + number[2]

Listato 3: La libreria software Grove gestisce le operazioni a livello di bit necessarie per accedere alle periferiche hardware, consentendo agli sviluppatori di lavorare invece con chiamate più intuitive come analogRead(pin). (Codice per gentile concessione di Dexter Industries)

Configurazione semplificata

L'aggiunta di nuovo hardware ai sistemi poneva in passato molteplici sfide su più livelli. I progettisti hardware dovevano prevedere idonee interfacce meccaniche ed elettriche. Gli sviluppatori di plicazioni dovevano individuare idonee librerie software, in grado di assicurare il tipo di astrazione necessario per massimizzare la produttività. La scheda Pi 3 e il suo ecosistema eliminano tali sfide grazie al connettore a 40 pin a standard Pi e alle librerie software facilmente reperibili descritti in precedenza. L'architettura Pi va tuttavia ben oltre, liberando gli sviluppatori dall'ulteriore requisito ¾ di individuare e caricare pacchetti di supporto scheda (BSP, Board-Support Package) specifici per l'hardware. I BSP forniscono tipicamente il codice di basso livello necessario per completare l'interfaccia fra il sistema operativo e l'hardware aggiuntivo.

L'architettura Pi solleva in larga misura i suoi utenti dalla necessità di installare e configurare i BSP per i diversi dispositivi hardware. I sistemi Pi utilizzano invece un albero dei dispositivi che offre un meccanismo per caricare i moduli e gestire l'assegnazione delle risorse in modo da evitare conflitti fra i diversi moduli software in competizione per le stesse risorse. Se un dispositivo hardware richiede un software specializzato, l'utente Pi deve soltanto impostare alcune voci di configurazione. Il kernel del sistema operativo individua e carica automaticamente i moduli associati ai corrispondenti dispositivi hardware. La funzionalità I2C di un sistema Pi è ad esempio disabilitata per impostazione predefinita. Gli sviluppatori devono soltanto modificare il file di configurazione, config.txt, per togliere il commento da una riga:

#dtparam=i2c_arm=on

La piattaforma Pi semplifica anche tale operazione. Al momento del bootstrap iniziale, il sistema Raspbian esegue uno strumento di configurazione che presenta all'utente un menu di voci di configurazione, con la possibilità di abilitare varie interfacce.

Per le applicazioni che utilizzano hardware basato su I2C, le librerie di livello superiore, come quelle menzionate in precedenza, sollevano gli sviluppatori dalla necessitò di scrivere del codice al livello delle transazioni I2C. Quando devono effettivamente sviluppare un codice per operazioni I2C speciali, gli sviluppatori dispongono di software quali gli strumenti I2C per Linux, che è possibile utilizzare direttamente o come esempi per la creazione di software I2C personalizzato.

Embedded Pi

Ai progettisti impegnati nell'integrazione dei sistemi Pi all'interno di altri prodotti, il modulo CM3 annunciato di recente offre una compatta soluzione Pi drop-in (Figura 5). Il modulo CM3, basato sul medesimo processore quad core della scheda Pi 3, fornisce anche le stesse caratteristiche e funzionalità di tale scheda. Il modulo CM3 include inoltre 4 Gbyte di memoria flash eMMC su scheda, mentre le altre schede Pi sono dotate di uno slot micro SD per l'aggiunta di schede di memoria flash esterne. (Raspberry Pi offre inoltre il modulo CM3L, una versione "Lite" del modello CM3 che include tutte le dotazioni di quest'ultimo, eccetto la memoria flash su scheda.)

Immagine di Raspberry Pi Compute Module 3 (CM3)

Figura 5: Raspberry Pi Compute Module 3 (CM3) offre le piccole dimensioni della scheda Pi Zero e le prestazioni di quella Pi 3, fornendo allo stesso tempo una piedinatura più ricca di entrambe. Include inoltre un modulo flash da 4 Gbyte (situato sul lato posteriore della scheda). (Immagine per gentile concessione di Raspberry Pi Foundation)

Il modulo CM3 abbandona l'interfaccia di I/O a 40 pin utilizzata nei modelli Pi 3 e Pi Zero. Offre invece un'interfaccia espansa sotto forma di un connettore a 200 pin per doppio modulo di memoria in linea a basso profilo (SODIMM, Small Outline Dual In-line Memory Module) situato sul bordo della scheda (Figura 6). L'intera scheda CM3 è in realtà compatibile con lo standard DDR2 SODIMM dal punto di vista del fattore di forma, consentendo agli sviluppatori di collegare il modulo CM3 a un sistema target tramite un normale connettore DDR2 SODIMM.

Schema del modulo Raspberry Pi CM3

Figura 6: Il modulo Raspberry Pi CM3 va oltre l'interfaccia a 40 pin presente su altre schede Pi, offrendo invece un breakout a 200 pin per il processore e altri componenti della scheda. (Immagine per gentile concessione di Raspberry Pi Foundation)

Per semplificare lo sviluppo, i progettisti possono avvalersi del kit di sviluppo CM3 Raspberry Pi, formato dalla combinazione di un modulo CM3 e una scheda di I/O Raspberry Pi Compute Module IO per moduli di elaborazione. La scheda di I/O è una semplice scheda open-source con un connettore DDR2 SODIMM per il modulo CM3 e alcune basette che fungono da breakout per l'interfaccia CM3 a 200 pin (Figura 7). La scheda di I/O fornisce inoltre connettori per le porte HDMI, USB, per foto/videocamera e per display presenti sulla scheda Pi 3.

Immagine della scheda di I/O per Raspberry Pi Compute Module

Figura 7: La scheda di I/O per moduli di elaborazione Raspberry Pi inclusa nel kit di sviluppo CM3 fornisce un connettore DDR2 SODIMM per il modulo CM3, nonché alcune basette per l'interfaccia CM3 a 200 pin e alcuni connettori per le porte HDMI, USB, per foto/videocamera e per display. (Immagine per gentile concessione di Raspberry Pi Foundation)

Applicazioni in tempo reale

Grazie alla sua combinazione di alte prestazioni e fattore di forma compatto, il modulo CM3 è particolarmente adatto per l'impiego come sistema embedded in prodotti elettronici come televisori, dispositivi audio e prodotti di consumo analoghi. Per le applicazioni in tempo reale, tuttavia, gli sviluppatori devono tenere conto di alcune limitazioni della piattaforma Pi predefinita.

La principale consiste nel fatto che i sistemi Pi non includono un clock in tempo reale (RTC). I core come il modello Cortex-A53 utilizzati nei prodotti Pi 3 e CM3 (o il core ARM1176 della scheda Pi Zero) non includono inoltre caratteristiche quali i timer di sistema SysTick necessari per eventi in tempo reale come le letture temporizzate dei sensori. I timer SysTick sono caratteristiche importanti dei core come quelli della serie ARM Cortex-M, progettati appositamente per le applicazioni deterministiche in tempo reale.

I progettisti possono tuttavia ovviare facilmente a tali carenze utilizzando un CI RTC di precisione come il modello DS3231 di Maxim Integrated. Il CI RTC DS3231 offre una precisione di ± 2 ppm sull'intervallo di temperatura dei dispositivi di consumo, e genera un'uscita a onda quadra utilizzabile per pilotare timer software di sistema. Offre inoltre un'interfaccia I2C semplice per la lettura dei conteggi dei clock in tempo reale. Gli sviluppatori possono integrare i dati RTC nelle loro applicazioni in tempo reale servendosi di routine C basate sul kit di strumenti I2C menzionato in precedenza.

Un'altra limitazione relativa all'uso di un sistema Pi standard per le applicazioni in tempo reale risiede nel sistema operativo stesso. Le tipiche distribuzioni Linux sono destinate ad applicazioni per impieghi generici, e sono prive della risposta deterministica richiesta per il monitoraggio e il controllo affidabili dei processi in tempo reale. Nella modalità operativa predefinita di Linux, è in effetti possibile che anche un thread con priorità molto elevata non riesca a interrompere il kernel. Se una routine ad alta priorità tenta di effettuare la lettura di sensori, motori di controllo e simili, è pertanto possibile che tale routine "in tempo reale" sia costretta ad attendere per un tempo indeterminato.

Il kernel Linux include fortunatamente un'opzione di configurazione, detta CONFIG_PREEMPT, che permette di affrontare tale limitazione. L'opzione in questione consente alle routine ad alta priorità di interrompere il kernel, salvo in circostanze speciali come l'esecuzione di thread del kernel da parte di quest'ultimo in spinlock (blocco in attesa di una risorsa). In pratica, per garantire la possibilità di interrompere il kernel occorrono ulteriori operazioni oltre all'impostazione di questa voce di configurazione. Con il rilascio della serie di patch CONFIG_PREEMPT_RT, la comunità open-source ha formalizzato il processo di conversione di Linux in un kernel pienamente interrompibile. Tale processo di patching, semplice ma non elementare, è diventato relativamente di routine grazie a procedure ben documentate fornite da Raspberry Pi Foundation e dai membri della comunità Pi.

Conclusione

Malgrado l'interesse suscitato di recente dalla scheda Raspberry Pi Zero, risultata tuttavia difficile da reperire, i modelli Raspberry Pi 3 e CM3 offrono ai progettisti una piattaforma più interessante per la creazione di sistemi ad alte prestazioni. I modelli Pi 3 e CM3 sono entrambi dotati di un processore quad core e di una quantità di memoria doppia rispetto alla RAM disponibile sulla scheda single core Pi Zero.

La scheda Pi 3 fornisce una base di elaborazione più potente per sfruttare l'ampia gamma disponibile di schede aggiuntive realizzate in conformità all'interfaccia GPIO a 40 pin a standard Pi. Il modulo CM3 offre agli sviluppatori una base di elaborazione che unisce sia le piccole dimensioni della scheda Pi Zero, sia le vantaggiose prestazioni di quella Pi 3. Queste recenti schede Pi, l'hardware aggiuntivo e le librerie software facilmente reperibili consentono agli sviluppatori di implementare rapidamente sistemi personalizzati in grado di soddisfare i requisiti applicativi più disparati.

 
DigiKey logo

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.

Informazioni su questo editore

Editori nordamericani di DigiKey