Toolchain per ARM in ambiente Linux
Introduzione
Nella guida che segue verrà presentata la procedura d'installazione di una toolchain completa per microcontrollori ARM. La toolchain si basa su software open source: compilatore e debugger GNU, ambiente integrato di sviluppo Eclipse, gestore dell'interfaccia JTAG openOCD.
I principali componenti software utilizzati sono:
- compilatore gcc-4.4.2
- debugger gdb-6.8
- openocd-0.2.0
- eclipse Galileo
Il processo di installazione si articola attraverso i seguenti passi: aggiornamento del sistema operativo Linux, installazione di openOCD, installazione di gcc e gdb, installazione di eclipse. E' richiesta la connessione internet per il download dei componenti software necessari.
Il collaudo e la sintonia fine dei vari pacchetti qui installati verrà affrontato in un'altra pagina del nostro sito che verrà sviluppata a breve.
Aggiornamento Linux
Le prove per la toolchain sono state fatte su una installazione ex-novo di Ubuntu 9.10, edizione desktop. Il primo passo consente di aggiornare e/o integrare il pacchetto di base con alcune librerie necessarie ai vari componenti della toolchain. I comandi sono stati raccolti in uno script da eseguire come sudo per i necessari diritti di accesso (questo vale anche per tutti gli altri script che seguono). Per l'esecuzione da riga di comando basta digitare il codice che segue:
apt-get update
apt-get dist-upgrade
apt-get install build-essential zlib1g-dev libncurses5-dev patch texinfo libreadline5-dev gawk default-jre m4
Alcuni dei comandi potrebbero risultare ridondanti; è conveniente comunque, durante l'installazione, seguire i risultati presentati nella finestra del terminale per intercettare prima possibile eventuali problemi dello script.
Poichè è preferibile sapere cosa si installa, passiamo ad una veloce panoramica delle librerie selezionate:
- build-essential: insieme di pacchetti di base per la ricompilazione di parte del sistema di sviluppo Linux;
- zlib1g-dev: strumenti di sviluppo per libreria di compressione;
- libncurses5-dev: strumenti di sviluppo per le librerie condivise di gestione del terminale;
- patch: libreria di creazione di patch per aggiornamento di programmi;
- texinfo: sistema documentale che usa un singolo file sorgente per produrre sia informazioni in linea sia documenti per la stampa;
- libreadline5-dev: strumenti di svilippo per librerie di gestione della riga di comando readline e history;
- gawk: linguaggio per la ricerca e il processo di modelli di testo;
- default-jre: libreria runtime standard Java o compatibile;
- m4: libreria utilizzata da gmp.
Scarica lo script di aggiornamento Linux
Installazione OpenOCD
Per tale passo è richiesta l'installazione preventiva del pacchetto libusb-dev, ovvero degli strumenti di sviluppo per la libreria di programmazione delle periferiche USB; successivamente, dato l'utilizzo da parte nostra dell'interfaccia JTAG Amontec basata su chip FTDI, viene installata la libreria open source libfti-dev, contenente gli strumenti di sviluppo alternativi alla libreria proprietaria di FTDI. A tal proposito è bene leggere quanto riportato sul sito http://openocd.berlios.de/web/ circa l'inclusione della libreria proprietaria FTDI libftd2xx in applicazioni open source (licensing violations).
OPENOCD=openocd-0.2.0
apt-get install libusb-dev
apt-get install libftdi-dev
mkdir build
wget -c http://download.berlios.de/openocd/$OPENOCD.tar.bz2
tar xfvj $OPENOCD.tar.bz2
cd build
../$OPENOCD/configure --enable-ft2232_libftdi
make
make install
cd ..
rm -rf build/* $OPENOCD $OPENOCD.tar.bz
Dopo l'installazione di libusb-dev e libftdi-dev lo script crea la directory build, scarica il pacchetto openocd-0.2.0 dal sito berlios, scompatta l'archivio ed entra nella directory build. Da qui viene eseguito il file di configurazione con la direttiva --enable-ft2232_libftdi, per la compilazione di openOCD dedicata al chip FT2232 di FTDI. I comandi di make e make install provvedono rispettivamente a compilare openOCD e ad installare l'applicazione nelle cartelle opportune. L'ultimo comando rimuove la cartella build e tutto il suo contenuto.
Scarica lo script d'installazione openOCD
Installazione gcc/gdb
Il passo d'installazione di gcc e gdb è il più complesso e si basa su uno script di Michael Fischer, ideato per installare la toolchain sotto Windows, modificato da noi in alcune parti. In particolare:
- gli script prima di uscire per un eventuale errore attendono l'input da tastiera;
- il sorgente gcc è stato preso come file completo e non diviso in gcc-core e gcc-gpp;
- è stata ripristinata la patch a newlib;
- è stata eliminata la flag D__USE_MINGW_ACCESS;
- è stato preinstallato il pacchetto m4 con apt-get install, per compilare gmp (vedi sopra Aggiornamento Linux);
- il pacchetto binutils è stato configurato con --disable-werror
- il pacchetto gdb è stato configurato con --disable-werror
- lo script strip è stato modificato srotolando il ciclo for
Da terminale eseguire nella cartella build-scripts il comando:
sudo ./xx-build-all.sh
Questo script é il principale e richiama in sequenza:
- 00-set-env.sh
- 01-build-expat.sh
- 02-build-gmp.sh
- 03-build-mpfr.sh
- 04-build-binutils.sh
- 05-build-bootgcc.sh
- 06-build-newlib.sh
- 07-build-gcc.sh
- 08-build-gdb.sh
- 09-strip.sh
Nel caso ci siano dei problemi é possibile anche eseguire gli script singolarmente. E' da notare che se lo script _env-only.sh (normalmente chiamato da 00-set-env.sh) viene lanciato singolarmente, deve essere invocato con il comando
. ./_env-only.sh
per caricare correttamente le variabili d'ambiente a livello globale. All'avvio di ogni script viene creato automaticamente un file di testo temp.txt con l'ora d'inizio; al completamento di ogni script il file viene modificato in ready.txt con l'aggiunta dell'ora di fine esecuzione.
Lo script impiega un bel po' di tempo per l'esecuzione completa, creando una cartella install con tutti i file e cartelle ottenuti dalla compilazione; è necessario, comunque, seguire attentamente i risultati intermedi perché potrebbero sfuggire degli errori che si riflettono sul funzionamento complessivo del pacchetto.
Dopo aver prodotto la cartella install è possibile spostare questa ovunque, aggiornando la variabile PATH di sistema; si ottiene ciò aprendo il file: "/etc/environment" e aggiungendo alla variabile PATH il percorso completo a partire dalla radice: /(...)/install/bin
Scarica lo script d'installazione gcc/gdb
Nota: per i più pigri è disponibile il download di un archivio unico con la toolchain completa di openOCD e gcc/gdb scaricando il file install.tar.bz2. L'archivio contiene una configurazione openOCD predisposta per la scheda di sviluppo Olimex LPC-2378-STK. Con poche modifiche è comunque possibile adattare la configurazione ad altre schede con micro diversi.
Installazione di eclipse Galileo
L'installazione di eclipse Galileo non è una vera e propria installazione, quindi non abbiamo predisposto uno script dedicato. Conviene scaricare direttamente il pacchetto Eclipse IDE for C/C++ Developers, scompattarlo ed eseguire direttamente il programma Eclipse. Per aggiungere la funzionalità di debug Embedded CDT è necessario scaricare un plug-in di Zylin mediante la seguente procedura:
- accedere al menù Help selezionando il comando Install New Software...
- nella list box
Work with: digitare l'indirizzo http://opensource.zylin.com/zylincdt
- selezionare con il segno di spunta il pacchetto proposto (attualmente 4.10.1)
- completare l'installazione con il tasto Next.
