[MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain

PaoloP:
Possiamo sempre riprendere il tuo post e aggiornarlo. --> [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain - Megatopic - Arduino Forum

Appena sarò riuscito a capire cosa altro non va questa volta nello script ...

Guglielmo

ah, tra l'altro la toolchian ARM è in piano di essere aggiornata, e tra l'altro la versione MAC sarà compilata apposta (guardate sulla milestone su git)....

che dire, ARM che trovi, AVR che abbandoni?

C'è voluto un po' per capire come avevano riorganizzato tutto lo script della AVR Toolchain 3.4.3 ma ....

Guglielmos-iMac-27:AVR gpb01$ sh build-avr8-gnu-toolchain-git.sh -b /Volumes/RamDisk/AVR/bld -p /Volumes/RamDisk/AVR/install -s /Volumes/RamDisk/AVR/src
Using '/Volumes/RamDisk/AVR/src' as source folder.
Unknown host platform: x86_64-apple-darwin13.0.0
...
...
....
OK
Installing binutils for avr...                      OK
Building libgmp ...                                 OK
Installing gmp ...                                  OK
Building libmpfr ...                                OK
Installing mpfr ...                                 OK
Building libmpc ...                                 OK
Installing mpc ...                                  OK
Building bootstrap GCC for avr...                   OK
Installing bootstrap GCC for avr...                 OK
Building avr-libc ...                               OK
Installing avr-libc ...                             OK
Building libmpc ...                                 OK
Installing mpc ...                                  OK
Building full GCC for avr...                        OK
Installing full GCC for avr...                      OK
Finished at Thu Dec  5 00:50:00 CET 2013
Task completed in 0 hours, 53 minutes and 36 seconds.

... RIUSCITO !!!

Guglielmo

Ovviamente con tutti i problemi del caso con le lib di Arduino... :roll_eyes:
PS:
mi passi lo script, che oggi provo anch'io? :sweat_smile:

leo72:
mi passi lo script, che oggi provo anch'io? :sweat_smile:

Poi aggiorno anche QUESTO thread ...

... intanto ti do direttamente il link da cui scaricare la struttura della directory necessaria, con i .tar.gz messi al posto giusto e già pronta per la compilazione su OS X 10.9 (Mavericks) :

http://www.phoenixsea.ch/downloads/AVR/AVR_Toolchain_v3.4.3.zip (circa 135 MB) :wink:

Ci mette un bel po' a compilare il tutto ... quindi ... abbi pazienza :grin:

Guglielmo

Oggi provo, ora non sono a casa (cambio di turno: sono a lavoro stamattina... :sweat_smile: ).

leo72:
Oggi provo, ora non sono a casa (cambio di turno: sono a lavoro stamattina... :sweat_smile: ).

... ricorda tutti i prerequisiti ( == la marea di pacchetti aggiuntivi ... che dovresti aver già installato) che erano già stati descritti per la compilazione della 3.4.2. :wink:

Guglielmo

@Guglielmo:
continuo qui questa discussione perché altrimenti di là inquiniamo il thread.
Questa toolchain è più aggiornata di quella che attualmente è nell'ultima versione di Crosspack oppure è la stessa?

Dovrebbe essere più aggiornata ... la versione riportata sui .tar.gz è :

  • avr-binutils-2.23.2
  • avr-gcc-4.8.1
  • avr-libc-1.8.0
  • avr8-headers-6.2.0.142

... sto preparando anche lo .zip con la cartella "avr" pronta, da sostituire nell'IDE. Appena tutto pronto aggiorno il primo post di questo thread :wink:

Guglielmo

La discussione sulla nuova toolchain 4.3.4 per MAC OS X prosegue QUI ... così non continuiamo con l'off-topic su questo thread :grin:

Guglielmo

Interessante ...
... con questa nuova versione ... le compilazioni che con la 3.4.2 non venivano completate ed andavano in errore (vd. problema WiFi) ... ora vengono compilate con successo !!!

C'è la solita marea di warning (se si usa il "verbose" per vederli) ... alcuni anche piuttosto seri, ma comunque la compilazione va a buon fine !

C'è poi da vedere se il risultato ... funziona bene (visti i warning) ... :roll_eyes:

Guglielmo

ho fatto il merge con i msg dell'altro thread, ci saranno un paio di msg fuori posto ma almeno teniamo tutto qui

leo72:
ho fatto il merge con i msg dell'altro thread, ci saranno un paio di msg fuori posto ma almeno teniamo tutto qui

A ecco... non riuscivo a capire la sequenza dei messaggi.
Comunque complimenti a Guglielmo che ha brillantemente risolto anche quest'altra sfida.

PaoloP:
Comunque complimenti a Guglielmo che ha brillantemente risolto anche quest'altra sfida.

Beh ... diciamo che dopo il casino della versione precedente ... il più era fatto ... XD

... in questa hanno completamente cambiato dove e come devono essere messi i .tar.gz ed hanno fatto alcune altre cose a livello script :wink:

Guglielmo

In attesa di aggiornare il primo post, intanto, chi volesse scaricare la cartella avr già pronta da sostituire all'interno dell'IDE 1.0.5 versione OS X, può seguire questo link : http://www.phoenixsea.ch/downloads/AVR/avr_3.4.3.zip (circa 50 MB).

Per inciso, ci ho già messo dentro anche l'ultima versione di AVRDUDE (6.0.1) :wink:

Guglielmo

Primo post del thread aggiornato con i necessari link.

Guglielmo

Allora, vediamo i problemini che si incontrano con questa nuova versione ... per ora ho questi :

/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:98:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (i != buffer->tail) {
                    ^
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void __vector_18()':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:127:21: warning: unused variable 'c' [-Wunused-variable]
       unsigned char c = UDR0;
                     ^
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:368:11: warning: unused variable 'current_config' [-Wunused-variable]
   uint8_t current_config;
           ^
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:467:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while (i == _tx_buffer->tail)
                           ^
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'IPAddress::operator uint32_t()':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:51:55: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
     operator uint32_t() { return *((uint32_t*)_address); };
                                                       ^
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'bool IPAddress::operator==(const IPAddress&)':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:75: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
     bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };
                                                                           ^
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:108: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
     bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };
                      ^

/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL 3.4.3.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.cpp:44:23: warning: '__progmem__' attribute ignored [-Wattributes]
   const char PROGMEM *p = (const char PROGMEM *)ifsh;

... dove, il più grave, che andrebbe risolto, è l'ultimo, riguardante, come al solito, PROGMEM :wink:

Così come è ... ignora l'attributo PROGMEM che viene usato dalla Print.cpp ... con le ovvie conseguenze del caso :frowning:

Guglielmo

Questo PROGMEM è una piaga. :astonished:

ma perchè ora non esiste più progmem, è già deprecato nelle versioni in uso adesso se non erro.

Il punto è che se si sistemassero le lib per essere compatibili alla versione attuale E alla versione standard avremmo risolto il problema all'origine. E le modifiche sono da proporre sul github.

Non credo ... è semplicemente cambiata la sintassi ...

... la vecchia :

const prog_uint16_t pippo PROGMEM = 1;

diventa, nella nuova sintassi : :

const uint16_t pippo __attribute__ (( __progmem__ )) = 1;

oppure :

PROGMEM static const uint16_t pippo = 1;

... entrambe NON danno problemi con la nuova Toolchain :wink:

Poi, ancora più in dettaglio, se si usa C++11 diventa :

const uint16_t pippo [[gnu::__progmem__]] = 1;

Guglielmo