mbed: la piattaforma di sviluppo a prototipazione rapida

mbed

Chi ha provato a utilizzare un ambiente di sviluppo per microprocessori, sa che quest'operazione spesso comporta qualche difficoltà, soprattutto per chi è alle prime armi. Certo, Arduino ha portato una ventata di freschezza e di novità in questo settore, tuttavia esistono sul mercato delle soluzioni alternative, come ad esempio la piattaforma mbed, basata su un microcontrollore ARM di NXP.

Introduzione

Realizzare un progetto basato su un microprocessore di ultima generazione è senza ombra di dubbio un'esperienza appagante, ma può anche essere un'esperienza per certi versi frustrante quando le difficoltà che inevitabilmente si incontrano sembrano divenire insormontabili. Maggiore è la potenza del microcontrollore, maggiore è la complessità dello strumento di sviluppo. E' una regola generale, che spesso comporta una fase iniziale di "apprendistato", di studio e di approfondimento della documentazione, prima di poter essere effettivamente operativi (impostare correttamente i percorsi sul disco utilizzati dallo strumento, modificare opportunamente i file per il linker, scrivere/modificare i makefile, studiare/verificare le varie opzioni del compilatore, ecc. ecc.). Contrapposta a questa filosofia di "prototipazione lenta", è nata e si è sviluppata in varie forme la filosofia della "prototipazione veloce", il cui obiettivo è appunto quello di arrivare il più velocemente possibile a un'applicazione completa e funzionante. In questo articolo esamineremo una piattaforma completa di sviluppo basata sulla MCU LPC con core ARM di NXP. Il modulo hardware, mostrato nell'immagine di apertura dell'articolo, ha dimensioni molto compatte e contiene un microcontrollore della famiglia LPC basato sul core ARM e una porta USB. Sono inoltre presenti diversi segnali di I/O e interfacce di comunicazione (a seconda del modello): Ethernet, USB, CAN, UART, SPI, I2C, input analogici, e uscite PWM.

Come funziona questo strumento? E' molto semplice, basta collegare il modulo hardware a un PC tramite un cavo USB e disporre di una connessione Internet.

Perchè serve la connessione a Internet? Semplice, il tool di sviluppo è on-line, ed è accessibile tramite un comune browser per il web. Il PC riconoscerà il modulo come un'unità di memoria USB (come se si trattasse di una comune "chiavetta" USB) e assocerà ad esso un file HTML. Aprendo questo file all'interno del browser, sarà poi possibile accedere allo strumento di sviluppo on-line, scrivere il codice, compilarlo, e scaricarlo sul modulo hardware sempre tramite il collegamento USB. Un piccolo reset dell'apparato (basta premere il tasto blu visibile nelle immagini) e via, l'applicazione andrà subito in esecuzione!

L'hardware

Entrambe le schede di sviluppo (NXP LPC11U24 visibile a sinistra, e NXP LPC1768 a destra) hanno un connettore di tipo DIP a 40-pin con passo da 0,1 pollici, adatto a eseguire una prototipazione con breadboard, stripboard, e basette millefori senza dover ricorrere ad alcuna saldatura. L'interfaccia USB di cui sono dotate le schede ha le stesse funzionalità di una normale memoria flash USB: è sufficiente trascinare sull'unità (la board di sviluppo) il file binario dell'applicazione per eseguire il trasferimento fisico del programma. Questa funzionalità è supportata sui sistemi operativi Windows, MAC OS X, e Linux, è pertanto "cross-platform" e, soprattutto, non richiede l'installazione di alcun driver. Il codice binario può essere generato utilizzando il compilatore on-line mbed, oppure, alternativamente, utilizzando un comune sistema di sviluppo come Keil uVision, Code Red, oppure GCC. E' anche disponibile il supporto per una porta seriale virtuale basata sulla stessa interfaccia USB, consentendo la comunicazione con un PC o con altre applicazioni che utilizzano il link seriale.

L'mbed NXP LPC11U24 (la board con la colorazione ocra, basata sul core Cortex-M0) è più adatta alle applicazioni a basso costo e a basso assorbimento (alimentazione a pile), in cui si utilizzi l'USB in modalità device. L'mbed NXP LPC1768 (la board con la colorazione blu, basata sul core Cortex-M3) è invece adatta alle applicazioni in cui sono richieste elevate prestazioni, l'utilizzo di un'interfaccia Ethernet, e/o USB in modalità host. L'immagine seguente mostra il pinout della board NXP LPC11U24, le cui caratterisitiche possono essere così sintetizzate:

  • MCU NXP LPC11U24
    • core a bassa potenza ARM Cortex-M0
    • frequenza operativa pari a 48MHz, 8KB di memoria RAM, 32KB di memoria FLASH
    • interfacce USB Device, 2xSPI, I2C, UART, 6xADC, GPIO
  • fattore di forma adatto alla prototipazione
    • package 54x26mm, connettore DIP a 40-pin, passo 0,1"
    • alimentazione 5V dalla porta USB, oppure alimentazione esterna 4,5-9V, oppure alimentazione 2,4-3,3V con batterie
    • programmatore integrato di FLASH con funzionalità "drag 'n' drop"
  • ambiente di sviluppo disponibile on-line sul sito web mbed.org
    • compilatore on-line molto performante
    • SDK di alto livello per C/C++
    • numerose librerie e progetti pronti per l'uso

Quest'altra immagine mostra invece il pinout della board mbed NXP LPC1768, le cui principali caratterisitiche sono:

  • MCU NXP LPC1768
    • core ad elevate prestazioni ARM Cortex-M3
    • frequenza operativa pari a 96MHz, 32KB di memoria RAM, 512KB di memoria FLASH
    • interfacce Ethernet, USB Host/Device, 2xSPI, 2xI2C, 3xUART, CAN, 6xPWM,6xADC, GPIO
  • fattore di forma adatto alla prototipazione
    • package 54x26mm, connettore DIP a 40-pin, passo 0,1"
    • alimentazione a 5V dalla porta USB, oppure alimentazione esterna 4,5-9V
    • programmatore integrato di FLASH con funzionalità "drag 'n' drop"
  • ambiente di sviluppo disponibile on-line sul sito web mbed.org
    • compilatore on-line molto performante
    • SDK di alto livello per C/C++
    • numerose librerie e progetti pronti per l'uso

Nota importante: gli schematici e i datasheet di entrambe le board sono disponibili per la consultazione o il download sul sito mbed (link in fondo all'articolo).

L'SDK

Il Software Development Toolkit comprende un insieme di librerie e API già pronte per l'uso, in modo tale da velocizzare la fase di scrittura del codice dell'applicazione. L'SDK è completamente integrata con il compilatore (in modo del tutto analogo a quanto avviene per Arduino) ed è compatibile con la linea di sviluppo GCC. Quest'immagine mostra un utilizzo di alcune API della libreria SPI (si noti la semplicità e l'intuitività del codice):

Questo video, invece, mostra come in pochissimi passi sia possibile realizzare una piccola applicazione utilizzando il sistema di sviluppo on-line, compilarla, e metterla in esecuzione su una board mbed:

La piattaforma mbed può inoltre contare su un'ampia community di appassionati di elettronica, sempre pronti a fornire assistenza e ad accrescere continuamente la già ricca dote di librerie e di esempi applicativi. L'immagine seguente mostra l'architettura del sistema mbed, partendo dal livello più basso (l'hardware) sino ad arrivare al codice applicativo scritto dall'utente finale (si noti l'apporto considerevole fornito dalla Community, un fattore comune al mondo Arduino).

Sito web mbed

mbed è disponibile da Farnell

8 Comments

  1. Emanuele 30 marzo 2012
  2. xak 2 aprile 2012
  3. xak 2 aprile 2012
  4. Emanuele 3 aprile 2012
  5. gb 4 aprile 2012
  6. slovati 4 aprile 2012
  7. slovati 4 aprile 2012
  8. gb 4 aprile 2012

Leave a Reply