Arduino · 27 ottobre 2012 0

Come aggiornare la toolchain AVR alla versione 3.4.1 (Linux)

La toolchain AVR di Gnu è quell’insieme di eseguibili e librerie che servono a creare programmi per i microcontrollori Atmel. La toolchain distribuita con l’IDE 1.0.1 di Arduino è vecchia ed ha un problema noto: non permette di ottenere sketch funzionanti più grandi di 64 kword (128 kB) per via di un bug contenuto nella versione 4.3.2 di avr-gcc.

Atmel periodicamente distribuisce una toolchain aggiornata con specifiche patch che correggono dei problemi nei tool distribuiti da Gnu. Tale toolchain non è immediatamente utilizzabile con l’IDE ma, con pochi accorgimenti, possiamo sostituirla a quella distribuita dal team di Arduino.

Attenzione. Le istruzioni che leggete sono valide solo per Linux.
Per Windows, potete fare riferimento a questa guida.

Ecco i semplici passi da fare:

  • prima di tutto bisogna procurarsi l’ultima toolchain 3.4.1 che Atmel ha rilasciato il 29/08/2012. Per far ciò collegatevi a questa pagina e scaricate la versione compatibile con la vostra architettura, 32 o 64 bit. Ricordatevi che per accedere al download del file dovete registrarvi inserendo un indirizzo e-mail al quale verrà spedito il link diretto. Una volta scaricato il pacchetto, scompattatelo in una cartella.
  • Adesso bisogna sostituire la toolchain dell’IDE con questa. Per far ciò andate nella cartella dove avete l’IDE di Arduino e posizionatevi in /hardware/tools. Dentro a questa trovate un’altra cartella che si chiama /avr, che contiene la toolchain: rinominatela in /avr.old, in questo modo potete ripristinare la vecchia toolchain se, per qualche motivo, voleste togliere la nuova.
  • Ricreate la cartella /avr e copiateci dentro il contenuto della cartella /binaries contenuto nella cartella in cui avete scompattato l’archivio che avete scaricato dal sito di Atmel.

Se usate il core Tiny, dovete eseguire un altro passaggio.

  • Entrate in /hardware/tiny/cores/tiny ed editate il file wiring.h. Intorno alla riga 136 commentate la riga che inizia con #define round(x) in modo che alla fine risulti così: //#define round(x)     ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
    Questa modifica (che forse dovrete replicare anche sui file wiring.h di altri core, se ne avete) serve per sistemare un bug sulla gestione di questa funzione matematica, funzione che si replica nel delay.h a causa dell’inclusione della libreria matematica che c’è in questo file.

Adesso l’ultimo passo:

  • Scaricate il pacchetto che trovate alla fine di questo archivio. Esso contiene dei file con cui sostituire quelli presenti nell’IDE, contenuti nella cartella /arduino-1.0.1/hardware/arduino/cores/arduino. Attenzione: essi valgono solo se avete l’IDE 1.0.1.

Se avete eseguito tutti questi passaggi con successo, avrete sul computer la nuova toolchain Atmel. Per provare se tutto è andato a buon fine, compilato un qualunque sketch e controllate di non ricevere messaggi di errore. Questa toolchain ha il vantaggio di generare codice più compatto rispetto a quello creato usando la toolchain distribuita con l’IDE di Arduino.

Mod files to use with the new Atmel toolchain 3.4.1
10.1 KiB
1509 Downloads
Dettagli...