Pages: [1] 2   Go Down
Author Topic: Possibile Bug: Compilazione sketch più grandi di 64K  (Read 685 times)
0 Members and 1 Guest are viewing this topic.
Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 410
Posts: 11973
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Massimo, mi aggancio alla discussione per segnalare invece un bug certo e certamente importante, che riguarda gli Arduino Mega. A motivo di un signore che mi ha contattato ho approfondito la cosa ed è uscito fuori, correggimi se sbaglio, che nonostante i 128 e 256k di flash non è possibile uploadare sketch maggiori di 64K. Il limite è del compilatore usato da IDE e non è stato superato nemmeno con l'1.0; un paio di utenti in giro per il mondo hanno trovato il modo di usare l'AGRGCC 5 con Arduino, ma la procedura è piuttosto macchinosa e comunque...
Non ho commenti da fare, vorrei solo poter dare a questo amico una risposta positiva sulla possibile soluzione del suo problema che, se fosse vero quanto sto dicendo, sarebbe comune a chiunque compra un Arduino (almeno di quelli attualmente in commercio) con memoria >64K.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
God Member
*****
Karma: 5
Posts: 873
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il nuovo ide rende molto più facile aggiungere un core qualsiasi ad arduino (anche non avr o arm) questo faciliterà la vita anche a gente che non ci sta simpatica ma il nostro "dilettantismo" come azienda ci permette di fare anche questo. Qualunque azienda seria non favorirebbe i propri concorrenti in nome di un "ideale".

Tornano di moda anche gli adesivi, bella frase d'effetto, bella trovata pubblicitaria, mettila sugli adesivi della v2.
Logged

0
Offline Offline
God Member
*****
Karma: 1
Posts: 596
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il nuovo ide rende molto più facile aggiungere un core qualsiasi ad arduino (anche non avr o arm) questo faciliterà la vita anche a gente che non ci sta simpatica ma il nostro "dilettantismo" come azienda ci permette di fare anche questo. Qualunque azienda seria non favorirebbe i propri concorrenti in nome di un "ideale".

Tornano di moda anche gli adesivi, bella frase d'effetto, bella trovata pubblicitaria, mettila sugli adesivi della v2.

Sinceramente tutto questo astio che ogni tanto emerge sui forum non lo capisco. Se non vi sta bene come è gestito Arduino, ci sono decine di cloni e decine di altre piattaforme con costi comparabili. Perché gettare fango (mi trattengo) verso MB e soci che hanno comunque realizzato un prodotto aperto, che ha dato origine ad un ecosistema hardware / software che ha avvicinato molti non tecnici al mondo della programmazione e dell'elettronica hobbistica ?
Resta salvo, ovviamente, il diritto di critica. Mi spiace però leggere commenti che somigliano più a stilettate gratuite che a critiche, anche forti, ma argomentate e costruttive.
Logged

Offline Offline
God Member
*****
Karma: 5
Posts: 873
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sinceramente tutto questo astio

Qui dentro avete qualcosa che non va, e' anomalo che ogni volta che si fa una battuta la gente debba sentirsi sempre sotto attacco. Ho solo fato una battuta ironica.
Perche' e' una bella trovata pubblicitaria, sugli adesivi con su scritto

"arduino openHw openSw made in italy, qualunque azienda seria non favorirebbe i propri concorrenti in nome di un ideale"

Dai ci sta tutta e spacca. Vendessi io arduino quell'adesivo ce lo metterei.

Ma se vuoi sviscerala la mia battuta c'e' che mi da un po' fastidio che tutto il sistema arduino stia in piedi non grazie a Santo Banzi ma grazie a chi lo usa e ridistribuisce il code: il vero valore va a loro, e loro di queste sparate non ne fanno mai.
« Last Edit: February 12, 2012, 12:33:00 pm by legacy » Logged

Forum Administrator
Offline Offline
God Member
*****
Karma: 47
Posts: 629
I find plain exciting
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@menniti

mi mandi delle info su come riprodurre il bug? Abbiamo un'applicazione della mega che usa tutti i 128k  di un'atmega1280 e non abbiamo avuto problemi.

Se mi mandate il sorgente è meglio con versione esatta di arduino e versione esatta del sistema operativo (XP, Vista, Mac etc)

grazie, investighiamo subito

m
Logged

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

mi mandi delle info su come riprodurre il bug? Abbiamo un'applicazione della mega che usa tutti i 128k  di un'atmega1280 e non abbiamo avuto problemi.

Il problema è la versione del compilatore abbinato a Windows (attualmente è la vecchia 4.3.2, mi risulta che anche con l'IDE 1.0 è sempre questa) che è limitato a solo 64k, se lavori con MAC o Linux e hai aggiornato il compilatore il limite si sposta a 128k, per quanto ne so attualmente l'avrgcc, ultima release, al massimo compila fino a 128k, 256k sono possibili solo tramite la toolchain di Atmel.
Ne approfitto per segnalarti anche questo bug minore (la spiegazione e la soluzione è in fondo) che è ancora presente nella 1.0
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 410
Posts: 11973
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@menniti

mi mandi delle info su come riprodurre il bug? Abbiamo un'applicazione della mega che usa tutti i 128k  di un'atmega1280 e non abbiamo avuto problemi.

Se mi mandate il sorgente è meglio con versione esatta di arduino e versione esatta del sistema operativo (XP, Vista, Mac etc)

grazie, investighiamo subito

m
Bisognerebbe capire se avete caricato l'applicazione con la modalità "standard" di upload; come detto io sono solo un tramite di questa persona che avevo invitato "al Forum" ma ha preferito rimanere fuori. Mi ha spiegato che è arrivato a realizzare un applicativo da 75-76K ma non riesce a farlo funzionare, mi ha detto che se toglie qualche routine (a caso), appena scende sotto i 64K tutto funziona (eccetto ovviamente ciò che ha tolto). L'ho ricontattato chiedendo ulteriori chiarimenti e lo sktech, sui primi garantisco di riceverli, sul secondo ho qualche dubbio, se vuoi ti spiego il perché in MP. Comunque l'indicazione di Astrobeed dovrebbe essere sufficiente. Purtroppo non dispongo di una mega altrimenti ti farei delle prove anch'io. Appena ho nuove ti ricontatto su questo Topic.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

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

Il problema è la versione del compilatore abbinato a Windows (attualmente è la vecchia 4.3.2, mi risulta che anche con l'IDE 1.0 è sempre questa) che è limitato a solo 64k,
Se non erro la toolchain di Atmel (per lo meno la versione ad 8 bit per Linux che ho scaricato) ha il compilatore avr-gcc in versione 4.3.5

se lavori con MAC o Linux e hai aggiornato il compilatore il limite si sposta a 128k, per quanto ne so attualmente l'avrgcc, ultima release, al massimo compila fino a 128k, 256k sono possibili solo tramite la toolchain di Atmel.
E qui entriamo in un altro ginepraio. Chi ha Linux, non usa la toolchain di Arduino semplicemente perché non c'è nell'IDE.... deve affidarsi a quella del proprio sistema operativo. E le versioni più recenti di gcc-avr sono piene di bug, a cominciare da quelle sul delay a quelle sullo sketch ArduinoISP. Puoi patchare i vari compilatori e binutils-avr ecc... ma poi hai altri tipi di problematiche.
Vedi:
http://arduino.cc/forum/index.php/topic,76138.0.html
http://arduino.cc/forum/index.php/topic,51000.msg363998.html#msg363998
http://arduino.cc/forum/index.php/topic,66710.0.html

Ed un sacco di altri thread.
La domanda è: ma perché anche nell'IDE per Linux non inserite la toolchain ufficiale di Atmel di modo che un utente non si debba arrovellare il cervello a sistemare tutte le cose che non vanno per far funzionare il suo Arduino? La versione di Windows è "pronta all'uso", perché non anche quella di Linux?
Ne approfitto per segnalarti anche questo bug minore (la spiegazione e la soluzione è in fondo) che è ancora presente nella 1.0

[/quote]
Logged


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

Se non erro la toolchain di Atmel (per lo meno la versione ad 8 bit per Linux che ho scaricato) ha il compilatore avr-gcc in versione 4.3.5

Quella che ho io, e dovrebbe essere l'ultima, usa avr-gcc 4.5.1, posso confermare che funziona molto bene.
« Last Edit: February 12, 2012, 09:38:11 am by astrobeed » Logged

Forum Administrator
Offline Offline
God Member
*****
Karma: 47
Posts: 629
I find plain exciting
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie a tutti per i report.

Spezziamo questo thread e continuiamo in un altro? stiamo andando molto offtopic smiley

Minniti: Se questa persona non vuole entrare nel forum, non logga un bug, non ci scrive è un po difficile leggergli nel pensiero smiley

Leo72: Arduino non distribuisce la toolchain perché le varie distribuzioni non vogliono che lo facciamo... Ho avuto interazioni con delle persone di debian una volta e devo ammettere che hanno un approccio piuttosto "dogmatico". Detto questo io preferirei distribuire arduino con dentro la toolchain e buonanotte.

m
Logged

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

Se non erro la toolchain di Atmel (per lo meno la versione ad 8 bit per Linux che ho scaricato) ha il compilatore avr-gcc in versione 4.3.5

Quella che ho io, e dovrebbe essere l'ultima, usa avr-gcc 4.5.1, posso confermare che funziona molto bene.

Ma tu hai Windows, io ho nominato Linux.
L'ho scaricata 10 gg fa e sto cercando di capire come usarla al posto di quella del mio SO.
Logged


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

Leo72: Arduino non distribuisce la toolchain perché le varie distribuzioni non vogliono che lo facciamo... Ho avuto interazioni con delle persone di debian una volta e devo ammettere che hanno un approccio piuttosto "dogmatico". Detto questo io preferirei distribuire arduino con dentro la toolchain e buonanotte.
Gli utenti Debian hanno una visione un po' "chiusa" del mondo Linux, sinceramente non concordo con loro, poi ognuno è libero di pensarla come vuole ma molte loro prese di posizione sono un po' estremistiche e non mi piacciono.

Detto questo, anch'io vorrei un'IDE che, scompattata, contenga già tutto quello che mi occorre per lavorare ma, soprattutto, che funzionasse tutto. Come ti ho detto e dagli esempi che ti ho segnalato, i problemi su Linux ci sono e sono tantissimi! Io sono stato costretto negli ultimi mesi a cambiare nel giro di poco 2 distribuzioni perché su ArchLinux e sulle ultime versioni di Ubuntu, per colpa di avr-gcc, non riesco a compilare lo sketch ArduinoISP che funzioni come si deve, e non è bello scegliere una distribuzione scommettendo un terno al lotto se poi con l'Arduino tutto andrà come si deve.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 410
Posts: 11973
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@ Massimo: in realtà io avevo aperto un Topic sulla questione; mi sono fermato quando ho capito che il problema era risolvibile solo con le procedure "esterne" al software Arduino. Come detto ho ricontattato via email l'utente e chiesto tutte le info aggiuntive sul problema e sulle varie versioni hw/sw. Ripeto, io non ho fatto prove, ma mi fido ciecamente di Astrobeed e se lui dice che gli sketch oltre 64K non vengono compilati dalla versione che usiamo (Windows) allora i conti tornano con quanto sostiene questo utente. Per controprova ti ho chiesto di spiegarmi come hai caricato lo sketch sulla mega1280, non so se ti è sfuggita la domanda o se non hai la risposta perché magari l'operazione è stata fatta da qualcun altro  smiley
Tutti ci lamentiamo quando qualcuno pretende che gli leggiamo nel pensiero, quindi non sarò certo io a chiederti il "miracolo", però bisognerebbe prima esser certi di aver superato questa cosa della compilazione. Come detto, lui mi ha spiegato (in precedenza) che se snellisce lo sketch togliendo qualsiasi "modulo" e rientra nei 64K tutto gli funziona, quindi non sembrerebbe un bug del suo sw; per il resto appena ho notizie ti mando un MP per spiegarti la questione del "riserbo". Grazie per l'impegno.  smiley
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
God Member
*****
Karma: 5
Posts: 873
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io vi seguo in silenzio.

Sono curioso di sapere quale sia il motivo tecnico per il quale gcc ha quel problema. Voglio dire ho capito solo vagamente dove stia il problema, ne ho avuti anche io tempo fa di rogne simili e il motivo era che il mio micro 68hc11 aveva indirizzi a 16 bit, quindi 64Kbyte max indirizzabili, e per andare oltre era necessario concentrare le i punti di accesso alla ram esterna andando a fornire esplicitamente i bit superiori mancanti. Modi segmentazione, fattibile con delle pezzotte nella machine layer di gcc piu' vari punti nella crt0 per inizializzare, alcuni interventi nella libc e un latch hw sul circuito per aggiungere fisicamente gli address bit mancanti.

Ma se Avr studio va gia' ora oltre i 64Kbyte con avr8, per quale motivo gcc ha problemi con la propria flash interna ?

Insomma, a partita' di hw, cosa fa il compilatore di Avr studio in piu' rispetto a gcc ?
E questa e' la mia curiosita'.
Logged

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

Quote
Gli utenti Debian hanno una visione un po' "chiusa" del mondo Linux, sinceramente non concordo con loro, poi ognuno è libero di pensarla come vuole ma molte loro prese di posizione sono un po' estremistiche e non mi piacciono.

Leo te lo spiego io come funziona, se tu sviluppassi software libero e dovessi mantenere un repositor di un progetto capiresti subito il perchè di tale decisione. Il progetto padre o madre è uno punto e basta, se vuoi apportare un contributo ti unisci agli sviluppatori o invii delle patch agli sviluppatori, questo è quello che fanno in debian ed in genere tutte le distro. Il fatto che hai inviato delle pacth non vuol dire che queste siano incluse da subito, insomma non c'è garanzia che vengano incluse. Ora gli impacchettatori che devono fare, creare pacchetti buggati, no non possono. I tool di impacchettamente sono organizzati in modo da non toccare il tar.gz originale (oppure l'ultima revisione dal repo), perchè non è permesso modificare il codice originale e poi comprimerlo, allora i tools permetto di applicare le patch prima di avviare la compilazione e in fase finale la creazione del pacchetto binario.

Sembra una presa di punto senza alcun buon motivo, invece di buoni motivi c'è ne sono tanti, le regole non sono pensate per favorire qualcuno in particolare e già questo è da considerare buono.

Comunque faccio bene a tenermi la vecchia versione delle gcc, come si dice..., cosa che funziona non si cambia.

Non ho la mega, ma posso compilare codice C/C++ puro, sempre che mi date il codice, sempre che il problema riguardi la compilazione, oppure la compilazione va a buon fine ma il codice non funziona.

Mentre se il problema si verifica in fase di scrittura flash il problema è da ricercare in avrdude.

Insomma, a partita' di hw, cosa fa il compilatore di Avr studio in piu' rispetto a gcc ?
E questa e' la mia curiosita'.


Chissa, se Avr Studio usa avr-gcc?

Ciao.
Logged

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

Pages: [1] 2   Go Up
Jump to: