0
Offline
Edison Member
Karma: 9
Posts: 2191
Arduino rocks
|
 |
« Reply #15 on: March 19, 2012, 02:24:30 am » |
Beh allora io sono apposto con la mia versione di avr-gcc $ rpm -q avr-gcc avr-gcc-4.4.2-2.fc12.i686
La versione di gcc 4.5.1, allegata alla toolchain di Atmel, probabilmente è stata modificata da loro rispetto all'originale, compila senza problemi fino a 256k di flash del Mega2560, verificato personalmente sia sotto AvrStudio 4, dove ho un paio di applicativi per Mega2560 che tra programma e tabelle dati arrivano quasi al limite della flash, e con Arduino 0023 e 1.0 dopo il trapianto, ancora sperimentale, della toolchain. Mi sembra strano che abbiano apportato delle modifiche a codice GPL e le hanno chiuse, perchè ancora io di patch Atmel ufficiali per avr-gcc & company non ne ho trovato. Ora sentendo ciò che dice legacy devo dire che sono confuso e perplesso, vedremo cosa esce fuori. Ciao.
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7373
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #16 on: March 19, 2012, 02:38:38 am » |
Mi sembra strano che abbiano apportato delle modifiche a codice GPL e le hanno chiuse, perchè ancora io di patch Atmel ufficiali per avr-gcc & company non ne ho trovato.
L'eventuale modifica al compilatore, parliamo di gcc, è una mia ipotesi se è vero quello che dice Legacy, è tutto da verificare. Mi pare che Atmel da anche i sorgenti del tutto, non li ho scaricati perché non mi interessa guardarli, quindi dovrebbe essere facile capire se il gcc è stato modificato oppure no. In tutti i casi quello che contano sono i fatti, con AvrStudio 4 e la toolchain Atmel compilo per l'ATmega2560 senza problemi arrivando quasi al limite della flash, idem con la stessa toolchain montata sull'IDE di Arduino, quindi la questione è molto semplice visto che quello che conta sono i fatti e non le ipotesi 
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7373
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #17 on: March 19, 2012, 02:51:18 am » |
perchè ancora io di patch Atmel ufficiali per avr-gcc & company non ne ho trovato. Ora sentendo ciò che dice legacy devo dire che sono confuso e perplesso, vedremo cosa esce fuori.
Ho scaricato adesso i sorgenti e gli ho dato un'occhiata veloce, in effetti contiene solo roba riguardante gli AVR32 però si tratta sicuramente solo di un update dei sorgenti della toolchain e non di tutti quanti. Tocca rovistare sul sito Atmel per trovare gli altri update, sopratutto quelli per gli 8 bit, che saranno stati allegati alle precedenti release della toolchain ed eventualmente il sorgente globale del tutto.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16495
Don't know what I do
|
 |
« Reply #18 on: March 19, 2012, 02:57:00 am » |
Però viene fuori una situazione un po' ai limiti del paradosso. L'IDE per Windows di Arduino contiene un compilatore che non è in grado di compilare correttamente codice più grande di 64K però viene venduta una scheda con un chip che ne contiene 256K.
Non voglio additare nessuno prima di sapere esattamente come stanno le cose ma a questo punto sarebbe gradito un chiarimento da parte del team.
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7373
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #19 on: March 19, 2012, 03:09:40 am » |
Non voglio additare nessuno prima di sapere esattamente come stanno le cose ma a questo punto sarebbe gradito un chiarimento da parte del team.
Il limite è 128 kbyte se ragioniamo con questi e non con le word, due byte ciascuna, ho l'impressione che il team Arduino non si sia ancora reso conto dell'esistenza di questo problema, il Mega 2560 è un micro relativamente recente e ha sostituito il Mega 1280 presente sulla precedente versione di Arduino Mega, non credo ci siano applicazioni Arduino che richiedono più di 128k, almeno io non ne ho viste. C'e sempre la questione del bug dei dati posti oltre 64k, credo sia molto difficile che una normale applicazione Arduino incappi in questo errore, però dato che è un problema noto sarebbe stata cosa gradita inserire nella 1.0 di Arduino un compilatore aggiornato ad una release esente da questo problema. Per quanto riguarda Windows il problema lo sto risolvendo io in modo definitivo, tra oggi e domani rilascio una prima release, da considerarsi sperimentale, della toolchain Atmel per l'IDE 1.0, così grazie alla collaborazione di qualche volenteroso beta tester vediamo se ci sono ulteriori problemi da risolvere oltre a quelli che ho trovato io.
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #20 on: March 19, 2012, 03:10:02 am » |
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16495
Don't know what I do
|
 |
« Reply #21 on: March 19, 2012, 03:12:04 am » |
@astro: ma la MEGA2560 è in vendita da 1 anno, scusa...  @brain: è il link da cui si scarica la toolchain ufficiale Avr8, quella che legacy dice sia un potpourri fra codice della Avr8 e patch della Avr32. Quella che mi sta dando problemi di funzionamento.
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #22 on: March 19, 2012, 03:12:24 am » |
[quote ] Tocca rovistare sul sito Atmel per trovare gli altri update, sopratutto quelli per gli 8 bit, che saranno stati allegati alle precedenti release della toolchain ed eventualmente il sorgente globale del tutto. [/quote] avevo visto che astrobeed cercava quella roba lì...
|
|
|
|
« Last Edit: March 19, 2012, 03:15:36 am by BrainBooster »
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7373
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #23 on: March 19, 2012, 03:12:28 am » |
Il file dei sorgenti è lo stesso di quello della versione Windows, ovvero contiene solo gli update e non tutti i sorgenti della toolchain.
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7373
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #24 on: March 19, 2012, 03:17:17 am » |
@astro: ma la MEGA2560 è in vendita da 1 anno, scusa...  Vallo a dire all'Arduino Team che stanno vendendo una scheda non utilizzabile al 100% con gli strumenti di serie, ovvero indicassero loro una procedura di patch ufficiale per i vari S.O.  Io nel mio piccolo sto risolvendo la questione per Windows, voi cercate di risolverla per Linux, forse dovrebbe andare bene anche per MAC con i dovuti ritocchi, dopo di che chiediamo all'Arduino Team un adesivo omaggio e un caffè pagato per il lavoro svolto 
|
|
|
|
|
Logged
|
|
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16495
Don't know what I do
|
 |
« Reply #26 on: March 19, 2012, 03:35:27 am » |
Su Linux la toolchain non è inclusa, la scarichi dai repo della tua distro. Molte distro hanno versioni aggiornate ed il problema non si pone. Casomai sorgono altri problemi, quindi è il classico cane che si morde la coda: risolto il problema A spunta il problema B, risolto questo spunta il problema C ecc... E' la fregatura di avere un sistema aggiornato: usando una versione freezata sai i suoi limiti ma anche le sue potenzialità. Il problema è che al momento non pare esistere una versione di avr-gcc che sia esente del tutto da problemi. E di distro nell'ultimo anno ne ho provate un sacco. Quindi va trovata la giusta combinazione che permetta di risolvere almeno i problemi più grossi se che ne vengano fuori altri (vedi ad esempio il bug della funzione delay). Guardavo questa pagina: http://gcc.gnu.org/onlinedocs/gcc/AVR-Options.htmlLeggo: avr6 “Enhanced” devices with 3-byte PC, i.e. with at least 256 KiB of program memory. mcu = atmega2560, atmega2561. Non è che forse allora basta l'aggiunta di questa opzione specificare il tipo di MCU per far sì che il codice compilato da gcc-avr venga correttamente elaborato anche per micro con 256 kB di Flash? EDIT: se però è un bug... sono un po' fava stamani... 
|
|
|
|
« Last Edit: March 19, 2012, 03:41:23 am by leo72 »
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #27 on: March 19, 2012, 03:47:55 am » |
leggo:" Some AVR devices support memories larger than the 64 KiB range that can be accessed with 16-bit pointers. To access memory locations outside this 64 KiB range, the contentent of a RAMP register is used as high part of the address: The X, Y, Z address register is concatenated with the RAMPX, RAMPY, RAMPZ special function register, respectively, to get a wide address. Similarly, RAMPD is used together with direct addressing. magari si potrebbero usare le macro: __AVR_HAVE_RAMPD__ __AVR_HAVE_RAMPX__ __AVR_HAVE_RAMPY__ __AVR_HAVE_RAMPZ__ per capire se è uno di quei micro con la super memoria, e agire di conseguenza (workaround)
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 9
Posts: 2191
Arduino rocks
|
 |
« Reply #28 on: March 19, 2012, 03:53:59 am » |
Che casino il sito di Atmel, con tutto il rispetto per l'azienda non posso constatare la mia è altrui confusione in merito. Dunque ho scovato il link ai sorgenti con script per compilare la toolchain atmel. Alla fine a me interessano solo le patch per la toolchain da integrare nel file spec di ogni pacchetto rpm sorgente così da ricreare i pacchetti con cui aggiornare l'attuale versione della toolchain. Si parte da qui: http://distribute.atmel.no/tools/opensource/Occhio che se andate in parent directory non c'è link che vi riporti a quell'indirizzo. Li c'è tutto, buon divertimento, fate sapere se trovate la pacth per i problemi di indirizzamento oltre le 64 kword.
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7373
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #29 on: March 19, 2012, 04:06:57 am » |
Leggo: avr6 “Enhanced” devices with 3-byte PC, i.e. with at least 256 KiB of program memory. mcu = atmega2560, atmega2561. Non è che forse allora basta l'aggiunta di questa opzione specificare il tipo di MCU per far sì che il codice compilato da gcc-avr venga correttamente elaborato anche per micro con 256 kB di Flash? Per compilare devi dire a gcc con quale micro stai lavorando, infatti se selezioni la MEGA2560 come board e abiliti il modo verbose trovi tutta una serie di comandi, uno per ogni file .c o .cpp da compilare, dove è chiaramente il 2560. \arduino-1.0\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=100 -ID:\Elettronica\Arduino\arduino-1.0\hardware\arduino\cores\arduino -ID:\Elettronica\Arduino\arduino-1.0\hardware\arduino\variants\mega
|
|
|
|
|
Logged
|
|
|
|
|
|