Arduino Forum

International => Italiano => Megatopic => Topic started by: gpb01 on Sep 05, 2013, 05:34 pm

Title: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 05, 2013, 05:34 pm
N.B. : Questo thread fa seguito a tutta la serie di prove che si sono effettuate QUI (http://forum.arduino.cc/index.php?topic=182175.0) per compilare l'ultima versione della Atmel Toolchain (3.4.2) su OS X Mountain Lion 10.8.4 e ne riassume i punti fondamentali.



La compilazione della Atmel Toolchain su OS X richiede una serie di prerequisiti :

prima di tutto l'installazione di Xcode (scaricabile gratuitamente dell'App Store per Mac), quindi, tramite Xcode, l'installazione dei "Command Line Tools" (... si può fare da dentro le preferenze di Xcode, bottone Downloads, tab Components), più l'installazione di tutta una serie di pacchetti indispensabili.

Se come me, non siete dei maghi di Linux, per facilitarvi la vita suggerisco, come prima cosa, l'installazione su OS X del pacchetto "Homebrew (http://brew.sh/)", che altro non è che un prodotto per semplificare l'installazione e la manutenzione di innumerevoli pacchetti disponibili per Linux su OS X.

Aperto il terminale, dal prompt dare il comando :

Code: [Select]
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

... e l'installazione di Homebrew dovrebbe procedere senza intoppi. Al termine dell'installazione è suggerita una verifica con il comando, sempre da terminale :

Code: [Select]
brew doctor

che dovrebbe segnalare eventuali problemi da correggere (... o da ignorare se non rilevanti).

Terminata l'installazione e la verifica di Homebrew, si può passare all'installazione di tutti i pacchetti che sono propedeutici alla corretta compilazione della Atmel Toolchain. Per fare questo, sempre da terminale, useremo Homebrew secondo la seguente sintassi :

Code: [Select]
brew install nome_pacchetto

dove nome_pacchetto è il pacchetto che si desidera installare.  I pacchetti da installare sono i seguenti :

Code: [Select]

autoconf            gmp           libmpdclient           libusb-compat           pkg-config
automake            jasper        libpng                 mpc                     texinfo
dfu-programmer      jpeg          libtiff                mpfr                    wget
git                 libmpc        libusb                 netpbm


... in realtà ce n'è qualche d'uno in più (es. git, libusb, dfu-programmer) che io già avevo installato ... ritengo comunque conveniente la loro installazione poiché tanto, prima o poi, servono ;)

Terminata l'installazione di questi pacchetti con Homebrew, occorre installare un ulteriore pacchetto ... TeX per il quale, fortunatamente, esiste una distribuzione aggiornata per OS X : http://mirror.ctan.org/systems/mac/mactex/MacTeX.pkg (http://mirror.ctan.org/systems/mac/mactex/MacTeX.pkg) ... fate attenzione, è un .pkg da oltre 2 GB quindi ... occorre un po' di tempo, ma almeno è ben fatto e si installa senza problemi :)

A questo punto, l'ambiente per poter compilare la Atmel Toolchain è completo di tutti gli strumenti necessari e si può passare al scaricare la Toolchain dal sito di Atmel ed a mettere tutti i vari .tar.gz nelle giuste directory, dopo di che occorre modificare lo script che viene fornito da Atmel per la compilazione, per renderlo eseguibile, senza problemi, su OS X.


Per evitarvi problemi, ho già creato la struttura delle directory necessaria e vi ho già messo dentro i vari pacchetti e lo script modificato ... potete scaricare il tutto dal seguente link : http://www.phoenixsea.ch/downloads/AVR/AVR_Toolchain_v3.4.2.zip (http://www.phoenixsea.ch/downloads/AVR/AVR_Toolchain_v3.4.2.zip)  :D


Scaricato e scompattato lo zip indicato, dovreste trovarvi con una cartella di nome "AVR Toolchain v3.4.2" che, al suo interno, contiene ulteriori tre cartelle : "bld", "src" e "install" nonché lo script di compilazione (già corretto) build-avr8-gnu-toolchain.sh .

Da terminale posizionatevi nella radice di detta cartella ed eseguite il comando :

Code: [Select]
sh build-avr8-gnu-toolchain.sh -b _vostro_percorso_/bld -p _vostro_percorso_/install -s _vostro_percorso_/src

dove _vostro_percorso_ è il percorso completo alla cartella della Toolchain.

Dopo un tempo variabile, a secondo della potenza di calcolo del vostro Mac (... sul mio ha impiegato circa 40 minuti) la compilazione avrà termine e la Toolchain sarà tutta correttamente compilata e risiederà all'interno della cartella "install".


Per chi si vuole evitare l'installazione di Xcode, dei "Command Line Tools" e di tutti i pacchetti aggiuntivi necessari, nonché della compilazione, ho già predisposto uno .zip che contiene SOLO la Toolchain già compilata e già in una cartella di nome avr che, come vedremo, è quella che dobbiamo sostituire nel nostro IDE.

Tale zip, con la Toolchain già compilata per OS X è scaricabile da qui : http://www.phoenixsea.ch/downloads/AVR/avr.zip (http://www.phoenixsea.ch/downloads/AVR/avr.zip)   XD

===============================================================================
======                                           AGGIORNAMENTO DEL 05 DIC 2013                                        ======
===============================================================================


Atmel ha rilasciato una nuova Toolchain, versione 3.4.3.  Grazie all'esperienza fatta con la precedente sono riuscito a ricreare la struttura per poter compilare questa nuova versione ... nuova posizione dei files nelle cartelle e nuovo script.

Dal link che segue potere scaricare detta struttura già pronta per la compilazione su OS X 10.9 (Mavericks) :

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

mentre, 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 (http://www.phoenixsea.ch/downloads/AVR/avr_3.4.3.zip)  (circa 50 MB).

Per la compilazione, valgono tutti i prerequisiti descritti per la precedente versione ... ;)

=======================================================================================
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 05, 2013, 09:00 pm
Il passo successivo è ora aggiornare Arduino IDE per utilizzare la nuova Toolchain ...

Per fare questo, dovete andare nella cartella /Applications (... dove normalmente si trova Arduino.app), selezionare l'applicazione (Arduino.app), fare click con il tasto destro e selezionare la voce di menu "Show Package Contents" (... ho OS X in Inglese e quindi tutto quello che riporto è per l'inglese ... non dovreste comunque avere problemi ad identificare la voce nel caso lo abbiate in Italiano).

Questo aprirà una finestra del "Finder" sulla cartella "Contents" dell'applicazione.

Procedere nel seguente percorso :

Code: [Select]
Contents -> Resources -> Java -> hardware -> tools

... nella cartella "tools" si trova la cartella "avr" che è quella che dovremo sostituire.

Per il momento rinominate della cartella "avr" in "avr-old" e copiate nello stesso posto (dentro "tools") la nuova toolchain appena compilata (... o appena scaricata già compilata) :


Se avete compilato voi la toolchain allora :

1. copiate la catella "install" della toolchain dentro "tools"
2. rinominate la cartella copiata da "install" in "avr"
3. copiate la cartella "etc" che si trova ancora in "avr-old" (... la vecchia toolchain che abbiamo salvato) in "avr" (... la nuova toolchain)
4. copiate il file "avrdude" che si trova nella cartella "bin" dentro la "avr-old" (... la vecchia toolchain che abbiamo salvato) nella cartella "bin" che si trova in "avr" (... la nuova toolchain)


Se avete scaricato la toolchain già compilata :

1. copiate la cartella "avr" estratta dalo zip dentro la cartella "tools"


A questo punto, volendo, potete anche cancellare la cartella "avr-old" (... la vecchia toolchain), oppure lasciarla li nel caso ... voleste tornare indietro  :smiley-mr-green:


Questo è quanto e ... il vostro Arduino IDE contiene ora la nuova versione della Toolchain Atmel !!! ;)


Ed ora iniziano i problemi ...
... il "core" arduino NON è al 100% compatibile con la nuova toolchain e occorrerà esaminare caso per caso le correzioni che sarà necessario applicare. faremo questa cosa assieme nei post a seguire.


Buon lavoro.


Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Sep 05, 2013, 09:05 pm

Ed ora iniziano i problemi ... il "core" arduino NON è al 100% compatibile con la nuova toolchain e occorrerà esaminare caso per caso le correzioni che sarà necessario applicare. faremo questa cosa assieme nei post a seguire.


Scusa @Guglielmo, questi problemi ci sono indipendentemente dal S.O. in uso, giusto?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 05, 2013, 09:16 pm
Si, ho verificato gli stessi problemi che riscontro su OS X anche su Windows usando la Toolchain già compilata da Atmel.

Direi che nei post successivi ne mettiamo uno per volta e li risolviamo così, alla fine, ci saranno tutte le modifiche da fare al "core" e le potremo raggruppare in uno zip da installare assieme alla nuova Toolchain :)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: ibbba on Sep 05, 2013, 09:20 pm

Si, ho verificato gli stessi problemi che riscontro su OS X anche su Windows usando la Toolchain già compilata da Atmel.

Direi che nei post successivi ne mettiamo uno per volta e li risolviamo così, alla fine, ci saranno tutte le modifiche da fare al "core" e le potremo raggruppare in uno zip da installare assieme alla nuova Toolchain :)

Guglielmo

Grande Guglielmo,complimenti per il tuo instancabile lavoro e per la condivisione dei risultati.
Provvedo anch'io al'installazione dei pacchetti per poi riportare eventuali problemi che incontrerò durante l'utilizzo della nuova toolchain.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 05, 2013, 09:23 pm

Grande Guglielmo,complimenti per il tuo instancabile lavoro e per la condivisione dei risultati.
Provvedo anch'io al'installazione dei pacchetti per poi riportare eventuali problemi che incontrerò durante l'utilizzo della nuova toolchain.


Grazie ibbba  ;)

Mi raccomando ... un problema alla volta ... apriamolo, risolviamolo ed archiviamo la soluzione così alla fine abbiamo la situazione aggiornata e valida per tutti gli OS (... tanto si tratta di correggere codice c/c++ nel core).

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: astrobeed on Sep 05, 2013, 09:27 pm

ci saranno tutte le modifiche da fare al "core" e le potremo raggruppare in uno zip da installare assieme alla nuova Toolchain :)


Non credo siano cambiate molte cose da quando ho fatto la stessa cosa per Windows, vedi articolo pubblicato su Elettronica In (http://www.open-electronics.org/arduino-full-memory-upgrade-to-the-last-atmel-toolchain-version/ (http://www.open-electronics.org/arduino-full-memory-upgrade-to-the-last-atmel-toolchain-version/)), non c'è da modificare nulla nel core, c'è da modificare vari file include della toolchain cambiando l'ordine di invocazione delle dipendenze, è questo che crea problemi a come lavora Arduino.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 05, 2013, 09:38 pm
Grazie Astro, ma ... purtroppo credo che alcune cose siano cambiate, difatti, sia con l'include originale che con il tuo ... si hanno una serie di problemi.

Comunque, problema per problema, si verificherà se il tuo include risolve o se invece saranno necessarie altre modifiche ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 05, 2013, 09:46 pm
Cominciamo con il più semplice dei programmi :

Code: [Select]
void setup() {
 
}

void loop() {
 
}


... più semplice di così si muore  :smiley-mr-green:

Appaiono una serie di problemi ... cominciamo a vedere se i primi sono da correggere oppure li possiamo solo considerare dei warnings e li trascuriamo.


Code: [Select]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:98:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void __vector_18()':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:127:21: warning: unused variable 'c' [-Wunused-variable]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:368:11: warning: unused variable 'current_config' [-Wunused-variable]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:467:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]



Code: [Select]
In file included from /Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.cpp:3:0:
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'IPAddress::operator uint32_t()':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:51:55: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'bool IPAddress::operator==(const IPAddress&)':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:75: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:108: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]



... che vengono fuori sia con che senza la sostituzione della "include" fornita da Astro.

A me sembrano warnings trascurabili, ma preferirei avere conferma prima di passare ai successivi. ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Sep 05, 2013, 10:31 pm
Alcuni warning sono sintomo di cattiva abitudine e possono portare il programmatore a commettere errori e qui il compilatore viene in aiuto emettendo dei warning.

Di cosa si tratta nello specifico non lo, bisogna studiare nel dettaglio il codice di arduino in corrispondenza di quei warning.

Diciamo che per il momento si possono pure tralasciare.

Mentre i warning che avvisano che un direttiva è stata ignorata devono mettere in allarme, perchè ignorare una direttiva PROGMEM comporta malfunzionamenti al programma.

Ciò che è cambiato è:
Ora c'è una funzione builtin di avr-gcc che viene usata da _delay_ms() e _delay_us(), che prendono entrambe un double.
Tuttavia è possibile disabilitare l'uso della builtin definendo __DELAY_BACKWARD_COMPATIBLE__

Ora i puntatori a pgm devono essere "const" ed è cosa ovvia, ma adesso il compilatore avvisa o termina in errore?
Sono deprecate le SIGNAL, che diventano ISR.

Non ci sono più gli alias prog_char ecc, ma c'è da vedere il file header pgmspace.h.

Non mi pare ci sia altro.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Sep 06, 2013, 12:22 am
x iscrizione
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 06, 2013, 06:34 am
Gli errori su HardwareSerial.cpp derivano principalmente da errori di scrittura del codice  :smiley-yell:
Sono segnalati dei confronti tra una variabile "i" di tipo "int" ed i membri di una struct che sono solo di tipo unsigned, quindi il compilatore segnala appunto l'incongruenza di tipi.
Altra cosa buffa, sono gli errori su variabili dichiarate ma non usate nella funzione indicata. Sarebbe da fare una ripulitura e revisione del codice.

Gli errori su IPAddress non li capisco, quel "dereferencing type-punned pointer will break strict-aliasing rules" non so bene cosa voglia dire.
Per ora, più che di errori di compatibilità del codice con la nuova toolchain, vedo errori di stesura del codice  ;)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 06:58 am

...
Per ora, più che di errori di compatibilità del codice con la nuova toolchain, vedo errori di stesura del codice  ;)


Già ... credo infatti che il nuovo compilatore sia solo ... più esigente e preciso e quindi, tutti quelli che saltano/salteranno fuori, sono essenzialmente "errori di stesura del codice" !!!  ]:D ]:D ]:D

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 06, 2013, 07:03 am
PS:
io per dire la verità non ho mai controllato i warning perché la compilazione non la tengo "verbosa" perciò non so mai cosa viene fuori compilando  :smiley-sweat:
Anzi, ieri facendo la prova, ho notato un altro warning, che tu non hai, nella compilazione di uno sketch vuoto. Ma ora è troppo presto per ricordarmi che problema era, e non sono a casa per controllare
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 07:07 am

...
Anzi, ieri facendo la prova, ho notato un altro warning, che tu non hai, nella compilazione di uno sketch vuoto. Ma ora è troppo presto per ricordarmi che problema era, e non sono a casa per controllare


... ce l'ho, ce l'ho, ma ... quello è molto più grave e me lo tenevo per dopo. Deciso che questi che ho esposto sono solo "warning trascurabili", passiamo a quello che è più importante  :smiley-yell:

Come ho detto ... una cosa per volta o non riusciamo a fare una collezione esatta dei problemi/soluzioni ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 02:32 pm
Ok, accettiamo allora che le due serie di "warning" sopra riportate siano "warning trascurabili" dovuti ad una ... non ottima stesura del codice di Arduino ;)


Il problema seguente mi sembra invece più importante ed andrebbe risolto :

Code: [Select]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.cpp:44:23: warning: '__progmem__' attribute ignored [-Wattributes]


... il fatto che ignori l'attributo __progmem__ non va proprio bene e quindi occorre vedere come correggere Print.cpp per risolvere questo problema.

Ogni aiuto e suggerimento è ovviamente ben accetto ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 06, 2013, 03:18 pm
Se apro l'IDE e compilo lo sketch con solo void setup e void loop ricevo gli errori di cui stiamo discutendo.
Se però prendo ed inserisco anche un solo spazio vuoto nel file e ricompilo, spariscono TUTTI gli errori...  :smiley-eek:
Se aggiungo un'istruzione REALE, come ad esempio la stampa su seriale con la funzione F() (costringendo quindi l'uso di PROGMEM), non ho nessuna segnalazione di errore!  :smiley-eek: :smiley-eek:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 03:30 pm

...
Se aggiungo un'istruzione REALE, come ad esempio la stampa su seriale con la funzione F() (costringendo quindi l'uso di PROGMEM), non ho nessuna segnalazione di errore!  :smiley-eek: :smiley-eek:


:smiley-eek: :smiley-eek: :smiley-eek: peggio .. invece a me, se nell loop() metto Serial.print (F("pippo")); ... proprio non compila più e mi da un errore :

Code: [Select]
prova.ino: In function 'void loop()':
prova.ino:11:16: error: variable '__c' must be const in order to be put into read-only section by means of '__attribute__((progmem))'


Tu hai un esempio che compila correttamente SENZA warning ed errori ?

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 06, 2013, 03:35 pm
No. Ottengo sempre quei warning.
Ho fatto caso ad una cosa, la seconda volta che compilo, anche se modifico il sorgente, non mi da più warning perché usa le lib che ha già compilato in precedenza. Me ne sono accorto rileggendo l'output sul terminale e poi cambiando chip, costringendo quindi l'IDE a ricompilare tutto da capo.

Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 03:44 pm
Scusa, prova a compilare questo :

Code: [Select]
void setup() {
 
 delay(2000);
 Serial.begin(9600);
 
}

void loop() {
 
 Serial.print(F("pippo"));
 
}


... piuttosto banale direi, ma ... non digerisce la Serial.print(F());

Code: [Select]
prova.ino: In function 'void loop()':
prova.ino:10:16: error: variable '__c' must be const in order to be put into read-only section by means of '__attribute__((progmem))'


... e non capisco bene che attributo occorre aggiungere per eliminare l'errore (... porca zozza più costante di una stringa fissa ... boh) e comunque ... non vorrei fosse legato a quel warning che segnalavo prima (... nella Print.cpp) ... :(

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 06, 2013, 03:50 pm
A me la Serial.print con l'F() funziona.

Piuttosto, se io apro il file Print.cpp e sostituisco la funzione Print::print dalla riga 42 alla riga 54 con la seguente:
Code: [Select]
size_t Print::print(const __FlashStringHelper *ifsh)
{
 //const char PROGMEM *p = (const char PROGMEM *)ifsh; <-- codice originale
 PGM_P p = (PGM_P)ifsh; //nuovo codice
 size_t n = 0;
 while (1) {
   unsigned char c = pgm_read_byte(p++);
   if (c == 0) break;
   n += write(c);
 }
 return n;
}


non ottengo più nessun warning relativamente al file Print.cpp ed a __progmem__.

PS: la soluzione l'ho trovata studiando il reference del file avr/pgmspace.h:
http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html

EDIT:
no, non va bene. PGM_P viene sostituito con const char *, manca PROGMEM. Sarebbe da usare PSTR ma mi dice che non è dichiarato...  :smiley-roll-blue:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 04:05 pm
Allora, ho sostituito la linea ed effettivamente la copilazione va a buon fine, ma i warning si sprecano ... possibile che tu non li abbia ???

Code: [Select]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:98:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void __vector_25()':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:127:21: warning: unused variable 'c' [-Wunused-variable]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void __vector_36()':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:153:21: warning: unused variable 'c' [-Wunused-variable]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void __vector_51()':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:168:21: warning: unused variable 'c' [-Wunused-variable]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void __vector_54()':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:183:21: warning: unused variable 'c' [-Wunused-variable]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:368:11: warning: unused variable 'current_config' [-Wunused-variable]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:467:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]



Code: [Select]
In file included from /Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.cpp:3:0:
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:51:55: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:75: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:108: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]



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



Quindi ... l'errore di prima SCOMPARE, ma i warning stanno sempre li ... :(

Guglielmo

P.S. : Naturalmente "Show verbose output during compilation" ... altrimenti non li vedi ;)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 04:09 pm
... i primi due gruppi credo siano sempre classificabili come "warning trascurabili" ma il terzo NO !!!

Nel senso ... compila, ma sembra che IGNORI l'attributo __progmem__ e ... questo NON va bene  :smiley-roll:

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 06, 2013, 04:13 pm
1) pare che copi dalla Flash.... la dimensione è identica al file compilato con la lib originale.

2) quei warning li ho anch'io ma sono riferiti a HardwareSerial.cpp mentre ora stavamo parlando di Print.cpp  ;)
Comunque a vederli sono sempre derivanti dal codice non riveduto, se noti sono segnalazioni di variabili non utilizzate o confronti fra tipi di dato differenti.
Gli ultimi warning, quelli da IPaddress, come detto in precedenza, non li capisco proprio.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Sep 06, 2013, 04:19 pm
Aggiungo una piccola cosa a proposito dei warning sulla HardwareSerial.cpp
Li da anche con IDE 1.05 STANDARD, con toolschain non aggiornata:
Code: [Select]
H:\Arduino\STANDARD_arduino-IDE\hardware\arduino\cores\arduino\HardwareSerial.cpp:127: warning: unused variable 'c'

Dal mio percorso si vede che ho usato la versione originale che ho tenuto (non si sa mai)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 04:22 pm

...
2) quei warning li ho anch'io ma sono riferiti a HardwareSerial.cpp mentre ora stavamo parlando di Print.cpp  ;)
Comunque a vederli sono sempre derivanti dal codice non riveduto, se noti sono segnalazioni di variabili non utilizzate o confronti fra tipi di dato differenti.
Gli ultimi warning, quelli da IPaddress, come detto in precedenza, non li capisco proprio.


Leo, naturamente stai usando l'IDE 1.0.5 ufficiale NON una tua night build vero ???  XD Perché dobbiamo fare una cosa generica per tutti, non per chi si compila anche l'IDE ;)

Io parlavo del terzo gruppo di warning :

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


che riguarda proprio Print.cpp riga 44 in cui ... IGNORA l'attributo __progmem__ (... ma almeno con la tua modifica arriva a fine compilazione) !!!

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 06, 2013, 04:29 pm
Io ho una 1.0.5 che ho scaricato un mesetto fa da Github e ricompilato...  :smiley-sweat: non credo però abbia modifiche a questi file.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Sep 06, 2013, 04:38 pm

Gli ultimi warning, quelli da IPaddress, come detto in precedenza, non li capisco proprio.

Nella classe IPAddress  c'e' un membro private di nome _address e questa funzione sembra che ne ritorni il puntatore.
Code: [Select]
operator uint32_t() { return *((uint32_t*)_address); };
L'errore punta come colonna esattamente all'ultima s di _address
Secondo me si può ignorare come errore.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Sep 06, 2013, 04:47 pm

Code: [Select]
size_t Print::print(const __FlashStringHelper *ifsh)
{ const char PROGMEM *p = (const char PROGMEM *)ifsh; <-- codice originale
...  return n;
}

PS: la soluzione l'ho trovata studiando il reference del file avr/pgmspace.h:


Ma scusate, la PROGMEM metterebbe la variabile nel memoria programma invece che in ram, giusto?
Capisco che si chieda di fare questo per una variabile globale, ma per una variabile interna ad una funzione?
Non è che ora il compilatore tende ad ignorare la PROGMEM perchè, oltre a const vuole anche che si dichiari static, qualificazione
che prima faceva da solo ?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 06, 2013, 05:06 pm
Difatti non sono sicuro al 100% del mio fix.
Probabile che facendo come dici tu sia meglio.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Sep 06, 2013, 05:16 pm
Mettendo static in quella funzione il warning di ignorato progmem sparisce
Code: [Select]
size_t Print::print(const __FlashStringHelper *ifsh)
{ static const char PROGMEM *p = (const char PROGMEM *)ifsh; // qui static
  size_t n = 0;
  while (1) {
    unsigned char c = pgm_read_byte(p++);
    if (c == 0) break;
    n += write(c);
  }
  return n;
}

ma appare:
Code: [Select]
H:\Arduino\ArduinoERW105\hardware\arduino\cores\arduino\Print.cpp:44: warning: only initialized variables can be placed into program memory area
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 06:26 pm
Che indendoi per "mettendo static" ??? Dove ???

Cortesemente riportiamo sempre il codice completo ... altrimenti è impossibile fare delle prove congrue tutti assieme ;)

E comunque ... se vogliamo essere sicuri che la variabile venga messa VERAMENTE nella PROGMEM ... dobbiamo trovare il modo di far scomparire quel warning :)

Guglielmo

P.S. : Anche perché, risolto quello, ho idea che ne risolveremo altri simili, in altri punti, mano mano che compariranno ;)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 06, 2013, 07:17 pm
Per inciso Leo, ho provato a modificare quella tua riga così :

Code: [Select]
//const char PROGMEM *p = (const char PROGMEM *)ifsh;
PROGMEM PGM_P p = (PROGMEM PGM_P)ifsh;


... la compilazione va a buon fine (come prevedibile) ma rimane questo warning :

Code: [Select]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.cpp:45:17: warning: '__progmem__' attribute ignored [-Wattributes]


... ora, puoi verificare (... magari disassemblando il codice) se comunque, nonostante il warning, la stringa viene prelevata dalla Flash e non dalla RAM in fase di esecutione ???  Perché, in caso affermativo, diventerebbe un "warning trascurabile" ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 08, 2013, 09:52 am
Secondo me non cambia molto, PGM_P dovrebbe essere un alias per "const char *", quindi è senza PROGMEM. Compila senza warning perché appunto non usa l'attributo __progmem__.
Se aggiungi PROGMEM, torni alla condizione iniziale, ossia riottieni esattamente la linea di codice inizialmente commentata, per cui torna fuori il warning.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 08, 2013, 10:13 am

Secondo me non cambia molto, PGM_P dovrebbe essere un alias per "const char *", quindi è senza PROGMEM. Compila senza warning perché appunto non usa l'attributo __progmem__.
Se aggiungi PROGMEM, torni alla condizione iniziale, ossia riottieni esattamente la linea di codice inizialmente commentata, per cui torna fuori il warning.


Si, Si, quello lo avevo visto ...
... quello che ti chiedevo se magari potevi dare un'occhiata al codice compilato e ... riuscire a capire se comunque usava la PROGMEM (... e quindi era un warning trascurabile) o meno (... e quindi era un vero problema) ;)

Grazie,

Guglielmo

P.S. : Ho già effettuato anche io il disassembleggio con avr-objdump ma ... sono piuttosto arruginito con l'assembler e, di sicuro, non conosco quello Atmel di questi micro ...  :smiley-mr-green:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 08, 2013, 10:17 am
Non lo conosco neanche io così a fondo, cosa credi  ;)
Ci darò un'occhiata...  :D
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 08, 2013, 10:41 am

Non lo conosco neanche io così a fondo, cosa credi  ;)
...


SICURAMENTE più di me  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

Guglielmo

P.S. : Parlassimo di quello Intel x86 sarebbe un'altra cosa ... ;)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 08, 2013, 11:09 am
Compilando con la mia modifica:
Code: [Select]
PGM_P p = (PGM_P)ifsh;

Nel disassemblato si trova la stringa salvata in Flash:
Code: [Select]

00000068 <_ZZ5setupE3__c>:
  68: 4d 41 52 49 4f 00                                   MARIO.


Usando il codice originale, si trova la stringa in Flash:
Code: [Select]

00000068 <_ZZ5setupE3__c>:
  68: 4d 41 52 49 4f 00                                   MARIO.


Compilando senza usare la funzione F(), la stringa in Flash non c'è.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Sep 08, 2013, 11:34 am
Non facciamo che quella è una variabile locale della funzione setup(), ma mi sembra strano trovarla li, anche perchè se no secondo l'esempio dovrebbe trovarsi in loop().

allega il disassemblato, please.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 08, 2013, 11:52 am
Allora, programma di prova :


Code: [Select]
void setup() { 
  delay(2000);
  Serial.begin(9600);
}

void loop() { 
  Serial.print(F("Stringa di prova"));
}



Modifica alla Print.cpp con cui è compilato :

Code: [Select]
size_t Print::print(const __FlashStringHelper *ifsh)
{
  //const char PROGMEM *p = (const char PROGMEM *)ifsh;
  PROGMEM PGM_P p = (PROGMEM PGM_P)ifsh;
  size_t n = 0;
  while (1) {
    unsigned char c = pgm_read_byte(p++);
    if (c == 0) break;
    n += write(c);
  }
  return n;
}



warning che si ottiene relativo alla Print.cpp :

Code: [Select]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.cpp:45:17: warning: '__progmem__' attribute ignored [-Wattributes]



allegato il disassemblato.

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Sep 08, 2013, 12:15 pm
Tutti gli attributi (o direttive del compilatore) devono essere specificati dopo il codice a cui vogliamo che il compilatore dedichi un comportamento specificato dal nome dell'attributo.

quindi:

const char *PROGMEM, non ha molto senso.
scusate:
PROGMEM PGM_P p, non ha molto senso.


Nella doc creata durante la compilazione c'è documentazione circa la funzione (o macro) __c che è valida solo in C++ e non è presente in C, non so se ho quella doc ancora adesso però ricordo di aver letto qualcosa quindi appena posso controllo la doc e vediamo di che si tratta, magari c'è un bug e il compilatore dice di ignorare ma poi non lo fa.

Ora vedo il disassemblato.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Sep 08, 2013, 12:21 pm
--> https://github.com/arduino/Arduino/issues/1274
Dicono di averlo risolto --> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34734  :|
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Sep 08, 2013, 01:37 pm
Io non trovo più la doc dove ho letto circa __c function (o macro) ecc, probabilmente tempo fa ho tentato di compilare la toolchain con le patch di atmel e ho creato la doc in pdf, ora non trovo più nulla forse ho cancellato il tentativo fallito di compilare la toolchain.

Mi ricordo anche che la doc ufficiale viene modificata da atmel per aggiungerci cose, ma non ci giurerei.

Riepilogando:
Come la classe Print a chiamare una funzione dedicata se il puntatore in RAM punta in flash, si fa una porcata che però funziona
si usa reiterpret_cast come questo:

Code: [Select]

class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))


Quando si scrive F("mia stringa"), ad opera di ppc (preprocessore C) viene trasformata nel modo seguente:
Code: [Select]

(reinterpret_cast<const __FlashStringHelper *>(PSTR(mia stringa)))

Anche PSTR viene espanso in:
Code: [Select]

(__extension__({static char __c[] PROGMEM = (mia stringa); &__c[0];}))


Ecco che spunta __c che non è una funzione ne macro ma un array di caratteri statico che punta in FLASH, cioè __c contiene l'indirizzo in flash di m (ia stringa\0)

Ora  questo cast (reinterpret_cast<const __FlashStringHelper *>(PSTR(mia stringa))) è da tipo static char [] a puntatore const
__FlashStringHelper, che non è una classe, ma una forward declare di una classe che non è stata definita in nessun posto (almeno io non l'ho trovata) quindi si tratta di un tipo usato per comodità così da permettere al C++ di richiamare il metodo di Print corretto.

Ora static ha senso solo dentro un modulo o compile unit, o dentro un blocco di codice {} e in effetti come si vede il blocco c'è: (__extension__(start block-->{static char __c[] PROGMEM = (mia stringa); &__c[0];}<--end block))
guardate che &__c[0]; preleva l'indirizzo da __C[0]


Probabilmente da static char a const __FlashStringHelper * qualcosa non torna, ma invece si perchè il cast è da &__c a const __FlashStringHelper *, booo mi sono perso, vedete voi di usare qualcosa di C standard senza coninvolgere l'arduino core.

Quasi sicuramente il problema è dentro il metodo print, quando si fa il cast da  const __FlashStringHelper * a puntatore a in flash.

Ciao.

Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 08, 2013, 01:45 pm

... booo mi sono perso, vedete voi di usare qualcosa di C standard senza coninvolgere l'arduino core.
...


Ahahahahah ... se ti sei perso tu fugurati noi ...

Comunque, mi sembra che sia appurato che, in un modo o nell'altro, i dati FINISCONO nella FLASH e quindi, anche se il compilatore si incavola e da un warning, alla fine il tutto va ...

Lo accettiamo cone un "warning trascurabile" e passiamo al successivo ERRORE ?

Attendo la vostra opinione prima di proseguire ... ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 11, 2013, 11:33 pm
OK, accettiamo che anche questo "warning" sia in realtà trascurabile e passiamo invece ad un errore più serio che deve essere risolto, pensa l'inusabilità della libreria WiFi ...


Riprendiamo il nostro codice e aggiungiamo solo una "include" :

Code: [Select]
#include <WiFi.h>

void setup() { 
  delay(2000);
  Serial.begin(9600);
}

void loop() { 
  Serial.print(F("Stringa di prova"));
}



gli errori che ne conseguono sono :


Code: [Select]
In file included from /Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/utility/wifi_drv.h:6:0,
                 from /Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:1:
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:51:55: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.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.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:75: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:108: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp: In member function 'uint8_t* WiFiClass::macAddress(uint8_t*)':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:144:1: error: unable to find a register to spill in class 'POINTER_REGS'
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:144:1: error: this is the insn:
(insn 36 26 27 2 (set (reg:QI 23 r23)
        (mem/c:QI (plus:HI (reg/f:HI 28 r28)
                (const_int 2 [0x2])) [9 S1 A8])) /Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:142 28 {movqi_insn}
     (nil))
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:144: confused by earlier errors, bailing out



... ???? AIUTOOOOOOOO

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 12, 2013, 10:04 am
Io ho un errore differente!!  :smiley-eek: :smiley-eek:

Code: [Select]

/home/leo/Documenti/Software/Programmazione/Arduino/arduino-1.0.x/libraries/WiFi/WiFi.cpp: In member function 'uint8_t* WiFiClass::macAddress(uint8_t*)':
/home/leo/Documenti/Software/Programmazione/Arduino/arduino-1.0.x/libraries/WiFi/WiFi.cpp:144:1: error: unable to find a register to spill in class 'POINTER_REGS'
/home/leo/Documenti/Software/Programmazione/Arduino/arduino-1.0.x/libraries/WiFi/WiFi.cpp:144:1: error: this is the insn:
(insn 36 26 27 2 (set (reg:QI 23 r23)
        (mem/c:QI (plus:HI (reg/f:HI 28 r28)
                (const_int 2 [0x2])) [9 S1 A8])) /home/leo/Documenti/Software/Programmazione/Arduino/arduino-1.0.x/libraries/WiFi/WiFi.cpp:142 28 {movqi_insn}
     (nil))
/home/leo/Documenti/Software/Programmazione/Arduino/arduino-1.0.x/libraries/WiFi/WiFi.cpp:144: confused by earlier errors, bailing out


Com'è possibile???
Scusate un attimo, a parte la piattaforma differente, ma la toolchain che stiamo usando è uguale per tutti?
Io ho la AVR8 versione 3.4.2 compilata da Atmel, voi?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 12, 2013, 11:03 am

Io ho un errore differente!!  :smiley-eek: :smiley-eek:
...


Non mi sembra Leo ... ti mancano solo i "warning" iniziali che, non so perché a te non da, ma la parte ERRORE è esattamente la stessa mi pare ...  :smiley-roll:

Difatti, se dalla mia togli i "warning" ottieni esattamente :

Code: [Select]
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp: In member function 'uint8_t* WiFiClass::macAddress(uint8_t*)':
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:144:1: error: unable to find a register to spill in class 'POINTER_REGS'
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:144:1: error: this is the insn:
(insn 36 26 27 2 (set (reg:QI 23 r23)
       (mem/c:QI (plus:HI (reg/f:HI 28 r28)
               (const_int 2 [0x2])) [9 S1 A8])) /Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:142 28 {movqi_insn}
    (nil))
/Users/gpb01/Desktop/Prove Toolchain/Arduino 1.0.5 TL.app/Contents/Resources/Java/libraries/WiFi/WiFi.cpp:144: confused by earlier errors, bailing out


... che mi sembrano esattamente i tuoi ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Sep 12, 2013, 11:32 am
Argh... si vede che gli strascichi della febbre di ieri sera stanno ancora colpendo  :smiley-sweat: :smiley-sweat:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Sep 30, 2013, 12:05 pm
Qualche novità ?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Sep 30, 2013, 12:16 pm

Qualche novità ?


Purtroppo NO ... quell'errore per me è piuttosto oscuro e ... non ho visto nessuno proporre un tentativo di soluzione ...   :(

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Oct 01, 2013, 12:54 am
Cerca con google "unable to find a register to spill in class 'POINTER_REGS'", siamo in buona compagnia.

Il bug è noto ed è stato risolto nella 4.0, ma ora è ritornato. Quindi se di bug del compilatore si tratta c'è poco da fare al momento se non trovare un workaround, per aggirare il problema. Alcuni dicono di ottimizzare con O1, anziché Os, ma con arduino style si è vicolati ad usare Os, quindi....

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Oct 01, 2013, 08:40 am
Se è un bug del compilatore.... bella fregatura. Tappano una falla e se ne apre un'altra a 10 cm di distanza!  :smiley-zipper:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Oct 01, 2013, 09:03 am
Domanda forse stupida, e forse avete già risposto.
Ma qualcuno ha installato e usato Avr Studio? L'ultima versione dovrebbe usare la toolchain nuova. Anche li usando il codice in esame escono questi errori?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Oct 01, 2013, 09:41 am
Scusa Nid ma come vedi dal titolo del thread qui si parla di MAC (opzionalmente *nix, quindi Linux).
AvrStudio va solo su Windows.  ;)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Oct 01, 2013, 09:49 am
@Nid
C'è la discussione apposita per Windows --> http://forum.arduino.cc/index.php?topic=96976.0 (http://forum.arduino.cc/index.php?topic=96976.0)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Oct 01, 2013, 11:38 am

Scusa Nid ma come vedi dal titolo del thread qui si parla di MAC (opzionalmente *nix, quindi Linux).
AvrStudio va solo su Windows.  ;)


Ho anche Linux Ubuntu e lì ho aspettato a mettere la toolchain nuova, su Win l'ho aggiornata (ho mantenuto però un IDE non aggiornato).
Lo sò, ma mi sono un pò perso, portate pazienza. Il problema non viene dato in qualsiasi versione di S.O. si usi?

Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Oct 01, 2013, 12:52 pm
Ricordo che stiamo parlando di codice C++ e che quindi il compilatore è g++.
Quelle librerie io non le conosco e non ho voglia o interesse a studiarle, sicuramente c'è un workaround, ma finche non si trova qualcuno che si mette li a scrivere codice isolato per replicare il problema, non si va da nessuna parte.

Potrei dire scrivete un programmino di 5 righe senza usare librerie esterne che una volta compilato dia lo stesso errore e poi proviamo a togliere Os ecc, o altre prove che vengono in mente solo dopo aver visionato il codice isolato. Ma ci sono grosse limitazioni usando l'ide Arduino, dovreste compilare a manina.

Da quello che ho letto sembra che l'errore si presenti quando ci sono puntatori a puntatori che puntano ad un puntatore, ma ho letto tanto rapidamente che la devo considerare solo una vaga idea.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Oct 01, 2013, 01:26 pm

...
Lo sò, ma mi sono un pò perso, portate pazienza. Il problema non viene dato in qualsiasi versione di S.O. si usi?
...


Io ho un Win7 in una Virtual Mchine su OS X ed ho provato ad inserire, come descrive il link indicato da Leo, la nuova ToolChain precompilata da Atmel, sotto IDE 1.05 in Windows e ... mi sembra si comporti esattamente allo stesso modo. Se tu ce l'hai, basta che prendi quel piccolo esempio che ho messo e provi a compilare ...

Facci sapere ;)

Guglielmo

P.S. : Anche su Linux mi sembra che Leo riscontri lo stesso problema ...
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Oct 01, 2013, 02:33 pm

Io ho un Win7 in una Virtual Mchine su OS X ed ho provato ad inserire, come descrive il link indicato da Leo, la nuova ToolChain precompilata da Atmel, sotto IDE 1.05 in Windows e ... mi sembra si comporti esattamente allo stesso modo. Se tu ce l'hai, basta che prendi quel piccolo esempio che ho messo e provi a compilare ...
Facci sapere ;)
Guglielmo
P.S. : Anche su Linux mi sembra che Leo riscontri lo stesso problema ...


Si, nei post precedenti di questo thread sono intervenuto e ho riscontrato gli stessi errori, ma io provavo su Windows (scusate ma davo per scontato che il S.O. c'entrasse ben poco).
In questo thread a differenza di quello per Windows mi sembrava @guglielmo e @leo stessero affrontando meglio il problema, in maniera più sistematica. Sorry

P.S. ma siete sicuri abbia senso fare differenze tra S.O. per questi problemi di compilazione?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Oct 01, 2013, 02:40 pm

Cerca con google "unable to find a register to spill in class 'POINTER_REGS'", siamo in buona compagnia.
Il bug è noto ed è stato risolto nella 4.0, ma ora è ritornato. Quindi se di bug del compilatore si tratta c'è poco da fare al momento se non trovare un workaround, per aggirare il problema. Alcuni dicono di ottimizzare con O1, anziché Os, ma con arduino style si è vicolati ad usare Os, quindi....


Secondo te l'IDE richiama il compilatore con parametri scritti nel codice java compilato?
Non risulta la possibilità di avere un file txt tra i tanti sotto l'IDE per personalizzare questi parametri ?

@Leo72 che usi la nightybuild e te la compili, non è che si riesce a trovare nei sorgenti dell'IDE dove passa i parametri e provare a cambiare questo parametro?
E' solo una idea.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Oct 01, 2013, 02:45 pm

...
P.S. ma siete sicuri abbia senso fare differenze tra S.O. per questi problemi di compilazione?


NO, l'unica differenza poteva essere magari una cattiva compilazione della Toolchain su Mac ... per questo volevo un riscontro che anche le loro pre-compilate (Win, Linux) dessero lo stesso problema ... e l'ho avuto  ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Oct 01, 2013, 03:24 pm
Se dipende da un bug nei sorgenti, la stessa versione compilata per Win, Linux o Mac dovrebbe portare a generare lo stesso errore, a meno che non ci siano direttive specifiche per i vari SO. Ma non credo perché sia su Lin che su Mac, prelevando l'ultima toolchain, arriviamo allo stesso errore.

Che poi credo proprio che dipenda dal compilatore. Leggendo un pò di documentazione in rete, ho appreso che il compilatore ottimizzando il codice può portare anche all'uso di registri della CPU per alcune variabili, in modo da velocizzare l'esecuzione del programma, evitando di depositare dati in RAM a cui poi deve accedere. La RAM è memoria esterna alla CPU, i registri sono invece interni.

Lì pare che ci sia un problema di assegnazione di qualche dato ad un registro.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Oct 01, 2013, 03:44 pm
Guardando ai sorgenti dell'IDE Arduino, la compilazione viene fatta dal Compiler.java
Dentro ci sono 2 funzioni getCommandCompilerCPP() e getCommandCompilerC()  (riga 600)
Code: [Select]
List baseCommandCompilerCPP = new ArrayList(Arrays.asList(new String[] {
     avrBasePath + "avr-g++",
     "-c", // compile, don't link
     "-g", // include debugging info (so errors include line numbers)
     "-Os", // optimize for size
     Preferences.getBoolean("build.verbose") ? "-Wall" : "-w", // show warnings if verbose
     "-fno-exceptions",
     "-ffunction-sections", // place each function in its own section
     "-fdata-sections",
     "-mmcu=" + boardPreferences.get("build.mcu"),
     "-DF_CPU=" + boardPreferences.get("build.f_cpu"),
     "-MMD", // output dependancy info
     "-DUSB_VID=" + boardPreferences.get("build.vid"),
     "-DUSB_PID=" + boardPreferences.get("build.pid"),      
     "-DARDUINO=" + Base.REVISION,
   }));


Alcuni parametri sono fissi mentre altri sono letti dal file boards.txt , naturalmente a seconda della board.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Oct 05, 2013, 12:29 am
Si il parametro optimize è fisso a s (size), quindi se sei in grado di modificarlo e fare le prove con -O2 o -O1 fai e riporta qui. Tempo addietro ho proposto a chi è in grado di programmare in java di modificare il preprocessore di arduino al fine di fargli interpretare delle #define APP_OPT size, o APP_OPT 02 e altre macro dummy, al fine di poter acquistare flessibilità. Il preprocessore di arduino legge i sorgenti prima di avviare la compilazione e quindi interpreta le macro dummy speciali, che iniziano con APP (arduino Pre Processor) e in base a queste, modifica i flags.

Se tu nid sei in grado di programmare java potresti provarci, per ciò che riguarda la logica io posso dedicarci tempo ma non potrei passare alle vie di fatto perchè allergico a java.   :P

Quote
"-Os", // optimize for size


In questo documento Atmel http://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CD4QFjAB&url=http%3A%2F%2Fwww.atmel.com%2FImages%2Favr8-gnu-toolchain-3.4.2.939-readme.pdf&ei=_DpPUsjhBuG44ATTm4CQDA&usg=AFQjCNF-Ty4vJuDAED7ERA5wWRynnBucxg&bvm=bv.53537100,d.bGE (http://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CD4QFjAB&url=http%3A%2F%2Fwww.atmel.com%2FImages%2Favr8-gnu-toolchain-3.4.2.939-readme.pdf&ei=_DpPUsjhBuG44ATTm4CQDA&usg=AFQjCNF-Ty4vJuDAED7ERA5wWRynnBucxg&bvm=bv.53537100,d.bGE)

nella sezione "Issues Fixed" c'è questo bug risolto: PR513: An "unable to find a register to spill" issue has been fixed for Tiny architecture

Questo conferma che il bug è noto e che questi alle volte ritornano 8)
C'è da vedere se con tiny quel bug si verifica, sempre che gpb01 non stia proprio compilando per tiny.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Oct 05, 2013, 06:43 am
Il problema è che la lib ethernet non è compatibile con i Tiny per cui non si può fare la prova che dici usando il codice arduinico.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Oct 05, 2013, 12:40 pm

Il problema è che la lib ethernet non è compatibile con i Tiny per cui non si può fare la prova che dici usando il codice arduinico.


Vero non ci avevo pensato, anzi a dire il vero non conosceo tutti i tiny di atmel e non sapevo fosse totalmente impossibile. Ecco un buon motivo per dare seguito alla mia di isolare il codice che comporta il bug in modo da replicarlo potenzialmente con tutte le varianti possibili, quindi diverse MCU e diversi flags di ottimizazione.

Bisogna conoscere nel dettaglio cosa fanno tutte le librerie coinvolte.

[OT] ho dato uno sguardo a gcc 4.8 e ci sono interessanti novità:
Ora il compilatore può usare RTEMS http://wiki.rtems.org/wiki/index.php/BoardSupportPackageInformation (http://wiki.rtems.org/wiki/index.php/BoardSupportPackageInformation) o la avr-libc.

http://gcc.gnu.org/gcc-4.8/changes.html (http://gcc.gnu.org/gcc-4.8/changes.html)

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Oct 05, 2013, 04:29 pm

Se tu nid sei in grado di programmare java potresti provarci, per ciò che riguarda la logica io posso dedicarci tempo ma non potrei passare alle vie di fatto perchè allergico a java.   :P

Conosco un poco java ma non saprei come ricompilare l'IDE, sorry.
Secondo me si potrebbe provare a ricompilare con quel parametro i sorgenti che  l'IDE  mette nella cartella build e vedere se il compilatore ancora si arrabbia.
Però se funziona, non credo averebbe senso avere un ulteriore IDE non ufficiale.
Dovrebbe essere una possibilità da inserire nell'IDE ufficiale quella di fargli leggere dei parametri maggiori dal file boards.txt come ad esempio quale ottimizzazione attivare.

EDIT:
Ho provato a prendere lo sketch che da errori in verbose, controllato che da warning su progmem ingorato dentro a Print.cpp
Allora ho creato file bat con stessi parametri ma con -O1 e ho ricompilato solo la Print.cpp
Mi da lo stesso errore, "line 44 warning: ___progmem___ attribute ignored"
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Oct 06, 2013, 10:53 am
@Mauro:
oltre al problema compatibilità codice, c'è da vedere la compatibilità hardware, parlo di memoria ad esempio.
Tornando al bug, come hai ben capito esso viene fuori per come è stato scritto il codice, non perché usa l'Ethernet. Quindi andrebbe trovato il modo di replicarlo, ma bisognerebbe analizzare non solo tutta la catena di include della libreria che gestisce l'Ethernet ma anche i changelog del compilatore. Ho avuto un problema simile quando ho provato a compilare un RTOS scritto da un utente: con la toolchain integrata nell'IDE nessun problema, quando l'ho compilato con la nuova toolchain, ho avuto diversi problemi relativi al modo in cui vengono gestite le ISR. E non ho capito da dove l'errore viene fuori.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Oct 06, 2013, 12:53 pm
Quote
EDIT:
Ho provato a prendere lo sketch che da errori in verbose, controllato che da warning su progmem ingorato dentro a Print.cpp
Allora ho creato file bat con stessi parametri ma con -O1 e ho ricompilato solo la Print.cpp
Mi da lo stesso errore, "line 44 warning: ___progmem___ attribute ignored"


Ho avuto l'impressione si capisse a quale errore mi riferivo, e invece mi sono sbagliato. Questo warning può o meno essere importante, c'e da vedere se anche ignorando l'attributo il compilatore si comporta come ci si aspetta, cioè se la stringa è in FLASH allora il warning non dovrebbe apparire, ma se compare il compilatore dice di ignorare un attributo ma in realtà si comporta correttamente. Per dirla breve, se ignora l'attributo non salva il dato in FLASH.

Questo comportamento è indipendente dal flags di ottimizzazione, e quindi io mi riferivo all'errore (no warning) unable to find a register to spill. Si dovrebbe provare a compilare per un'altro micro della stessa famiglia o anche di un altra per vedere se è dipendente dal'hardware, così da isolare poco per volta il codice responsabile. L'errore potrebbe non presentarsi se si modifica il flag di ottimizzazione, specie se lo portiamo a -O00 (zero zero).

@leo
Non c'è alternativa, si deve isolare il codice che comporta quel problema, diversamente non è possibile fare indagini, cioè posso io posso compilare codice C/C++ abilitando o meno i flags in modo flessibile e semplice ma non posso usare le librerie e il core di arduino, e sarebbe controproducente usarle. Bisogna ridurre il codice a poche righe, poche nel senso il minor numero possibile, una o due schermate.

Nel compilare avr-gcc con le atmel patch su Fedora 17 sto avendo parecchi problemi, tutto procede regolarmente e si ferma con errore quando durante la compilazione multilib si passa a compilare per attiny e l'errore e di "as" assembler e si riferisce al file libgcc/config/avr/lib1funcs.S che è un file patchato da atmel, precisamente alla riga 2038.

Ora non capisco il problema, perchè è tutto fatto correttamente, allora sono andato a guardare le patch e ho trovato caratteri non ascii nei file e questo sicuramente non è legale, e "as" è fiscale come pure gcc.
Conoscete qualche tool *nix per ripulire i file ASCII?

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Oct 07, 2013, 02:31 pm
Nella versione 4.7.2 per avr ora non c'è più bisogno di PROGMEM:
Support for the named address spaces __flash, __flash1, …, __flash5 and __memx has been added. These address spaces locate read-only data in flash memory and allow reading from flash memory by means of ordinary C code, i.e. without the need of (inline) assembler code:

Code: [Select]
const __flash int values[] = { 42, 31 };

int add_values (const __flash int *p, int i)
{
   return values[i] + *p;
}


Quote
6.16.1 AVR Named Address Spaces

On the AVR target, there are several address spaces that can be used in order to put read-only data into the flash memory and access that data by means of the special instructions LPM or ELPM needed to read from flash.

Per default, any data including read-only data is located in RAM (the generic address space) so that non-generic address spaces are needed to locate read-only data in flash memory and to generate the right instructions to access this data without using (inline) assembler code.

__flash
   The __flash qualifier will locate data in the .progmem.data section. Data will be read using the LPM instruction. Pointers to this address space are 16 bits wide.
__flash1
__flash2
__flash3
__flash4
__flash5
   These are 16-bit address spaces locating data in section .progmemN.data where N refers to address space __flashN. The compiler will set the RAMPZ segment register approptiately before reading data by means of the ELPM instruction.
__memx
   This is a 24-bit address space that linearizes flash and RAM: If the high bit of the address is set, data is read from RAM using the lower two bytes as RAM address. If the high bit of the address is clear, data is read from flash with RAMPZ set according to the high byte of the address.


Quindi non c'è più il problema dei device con flash più grande di 64kb, allora perchè ostinarsi ad usare le patch di atmel?

Per il bug unable to find a register to spill, si veda qui http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56164 (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56164)

Il codice isolato e qui http://gcc.gnu.org/bugzilla/attachment.cgi?id=29322&action=edit (http://gcc.gnu.org/bugzilla/attachment.cgi?id=29322&action=edit)
Copiare il codice in un file di nome  spill-flash-2.c e compilare con:
avr-gcc spill-flash-2.c -S -Os -mmcu=atmega8

Io mi libero della vecchia versione della toolchain patchata atmel, perchè quella nuova io non riesco a compilarla, poi potrò studiare il problema.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Oct 07, 2013, 03:00 pm
Quote
Ma non vi siete ancora stufati di perdere tutto questo tempo con la roba GNU ?

No, ancora no. :P

lock è che sono niubbo con asm, in sostanza c'è un simbolo nei file .S che credevo fosse sporcizia, dopo che as mi ha data un messagio di errore, invece quel simbolo è normale ma non so cos'è.

Apri il file incriminato con un editor e lo vedi da te quel simbolo, e poi se sai che è posta.

Comuque non è quello il problema.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Oct 07, 2013, 03:39 pm
@mauro, aggiorna il codice che hai postato, mettilo nei tag code altrimenti si perdono dei pezzi.  :D
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Oct 08, 2013, 02:22 am

@mauro, aggiorna il codice che hai postato, mettilo nei tag code altrimenti si perdono dei pezzi.  :D


Giuro un folletto ha sistemato il post per me, e penso lo abbia fatto in altre occasioni, chi sarà mai?

Quote
Ecco, una altra cosa che non sopporto: GAS ! GNU assembler!

In particolare mi ha fatto perdere un sacco di tempo sulle schede MIPS, e notare, codice (linux che non ho scritto io) perfettamente compilato nel 2009 con roba GNU che diventa perfettamente incompatibile con se stessa nel 2013! Quindi dovrei continuamente stargli dietro ? Inaccettabile!


lock tu non è che non sopporti GAS, proprio non sopporti GNU e in generale i progetti open sources, no perchè le cose stanno così per qualunque cosa GNU o in genere GPL, io lo considero il prezzo da pagare per avere innovazione, pensa a quelli che si appogiavano ad Hal per ricavare le risorse hardware/software, ora ci sono i servizi udev e tante cose ancora cambieranno. 

ops non ci dilunghiamo troppo senno finisce che andiamo fuori strada.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Oct 08, 2013, 05:56 am

Il problema è che la lib ethernet non è compatibile con i Tiny per cui non si può fare la prova che dici usando il codice arduinico.


Occhio che stiamo parlando della lib WiFi ... l'ethernet NON l'ho ancora provata ...  ]:D

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 04, 2013, 08:47 pm

E' uscita anche la 3.4.3 che usa avrgcc 4.8.1 al posto del 4.7.2 , link precedenti e --> http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.4.3/


... e naturalmente, come hanno fatto con la 3.4.2, anche con la 3.4.3 hanno di nuovo modificato la struttura dello script che, sotto MAC, da il solito fiume di errori (... anche dopo aver apportato le correzioni che nella 3.4.2 avevano risolto ... ne hanno introdotti un altro bel po') !

CHE PALLE, NUN SE NE PO' PIU' !!!  (http://www.nikonland.eu/forum/public/style_emoticons/default/bigemo_harabe_net-89.gif)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Dec 04, 2013, 08:55 pm
Possiamo sempre riprendere il tuo post e aggiornarlo. --> http://forum.arduino.cc/index.php?topic=186435.0 (http://forum.arduino.cc/index.php?topic=186435.0)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 04, 2013, 09:40 pm

Possiamo sempre riprendere il tuo post e aggiornarlo. --> http://forum.arduino.cc/index.php?topic=186435.0 (http://forum.arduino.cc/index.php?topic=186435.0)


Appena sarò riuscito a capire cosa altro non va questa volta nello script ... (http://www.nikonland.eu/forum/public/style_emoticons/default/GrattaTesta.gif)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: lestofante on Dec 04, 2013, 09:49 pm
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?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 06:24 am
C'è voluto un po' per capire come avevano riorganizzato tutto lo script della AVR Toolchain 3.4.3 ma ....

Code: [Select]
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 !!!  (http://www.nikonland.eu/forum/public/style_emoticons/default/scimmia.gif)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Dec 05, 2013, 07:41 am
Ovviamente con tutti i problemi del caso con le lib di Arduino... :smiley-roll:
PS:
mi passi lo script, che oggi provo anch'io?  :smiley-sweat:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 08:02 am

mi passi lo script, che oggi provo anch'io?  :smiley-sweat:


Poi aggiorno anche QUESTO (http://forum.arduino.cc/index.php?topic=186435.0) 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 (http://www.phoenixsea.ch/downloads/AVR/AVR_Toolchain_v3.4.3.zip)  (circa 135 MB) ;)

Ci mette un bel po' a compilare il tutto ... quindi ... abbi pazienza  :smiley-mr-green:

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Dec 05, 2013, 08:05 am
Oggi provo, ora non sono a casa (cambio di turno: sono a lavoro stamattina...  :smiley-sweat: ).
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 08:06 am

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


... 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. ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Dec 05, 2013, 08:08 am
@Guglielmo:
continuo qui questa (http://forum.arduino.cc/index.php?topic=202624.msg1495063#msg1495063) discussione perché altrimenti di là inquiniamo il thread.
Questa toolchain è  più aggiornata di quella che attualmente è nell'ultima versione di Crosspack oppure è la stessa?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 08:20 am
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 ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 08:22 am
La discussione sulla nuova toolchain 4.3.4 per MAC OS X prosegue QUI (http://forum.arduino.cc/index.php?topic=186435.msg1495070#msg1495070) ... così non continuiamo con l'off-topic su questo thread  :smiley-mr-green:

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 08:45 am
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) ...  :smiley-roll:

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Dec 05, 2013, 09:17 am
ho fatto il merge con i msg dell'altro thread, ci saranno un paio di msg fuori posto ma almeno teniamo tutto qui
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Dec 05, 2013, 09:45 am

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.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 10:03 am

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 ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 10:08 am
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 (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) ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 12:05 pm
Primo post del thread aggiornato con i necessari link.

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 01:39 pm
Allora, vediamo i problemini che si incontrano con questa nuova versione ... per ora ho questi :

Code: [Select]

/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 ;)

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

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Dec 05, 2013, 01:42 pm
Questo PROGMEM è una piaga.  :smiley-eek:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: lestofante on Dec 05, 2013, 01:50 pm
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.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 02:05 pm
Non credo ... è semplicemente cambiata la sintassi ...

... la vecchia :

Code: [Select]
const prog_uint16_t pippo PROGMEM = 1;

diventa, nella nuova sintassi : :

Code: [Select]
const uint16_t pippo __attribute__ (( __progmem__ )) = 1;

oppure :

Code: [Select]
PROGMEM static const uint16_t pippo = 1;

... entrambe NON danno problemi con la nuova Toolchain ;)

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

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

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 02:06 pm
Il guaio è che non riesco a correggere quella riga (44) della Print.cpp ...

Code: [Select]
const char PROGMEM *p = (const char PROGMEM *)ifsh;

... modifico da un lato e mi da errore dall'altro e videversa  :~ :~ :~

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: astrobeed on Dec 05, 2013, 02:20 pm
Anche se non è MAC l'attuale toolchain Atmel per Windows, precompilata, alla fine ha gli stessi problemi, è inutilizzabile con il core di Arduino.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 02:34 pm

Anche se non è MAC l'attuale toolchain Atmel per Windows, precompilata, alla fine ha gli stessi problemi, è inutilizzabile con il core di Arduino.


Ma si, ormai è chiaro, NON è un problema di ambiente, è la stessa cosa su tutti gli ambienti, è ... un problema nel "core" di Arduno  !

Certo, magari, riuscendo a trovare una qualche soluzione, la si potrebbe proporre su Github ... così che la incorporino definitivamente. ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Dec 05, 2013, 02:50 pm

Non credo ... è semplicemente cambiata la sintassi ...
... la vecchia :
Code: [Select]
const prog_uint16_t pippo PROGMEM = 1;
diventa, nella nuova sintassi : :
Code: [Select]
const uint16_t pippo __attribute__ (( __progmem__ )) = 1;


Ma la PROGMEM non è una #define ?
Se si, si potrebbe "aggiungere" o cambiare questa define come "__attribute__ (( __progmem__ )) "  ?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 02:53 pm

Ma la PROGMEM non è una #define ?
Se si, si potrebbe "aggiungere" o cambiare questa define come "__attribute__ (( __progmem__ )) "  ?


Rimandato a Settembre, vai a studiare ... http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html (http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html) ...  XD XD XD

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: astrobeed on Dec 05, 2013, 03:01 pm

Rimandato a Settembre, vai a studiare ...


(http://www.roboteck.it/doc/rotfl.gif)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: nid69ita on Dec 05, 2013, 03:24 pm


Ma la PROGMEM non è una #define ?
Se si, si potrebbe "aggiungere" o cambiare questa define come "__attribute__ (( __progmem__ )) "  ?

Rimandato a Settembre, vai a studiare ... http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html (http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html) ...  XD XD XD
Guglielmo


Boh, forse non ho capito io ma al link che hai messo si vede che la PROGMEM è una define:
Code: [Select]
#define PROGMEM   __ATTR_PROGMEM__

Perciò questo
Code: [Select]
const prog_uint16_t pippo PROGMEM = 1;
diventa con l'attuale toolchain
Code: [Select]
const prog_uint16_t pippo  __ATTR_PROGMEM__ = 1;

Ma se la nuova sitassi è questa:
Code: [Select]
const uint16_t pippo __attribute__ (( __progmem__ )) = 1;
modificare la #define in
Code: [Select]
#define PROGMEM  (__attribute__ (( __progmem__ )))
Non porterebbe la sostituzione alla nuova sintassi ?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: lestofante on Dec 05, 2013, 03:33 pm
https://github.com/arduino/Arduino/pull/1448

(notare che spunta sempre fuori leo)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Dec 05, 2013, 03:52 pm
mmm....le risate me le faccio volentieri, ma si tratta comunque di una macro, quindi una #define.

L'attributo è "__attribute__ (( __progmem__ ))".
Quando il parser di gcc incontra __attribute__ sa che deve comportarsi in modo diverso in base all'attributo specificato dopo il token __attribute__. Di attributi oltre a __progmem__ c'è n'è tanti altri alcuni dipendenti dalla architettura e/o piattaforma.

Allora la define PROGMEM sarà simile a:
Code: [Select]

#define PROGMEM             __attribute__ (( __progmem__ ))


Il problema con il core parte da qui:
Code: [Select]

//  WString.h - String library for Wiring & Arduino
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))


PSTR(s)   ((const PROGMEM char *)(s)), è un cast di una literal string a puntatore in progmem, cioè:
Code: [Select]

((const PROGMEM char *)("miastringinprogmem"))


La define F totalmente espansa diventa:
Code: [Select]
(reinterpret_cast<const __FlashStringHelper *>(((const __attribute__ (( __progmem__ )) char *)("miastringinprogmem")))
Che equivale a dire: miastringinprogmem viene trasformata in un puntatore const PROGMEM char * il quale viene interpretato come puntatore a FlashStringHelper che è una forward declare di una classe inesistente. Tutto sto popò di cast solo per fare in modo che C++ sia in grado di scegliere il metodo corretto da chiamare.

La print da così:
Code: [Select]

size_t Print::print(const __FlashStringHelper *ifsh)
{
 const char PROGMEM *p = (const char PROGMEM *)ifsh;
 size_t n = 0;

dovrebbe diventare
Code: [Select]

size_t Print::print(const __FlashStringHelper *ifsh)
{
 const PROGMEM char *p = (const PROGMEM char *)ifsh;
 size_t n = 0;

Anche se p dovrebbe essere:
Code: [Select]

PGM_P p =  (const PROGMEM char *)ifsh;

PROGMEM dice:
Attribute to use in order to declare an object being located in flash ROM.

Mentre const __FlashStringHelper *ifsh è un puntatore e pertanto il cast dovrebbe essere ancora più semplice
Code: [Select]

PGM_P p =  (PGM)ifsh;


Purtroppo io non posso provare.

Tutti gli altri errori sono dei warning che da bravo il compilatore emette e che è possibile farli scomparire usando il flag opportuno inserito nella variabile ambiente CXX_FLAGS, ma ovviamente non è la soluzione corretta, in quanto questi warning sono utili quando scriviamo codice che ancora non sappiamo lavori correttamente.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 05:21 pm
Però, scusate, c'è qualche cosa che non capisco ...

Scaricate la 1.0.5 UFFICIALE con la SUA toolchain, nelle preferenze mettete "verbose" per la compilazione e compilate queste quattro righe :

Code: [Select]

void setup() {  
 delay(2000);
 Serial.begin(9600);
}

void loop() {  
 Serial.print(F("Stringa di prova"));
}


... controllate cortesemente tutti i dettagli della compilazione e mi dite quali warning trovate ...  :smiley-roll:

GRAZIE !

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 05:29 pm

.....
Mentre const __FlashStringHelper *ifsh è un puntatore e pertanto il cast dovrebbe essere ancora più semplice
Code: [Select]

PGM_P p =  (PGM)ifsh;

...


Ciao Mauro,
te l'ho fatta io la prova :

Code: [Select]

/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:15: error: 'PGM' was not declared in this scope
   PGM_P p =  (PGM)ifsh;
               ^


Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Dec 05, 2013, 05:31 pm

https://github.com/arduino/Arduino/pull/1448

(notare che spunta sempre fuori leo)

Faccio quel che posso per essere sempre al centro dell'attenzione  ;)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Dec 05, 2013, 05:36 pm
Compilato per Arduino Leonardo

Code: [Select]
sketch_dec05a.ino: In function 'void loop()':
sketch_dec05a.ino:7: warning: only initialized variables can be placed into program memory area
F:\arduino-1.0.5\hardware\arduino\cores\arduino\wiring.c:264:3: warning: #warning Timer 2 not finished (may not be present on this CPU)
F:\arduino-1.0.5\hardware\arduino\cores\arduino\wiring.c:273:3: warning: #warning Timer 2 not finished (may not be present on this CPU)
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp:98: warning: comparison between signed and unsigned integer expressions
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void __vector_25()':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp:153: warning: unused variable 'c'
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp:368: warning: unused variable 'current_config'
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp:467: warning: comparison between signed and unsigned integer expressions
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HID.cpp: In member function 'virtual size_t Keyboard_::write(uint8_t)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HID.cpp:514: warning: unused variable 'r'
F:\arduino-1.0.5\hardware\arduino\cores\arduino\Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\Print.cpp:44: warning: '__progmem__' attribute ignored
F:\arduino-1.0.5\hardware\arduino\cores\arduino\Tone.cpp:210:12: warning: #warning this may not be correct
F:\arduino-1.0.5\hardware\arduino\cores\arduino\Tone.cpp:110: warning: only initialized variables can be placed into program memory area
Dimensione del file binario dello sketch: 4.366 bytes (su un massimo di 28.672 bytes)


Per la UNO
Code: [Select]

sketch_dec05a.ino: In function 'void loop()':
sketch_dec05a.ino:7: warning: only initialized variables can be placed into program memory area
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp:98: warning: comparison between signed and unsigned integer expressions
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void __vector_18()':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp:127: warning: unused variable 'c'
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp:368: warning: unused variable 'current_config'
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\HardwareSerial.cpp:467: warning: comparison between signed and unsigned integer expressions
F:\arduino-1.0.5\hardware\arduino\cores\arduino\Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)':
F:\arduino-1.0.5\hardware\arduino\cores\arduino\Print.cpp:44: warning: '__progmem__' attribute ignored
F:\arduino-1.0.5\hardware\arduino\cores\arduino\Tone.cpp:119: warning: only initialized variables can be placed into program memory area
Dimensione del file binario dello sketch: 2.034 bytes (su un massimo di 32.256 bytes)

Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Dec 05, 2013, 05:46 pm
Con PGM_P p =  (PGM)ifsh; dà errore e si ferma.

Code: [Select]
/Applications/Arduino 1.0.5 mod.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)':
/Applications/Arduino 1.0.5 mod.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.cpp:46:15: error: 'PGM' was not declared in this scope
   PGM_P p =  (PGM)ifsh;
               ^


Con PGM_P p =  (const PROGMEM char *)ifsh; dà warning ma compila :

Code: [Select]
In file included from /Applications/Arduino 1.0.5 mod.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.cpp:3:0:
/Applications/Arduino 1.0.5 mod.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'IPAddress::operator uint32_t()':
/Applications/Arduino 1.0.5 mod.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); };
                                                       ^
/Applications/Arduino 1.0.5 mod.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'bool IPAddress::operator==(const IPAddress&)':
/Applications/Arduino 1.0.5 mod.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)); };
                                                                           ^
/Applications/Arduino 1.0.5 mod.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)); };
                                                                                                            ^
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Dec 05, 2013, 06:01 pm
Cacchio ho sbagliato a scrivere, però penso che si capisse il senso no.

Quote

PGM_P p =  (PGM_P)ifsh;


Quando si usa F o PSTR accadono due cose fondamentali:
Si dice al compilatore di trattare una string literal in modo particolare, cioè scrivimela nella flash questa string.
Inoltre si dice di ritornare un puntatore in flash (16bit) che punta al primo indirizzo in cui hai conservato la literal string e di castarlo ad un puntatore commestibile. Ora a rigor di logica PGM_P o const char * sono la stessa cosa e possono conservare benissimo un puntatore ad un indirizzo in flash, da notare che il puntatore in flash diventa tale quando lo usiamo come le funzioni pgm_ecc e gli possiamo far puntare qualunque indirizzo a 16bit anche in ram, tra l'altro "p" risiede in ram, ma il contenuto è un indirizzo della flash.

Ciao.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 06:05 pm

Compilato per Arduino Leonardo
....
....
Per la UNO
....


... e non ti sembra di riscontrare ... gli STESSI problemi ??? E lo stesso warning sulla Print.cpp ???  :smiley-eek: :smiley-eek:

Quindi ... anche la 1.0.5 UFFICIALE sta ignorando l'attributo '__progmem__' ???  :smiley-roll: :smiley-roll: :smiley-roll:

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: lestofante on Dec 05, 2013, 06:25 pm
dicono che non è vero che ognori... forse settano più volte l'attributo e solo uno viene ignorato, non so.

Però è facile da verificare, fai una stringa da mille caratteri e vedi se aumenta la flash o no se cambia l'uso di ram stimato :)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Dec 05, 2013, 06:30 pm

Cacchio ho sbagliato a scrivere, però penso che si capisse il senso no.

Quote

PGM_P p =  (PGM_P)ifsh;


Ecco cosa dice:

Code: [Select]
In file included from /Applications/Arduino 1.0.5 mod.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.cpp:3:0:
/Applications/Arduino 1.0.5 mod.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'IPAddress::operator uint32_t()':
/Applications/Arduino 1.0.5 mod.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); };
                                                       ^
/Applications/Arduino 1.0.5 mod.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'bool IPAddress::operator==(const IPAddress&)':
/Applications/Arduino 1.0.5 mod.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)); };
                                                                           ^
/Applications/Arduino 1.0.5 mod.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)); };
                                                                                                            ^


Solo warning, compila.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: astrobeed on Dec 05, 2013, 06:31 pm

Però, scusate, c'è qualche cosa che non capisco ...


Certo che ti da tutte quelle warning, è normale, togli la F e vedrai che spariscono tutte, immagino che non devo spiegarti il motivo  :D
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: Maurotec on Dec 05, 2013, 07:49 pm
Ho visto solo ora la discussione qui http://forum.arduino.cc/index.php?topic=96976.new;boardseen#new (http://forum.arduino.cc/index.php?topic=96976.new;boardseen#new)
Continuo qui per non spezzare la discussione.

I passaggi che ho fatto ad alta voce sono appunto dei passaggi frutto di ragionamento logico, e non sono la soluzione.
Il codice originale funziona anche se il compilatore emette dei warning, questo è sicuro perché il problema è nel cast in questione che ora sembra risolto stando al post di leo, dove mi sembra che sia sparito il warning.

Il fatto che il compilatore ignori PROGMEM è cosa buona e giusta perché PROGMEM viene usato solo per dire al compilatore: L'oggetto che ha l'attributo PROGMEM devi metterlo in flash. Mentre const char * è la dichirazione del tipo con il qualificatore const. Capite non ha senso castare a const PROGMEM char* perché manca l'oggetto a cui applicare l'attributo PROGMEM, cioè l'oggetto string literal, questa va comunque in flash grazie a F che ho mostrato in cosa si espande ed è comprensibile che PROGMEM si riferisce a string literal.

Quindi si possono lasciare le cose come stanno oppure per correttezza modificare il cast, perché ad essere ignorato è solo il secondo attributo inutile nel cast. Sono cosciente che in passato avevo detto che se ignora PROGMEM allora la string literal non va in flash, e mi sbagliavo evidentemente. Probabilmente mi sono confuso e per qualche motivo ho dimenticato PSTR o F che già contengono PROGMEM e questo non viene ignorato.

@gpb01
Tu avevi provato uno sketch che non compilava, ora non ricordo il programma ma aveva a che fare con  il wifi, ecco quello è un errore più rognoso che non saprei proprio risolvere. Però mi pare di aver capito che l'errore è scomparso con la 3.4.3, o no?

Ciao.



Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 10:17 pm

Certo che ti da tutte quelle warning, è normale, togli la F e vedrai che spariscono tutte, immagino che non devo spiegarti il motivo  :D


Ovvio Astro ... la mia sorpresa era dovuta al fatto che gli stessi warning li produce anche la toolchain originale inserita nell'IDE e da qui la mia sorpresa/domanda : "che ce stamo a sbatte a fa' se pure quella loro ce fa' la stessa cosa ???"  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 05, 2013, 10:26 pm

@gpb01
Tu avevi provato uno sketch che non compilava, ora non ricordo il programma ma aveva a che fare con  il wifi, ecco quello è un errore più rognoso che non saprei proprio risolvere. Però mi pare di aver capito che l'errore è scomparso con la 3.4.3, o no?


Si, con la 3.4.3 almeno arriva fino in fondo ... ho preso l'esempio della libreria WiFi "WiFi web Client" ed ecco il risultato (allegato come file di testo).

Mi sembrano tutti warning ... diciamo "trascurabili" ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Dec 06, 2013, 09:00 am
Ottengo gli stessi risultati. Quindi possiamo dire che il problema sia stato risolto grazie a Mauro  :D
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Dec 06, 2013, 09:27 am

Ottengo gli stessi risultati. Quindi possiamo dire che il problema sia stato risolto grazie a Mauro  :D


Si, anche se ... sembra NON fosse un problema ...
... visto che, come è dimostrato, gli stessi warning sulla Print.cpp esistono nell'IDE con la toolchain ufficiale e che quindi ... avendolo capito prima ... ci saremmo evitati tutto lo sbattimento  :smiley-mr-green: XD :smiley-mr-green: XD

Anzi, direi che per semplificare la vita agli utenti, nelle "istruzioni per installare la nuova toolchain" non parleremo proprio della modifica di Print.cpp ... ma solo di cosa sostituire e dove ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: ibbba on Jan 01, 2014, 05:59 pm
Ciao a tutti e Buon Anno!!!...Volevo comunicare che grazie all'instancabile lavoro di Guglielmo(che ringrazio) sono riuscito a compilare lo sketch del mio sistema demotico basato su Arduino Mega passando da 63877 bytes a 60994 bytes grazie al nuovo compilatore!!!...lo sketch gira senza problemi,i soliti warming trascurabili in fase di compilazione ma per il resto tutto OK!!....
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Jan 01, 2014, 07:04 pm
Benissimo.  :smiley-mr-green:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Feb 04, 2014, 10:18 am
Penso che ti meriteresti un maglietta --> https://groups.google.com/a/arduino.cc/forum/?fromgroups#!topic/developers/21G5w2HbUOg (https://groups.google.com/a/arduino.cc/forum/?fromgroups#!topic/developers/21G5w2HbUOg)

Non sarebbe il caso di spostare questo topic in Megatopic dove ci sono gli altri due per gli aggiornamenti su Linux e Windows?
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: gpb01 on Feb 04, 2014, 10:46 am

Penso che ti meriteresti un maglietta ...


... suggerisciglielo  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green: ... e ... visto mai che ... si accorgono anche di questo thread dove la metà dei problemi li avevamo già affrontati e risolti  ]:D ]:D ]:D


Non sarebbe il caso di spostare questo topic in Megatopic dove ci sono gli altri due per gli aggiornamenti su Linux e Windows?


E' Leo che gestisce la cosa ... ;)

Guglielmo
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Feb 05, 2014, 12:04 am
Mi pare che si possa fare.  ;)
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: lestofante on Feb 05, 2014, 12:56 am
ehm leo, ma per linux, scarichi il tar e dezippo? quale dei 3 tar che ci sono?domani vorrei buttarmici sopra un pò
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: leo72 on Feb 05, 2014, 11:37 am
Scusa Lesto, io sono un pò tardivo.... a cosa ti stai riferendo?  :smiley-sweat:
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: PaoloP on Feb 05, 2014, 11:46 am
Il topic di Linux è questo --> http://forum.arduino.cc/index.php?topic=97237.0
@Leo
Potresti rieditare il primo post creando una sorta di guida all'aggiornamento come è stato fatto da Michele e Guglielmo.
Perchè altrimenti uno dovrebbe leggere tutti i post.
Title: Re: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain
Post by: lestofante on Feb 05, 2014, 12:15 pm
grazie paolo, è esattamente quell che cercavo.
utilimamente sono abbastanza attivo, volevo codare un pò per la comunità, in particolare pulire i warning dalle librerie ufficiali :)