Go Down

Topic: [Risolto] Errore di compilazione con ATtiny84 (Read 3342 times) previous topic - next topic

BrainBooster

Fate come Leo e postate anche voi i componenti del vostro toolchain e relative versioni.
Sembra che abbiamo escluso problemi di natura hardware (fuse ecc..), problemi legati al codice, e problemi legati alla versione dell'ide (forse).

ivan64

avr-gcc 4.3.2
binutils-avr 2.19.?
avr-libc 1.6.4 (ho trovato solo la versione dell'help)

Sinceramente non ho idea su come aggiornare..... ora vedo!

dalubar

Ok, ho risolto! :-)

Grazie a questo prezioso link trovato in rete (e successivamente tradotto in italiano):
http://translate.google.it/translate?hl=it&sl=en&tl=it&u=http%3A%2F%2Farduino.cc%2Fforum%2Findex.php%3Faction%3Dprintpage%3Btopic%3D60649.0&anno=2
Qui si parla di un bug del linker riguardo l'architettura "avr25" (alla quale appartengono 84/85) che sarebbero state "dimenticate" nei file di configurazione. Dice anche come aggiornare il toolset per risolverlo.

Pubblico le operazioni che ho eseguito dato che possono essere utili:

- Scaricato e installato l'ultima versione di WinAVR
- Copiato tutti i file di WinAVR in PathArduino/hardware/tools/avr (avendo prima cura di rinomirare quella originale come avr_OLD)
- Creato una dir "etc" in PathArduino/hardware/tools/avr
- Modificato il file "avrdude.conf" presente in PathArduino/hardware/tools/avr/bin aggiungendo nelle sezioni "ATtiny84" e "ATtiny85" ESCLUSIVAMENTE le righe:
Quote

  pagel = 0xB3;
  bs2 = 0xB4;     


Per chiarire meglio l'esatto punto di inserimento, ad esempio, la parte relativa a "ATtiny84" è diventata:
Code: [Select]

#------------------------------------------------------------
# ATtiny84
#------------------------------------------------------------

part
     id            = "t84";
     desc          = "ATtiny84";
     has_debugwire = yes;
     flash_instr   = 0xB4, 0x07, 0x17;
     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
             0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
             0x99, 0xE1, 0xBB, 0xAC;
## no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode   = 0x14;
##  avr910_devcode   = ?;
##  Try the AT90S2313 devcode:
     avr910_devcode   = 0x20;
     signature        = 0x1e 0x93 0x0c;
     reset            = io;
     chip_erase_delay = 4500;

# aggiunti per eliminare il bug di compilazione.
     pagel = 0xB3;
     bs2 = 0xB4;
     
...... altre impostazioni...continua sezione .....


- Infine ho copiato il file "avrdude.conf" in PathArduino/hardware/tools/avr/etc (la directory creata precedentemente).

Riavviando l'IDE ho potuto compilare con successo fino a oltre 7K, quindi credo che il problema sia stato risolto.

L'autore del post dice che attualmente non c'è una fonte definitiva per le impostazioni di pagel e bs2. Cmq con i valori inseriti pare andare perfettamente. Inoltre non ho inserito le righe con "read" (indicate nel post) perchè le ho trovate già inserite e ho preferito non modificarle.

Per quanto riguarda la toolchain ho le stesse versioni di ivan64.



ivan64


leo72

Quindi la toolchain AVR allegata all'IDE di Windows è buggata e non funziona correttamente se usata con i Tiny, né quella della 002x né quella della 1.0, mi confermate?

ivan64


Quindi la toolchain AVR allegata all'IDE di Windows è buggata e non funziona correttamente se usata con i Tiny, né quella della 002x né quella della 1.0, mi confermate?


La 1.0 non lo so, non ho provato, ma con 002x cisono sicuramente problemi! Sia 0022 che 0023 ora funzionano....

dalubar

Si, Leo...posso confermare che con IDE 1.0 non funzionava.
Con la modifica adesso riesco a lavorare normalmente, di certo con l'ATtiny84 (al momento non ho un '85 per le mani per fare delle prove).

Dato che il problema non sembra essere così isolato, perchè non lo inserisci nella tua guida? Sarebbe di certo utilissimo a quanti, come me e ivan64, hanno disperatamente cercato una soluzione (e ancor prima, hanno speso del tempo a cercare invano tra le righe del proprio codice prima di capire che il problema era altrove).

leo72

Penso di inserire la cosa perché è abbastanza importante.

BrainBooster

Si, io infatti uso sempre l'ultimo winavr disponibile al posto di quello distribuito con l'ide (per varie ragioni).
Anche arduopen usava l'ultimo winavr ad aveva alcune delle modifiche citate già fatte.

leo72

@brain:
hai provato a compilare/installare la toolchain AVR su Linux?
IO ci ho provato seguendo una guida su Avr-Freaks ma non ho compicciato nulla. Non ho capito dove poi dovevo metterla, 'sta toolchain.... anche perché appena scaricata da Atmel è un unico grosso archivio i cui binari non so come ridistribuirli sul sistema.

BrainBooster

no, non ci ho mai provato.
su che distribuzione sei?

dalubar

Finora non ci avevo fatto caso...ma un ulteriore "effetto collaterale" della modifica è che adesso a fine compilazione non appaiono più i messaggi:
Quote

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny84
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny84


come dire che la soluzione era sempre stata li...visibile dopo ogni compilazione :-)

leo72


no, non ci ho mai provato.
su che distribuzione sei?

Attualmente Kubuntu 11.04.


Finora non ci avevo fatto caso...ma un ulteriore "effetto collaterale" della modifica è che adesso a fine compilazione non appaiono più i messaggi:
Quote

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny84
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny84


come dire che la soluzione era sempre stata li...visibile dopo ogni compilazione :-)

Ottimo  ;)

Michele Menniti

Riapro perché vorrei inserire questa correzione nei miei file.
Praticamente si tratta di:
1 - sostituire la cartella avr originale con quella dell'ultima versione di WinAVR, peraltro risalente a gennaio 2010?
2 - aggiungere al file avrdude.conf le due righe come da post?
basta così?

Domande:
a) io ho aggiornato l'avr ad una versione molto più recente di quella di WinAVR, ricorderete la toolchain di Astro, penso ovviamente di NON dover fare l'operazione di cui al punto 1, è esatto?
b) quindi mi basta aggiungere le due righe all'avrdude.conf, è esatto?
c) cosa succede se si aggiungono le sole due righe e lasciando l'avr originale, spariscono i due messaggi finali ma non si compila oltre i 4k?
d) come mai il problema è solo WIN visto che l'avr è la stessa, come è ormai arcinoto, per tutti i s.o., cioè la 4.3.2?
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

leo72

#29
Jun 24, 2012, 08:59 pm Last Edit: Jun 24, 2012, 09:08 pm by leo72 Reason: 1
Controllando sul computer non mio con Windows XP sto vedendo che mancano le voci pagel e bs2 nel file avrdude.conf però questo file è già nella cartella /etc. E questo sia su Arduino 1.0.1 che su 0022.
Come non detto. Ho guardato nell'IDE originale, non ho scaricato WinAVR  :smiley-sweat: :smiley-sweat:

Go Up