Installare la toolchain GCC per AVR

Da PtLUG Wiki.

Jump to: navigation, search

Contents

Introduzione

Nella maggior parte delle distribuzioni Linux viene installato e configurato tipicamente soltanto l'ambiente per sviluppare o ricompilare pacchetti per la macchina che si sta utilizzando. Puo' capitare a volte di voler sviluppare programmi e compilare per piattaforme che non sono quella che si sta utilizzando per il nostro sistema operativo. Un caso molto comune è quello dello sviluppo di applicazioni embedded per piattaforma AVR (processori Atmel).

La toolchain di per se non è troppo complicata da installare, si possono però incontrare alcuni piccoli inconvenienti, che possono far perdere diverso tempo se non si prendono i dovuti accorgimenti durante l'installazione.

Questa guida nasce allo scopo di sintetizzare il contenuto del manuale delle avr-libc, che spiega come configurare tutto l'ambiente di sviluppo. Questa guida è inoltre interamente in Italiano.

Pacchetti necessari

I tre pacchetti fondamentali per la toolchain GCC per AVR sono:

I pacchetti devono obbligatoriamente essere installati in questo ordine seguendo scrupolosamente le istruzioni che seguono.

N.b: personalmente consiglio di scaricare le ultime versioni stabili per quanto riguarda binutils e avr-libc, mentre consiglio l'ultimo snapshot della serie 4.1 per quanto riguarda il gcc (la versione attuale dichiarata stable presenta numerosi bug che sono stati risolti invece nelle ultime snapshot).

Preparazione dell'ambiente

Prima di iniziare l'installazione è opportuno preparare l'ambiente nel quale ricompileremo i sorgenti appena scaricati. Premetto che tutte le operazioni che seguono devono essere eseguite come utente root.

Per prima cosa occorre creare una cartella separata all'interno della quale installeremo la toolchain (senza che vada in conflitto con l'ambiente di sviluppo che utilizziamo per compilare i pacchetti del nostro sistema):

mkdir /usr/local/avr

Fatto questo, dobbiamo settare due variabili di ambiente che ci serviranno piu' avanti nell'installazione:

PREFIX=/usr/local/avr
export PREFIX
PATH=$PATH:/usr/local/avr/bin
export PATH

A questo punto l'ambiente è pronto e possiamo iniziare con l'installazione.

binutils-avr

Le binutils contengono delle utilità a basso livello che permettono al compilatore di manipolare gli object.

Dobbiamo per prima cosa scompattare i sorgenti:

bunzip2 binutils-<version>-.tar.bz2
tar xfv binutils-<version>-.tar
cd binutils-<version>

dove <version> può essere ad esempio 2.17.

A questo punto è consigliabile creare una sotto cartella dentro la cartella dei sorgenti per far in modo che non si sporchino i sorgenti orginali:

mkdir obj-avr
cd obj-avr

A questo punto configuriamo, compiliamo ed installiamo le binutils:

../configure --prefix=$PREFIX --target=avr --disable-nls
make
make install

Se la compilazione non avrà dato errori, avremo le binutils correttamente installate in /usr/local/avr

gcc-avr

La compilazione del gcc è la parte piu' complicata di tutta l'installazione della toolchain, poichè occorre applicare alcune patch ai sorgenti prima di procedere alla compilazione.

N.b: prima di ricompilare il gcc avete bisogno di installare il pacchetto flex:

apt-get install flex

Per scompattare i sorgenti:

bunzip2 gcc-<version>.tar.bz2
tar xfv gcc-<version>.tar
cd gcc-<version>
mkdir obj-avr

La prima patch che consiglio di applicare è quella relativa al supporto di più processori Atmel (compresi quelli più recenti), che purtroppo non sono stati inclusi nella release originale.

La patch è scaricabile da questo indirizzo: http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files/patch-newdevices

Per scaricarla occorre cliccare su Download e salvare la pagina che si apre in un file chiamato patch-newdevices. Il file va salvato all'interno della cartella gcc-<version> che abbiamo appena creato.

Per applicare la patch, dobbiamo eseguire questo comando all'interno della cartella dei sorgenti del gcc:

patch -p0 < patch-newdevices

A questo punto occorre fare la seconda modifica ai sorgenti. Vogliamo evitare che il gcc installi la propria versione della libreria libiberty, e possiamo effettuare le modifiche con questo comando:

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in

I sorgenti adesso sono pronti per essere ricompilati:

../configure --prefix=$PREFIX --target=avr --enable-languages=c --disable-nls --disable-libssp --with-dwarf2
make
make install

Anche in questo caso, se non ci dovessero essere errori di compilazione, il gcc sarà correttamente installato in /usr/local/avr

avr-libc

Dopo aver installato le binutils ed il gcc, possiamo finalmente installare le avr-libc:

bunzip2 avr-libc-<version>.tar.bz2
tar xfv avr-libc-<version>.tar
cd avr-libc-<version>
./configure --prefix=$PREFIX --build=`./config.guess` --host=avr
make
make install

A questo punto anche le avr-libc sono correttamente installate nella cartella che abbiamo specificato all'inizio.

Impostare il $PATH per il gcc-avr

Una volta completata l'installazione è consigliabile aggiungere il percorso /usr/local/avr al PATH di sistema in maniera permanente. Per fare questo basta editare il file /etc/profile ed aggiungere la seguente riga in fondo al file:

PATH=$PATH:/usr/local/avr/bin
export PATH

Altri pacchetti consigliati

Per sviluppare su piattaforma AVR sono necessari solitamente altri pacchetti che qui citerò solamente, rimandandovi alla guida ufficiale presente sul sito delle avr-libc per quanto riguarda il loro utilizzo.

  • Avrdude: permette di programmare le schede con processore Atmel
  • SimulAvr: un simulatore di schede AVR con processore Atmel

Pacchetti precompilati

Pensando di fare cosa gradita, e per risparmiare tempo se dovessi per qualche motivo installare di nuovo l'ambiente di sviluppo, ho provveduto a preparare dei pacchetti precompilati.

N.b: i pacchetti sono stati creati utilizzando Checkinstall.

Ubuntu Dapper 6.06

Ubuntu Edgy 6.10

Script di installazione automatica

Francesco Sacchi ha realizzato uno script che permette di eseguire automaticamente tutte le operazioni necessarie all'installazione della toolchain. Potete trovarlo a questo indirizzo: http://www.develer.com/oss/AvrToolchain

Autore

Questa guida è stata scritta da Andrea Grandi.

Ringraziamenti

La realizzazione di questa guida non sarebbe stata possibile se non fossi riuscito ad installare con successo la toolchain AVR sul mio PC. Tra le persone che mi hanno aiutato nel capire il funzionamento di tutto il meccanismo, è doveroso ringraziare:

  • Batt (Francesco Sacchi): per il tempo e la pazienza che sta impiegando nello spiegarmi la programmazione Embedded.
  • Matteo Mattei: per avermi suggerito la patch per le libiberty.
Personal tools