Programmare ARM – Programmare la board LPC-P1343
Posted: giugno 13th, 2011 | Author: Francesco Apollonio | Filed under: ARM, Embedded, Guide, Programmazione | Tags: arm, code tips, config, cortex-m3, embedded, Guide, linux, lpc-1343, LPC-P1343, lpc1343, mtools | 1 Comment »
Ho da poco acquistato (da OLIMEX) una LPC-P1343, board poco costosa (circa 15€) e ottima per iniziare a lavora con la programmazione embedded.
La board ha un microcontrollore LPC1343 (Cortex-M3), connettore UEXT, USB, otto led, due tasti utilizzabili per le proprie applicazioni, una area di prototipazione e molto altro (scheda completa).

La board LPC-P1343
In questo primo articolo si vedrà come programmare la board, scrivendo la flash tramite l’USB.
Come si può vedere dall’immagine qui sopra, la scheda ha due pin cortocircuitabili con un jumper (indicati come JMP BLD_E). Normalmente, con i pin non connessi, la scheda prende dall’USB solo l’alimentazione ed esegue il programma caricato al suo interno. Chiudendo i piedini, la board passa in modalità programmazione e il computer rileverà una nuova unità disco.
Teoricamente bastebbe copiare il firmware compilato all’interno di questa unità disco per programmare la board. Ma ovviamente non sempre la vita è così semplice…
Questa scheda in particolare è stata implementata utilizzando le specifiche di un file system di tipo DOS. Quindi ci si presentano due problemi:
- il nome del file deve essere nel formato 8.3 caratteri (e:. nuovo.bin, firmware.bin, etc)
- in windows i blocchi sono allocati in maniera sequenziale al contrario di quanto avviene in sistemi Linux
Per ovviare a quest’ultimo problema, occorre utilizzare mtools, strumenti per la manipolazione di file system di tipo DOS. L’installazione è semplice (apt-get install mtools in sistemi debian-like), subito dopo occorre modificarne la configurazione, editando il file /etc/mtools.conf aggiungendovi il nostro device driver:
drive c: file="/dev/disk/by-id/usb-NXP_LPC134X_IFLASH_ISP000000000-0:0" exclusive
Da ora si possono utilizzare i comandi mdir, mdel, mcopy per (rispettivamente) visualizzare i file contenuti, cancellarli o copiarli. Ad esempio:
mdel c:firmware.bin mcopy nuovo.bin c:nuovo.bin
Una volta copiato il nuovo firmware, disconnesso i pin (togliendo il jumper) e resettata la board (tramite il tasto di reset), il programma appena caricato verrà eseguito al posto di quello standard.
NOTE: È consigliabile salvare il firmware di default prima di scriverci un altro, in modo da poterlo ripristinare all’occorrenza (mcopy c:firmware.bin orig.bin). Una volta caricato il nuovo firmware il file verrà comunque rinominato in firmware.bin, quindi quello da cancellare prima di copiare il nuovo file è sempre firmware.bin.
Questo è giusto un anticipo, non appena avrò il tempo di iniziare a giocarci vedrete un po’ quello che si può fare. Vi allego comunque un po’ di link utili.
A presto.
Scheda della board:
http://olimex.com/dev/lpc-p1343.html
Vari file (pdf scritti da Alessandro Rubini):
http://www.gnudd.com/wd/cortex-m3.pdf
http://gnudd.com/wd/thos.pdf
Compilatore ARM:
http://www.codesourcery.com/sgpp/lite/arm/portal/package8734/public/arm-none-eabi/arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
Microcontrollore (dal sito del produttore):
Datasheet
User Manual
File Esempio









[...] chi non capisse cosa sono questi ultimi due comandi, consiglio la lettura del precedente articolo che spiega, tra l’altro, come configurare mtools per permettere il riconoscimento della [...]