Pages: 1 ... 6 7 [8] 9   Go Down
Author Topic: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain  (Read 6822 times)
0 Members and 1 Guest are viewing this topic.
Switzerland
Offline Offline
Faraday Member
**
Karma: 114
Posts: 5986
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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
Logged

Search is Your friend ... or I am Your enemy !

Switzerland
Offline Offline
Faraday Member
**
Karma: 114
Posts: 5986
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

.....
Mentre const __FlashStringHelper *ifsh è un puntatore e pertanto il cast dovrebbe essere ancora più semplice
Code:
PGM_P p =  (PGM)ifsh;
...

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

Code:
/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
Logged

Search is Your friend ... or I am Your enemy !

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22966
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

(notare che spunta sempre fuori leo)
Faccio quel che posso per essere sempre al centro dell'attenzione  smiley-wink
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7194
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Compilato per Arduino Leonardo

Code:
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:
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)
« Last Edit: December 05, 2013, 11:39:55 am by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22966
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Con PGM_P p =  (PGM)ifsh; dà errore e si ferma.

Code:
/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:
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)); };
                                                                                                            ^
Logged


0
Offline Offline
Faraday Member
**
Karma: 31
Posts: 2908
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Switzerland
Offline Offline
Faraday Member
**
Karma: 114
Posts: 5986
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Search is Your friend ... or I am Your enemy !

0
Offline Offline
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22966
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Quote
PGM_P p =  (PGM_P)ifsh;
Ecco cosa dice:

Code:
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.
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 134
Posts: 9698
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-grin
Logged

0
Offline Offline
Faraday Member
**
Karma: 31
Posts: 2908
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho visto solo ora la discussione qui 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.



« Last Edit: December 05, 2013, 01:52:52 pm by MauroTec » Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Switzerland
Offline Offline
Faraday Member
**
Karma: 114
Posts: 5986
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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
Logged

Search is Your friend ... or I am Your enemy !

Switzerland
Offline Offline
Faraday Member
**
Karma: 114
Posts: 5986
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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" smiley-wink

Guglielmo

* compilazione.txt (13.79 KB - downloaded 55 times.)
Logged

Search is Your friend ... or I am Your enemy !

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22966
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ottengo gli stessi risultati. Quindi possiamo dire che il problema sia stato risolto grazie a Mauro  smiley-grin
Logged


Switzerland
Offline Offline
Faraday Member
**
Karma: 114
Posts: 5986
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ottengo gli stessi risultati. Quindi possiamo dire che il problema sia stato risolto grazie a Mauro  smiley-grin

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 smiley-lol smiley-mr-green smiley-lol

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 smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Pages: 1 ... 6 7 [8] 9   Go Up
Jump to: