[Linux] Aggiornare la toolchain Avr

Aggiornamento.
Adesso sto usando la toolchain ufficiale Atmel 3.4.1. Quella precompilata da Atmel, però. Perché compilare i sorgenti è un calvario: ci sono diverse cose da aggiungere sul sistema, e non mi andava di installare centinaia di MB di roba :sweat_smile:
Ho aspettato 1 giorno ed i link ora funzionano, sia quelli a 32 che a 64 bit.

Riassumo come fare:

  1. andare a questa pagina:
    http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx

  2. scegliere la toolchain AVR8 (l'AVR32 è per i micro a 32 bit) compatibile con l'architettura del proprio SO (a 32 o 64 bit)

  3. riempire il form con i dati richiesti: mettete un indirizzo e-mail real perché altrimenti non vi arriva il link :P. Per "Company" mettete quel che vi pare, io ho messo "MyHome" :stuck_out_tongue_closed_eyes:

  4. aprite il vostro client di posta. Dopo qualche minuto arriva un messaggio con un link da cliccare per confermare la registrazione. Questo vi porta alla pagina di download

  5. una volta scaricato il pacchetto (sono circa 80 MB), scompattatelo.

  6. Adesso va sostituita alla toolchain distribuita con l'IDE 1.x. Aprite la cartella dove avete l'IDE di Arduino (normalmente arduino-1.0.1) ed entrate in /hardware/tools

  7. dentro a questa cartella ne trovate una denominata /avr: questa contiene la toolchain distribuita con l'IDE. Rinominatela in /avr.old.

  8. create una nuova cartella /avr ed entrateci. E' vuota, in questo momento.

  9. ora entrate nella cartella dove si sono scompattati i binari della toolchain che avete scaricato (punto 5) e copiate tutte le sottocartelle presenti nella nuova cartella /avr che avete creato al punto 8.

  10. un'ultima modifica se usate il core Tiny. 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'include della libreria matematica che c'è in questo file.

Un solo bug, per ora. Ancora non sono riuscito a compilare lo sketch di test del bug dei 64 kB che aveva preparato tempo fa astrobeed. Compilando per Atmega2560 ottengo:

avr-gcc: error: unrecognized option '-assembler-with-cpp'

Immagino che sia causato da qualche parametro passato dall'IDE ma non so come risolvere.