Pages: 1 ... 6 7 [8] 9 10 ... 12   Go Down
Author Topic: [Linux] Aggiornare la toolchain Avr  (Read 11756 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 2797
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
@leo mi posti il PKGBUILD, gcc, binutils, e avr-libc ? thks

Credo si tratti di questo https://aur.archlinux.org/packages.php?ID=57791

Se clicchi sul Tarball scarica tutto, mentre se clicchi su PKGBUILD ti mostra lo script di BUILD

@Leo
mi dispiace dirti che quel build delle avr-libc applica solo due delle patch presenti nel sito di atmel, tra l'altro credo che le patch sono già nel tar.gz che scarichi.

Le altre patch io le ho applicate, se vuoi puoi provare e sufficiente che scarichi le patch di atmel e le metti nella cartella dove risiede il build e ricompili, tutti i file che terminano con nome .patch verranno applicate come si vede da PKGBUIL.

Code:
for file in ${srcdir}/*.patch; do
    echo "Patching with $file"
    patch -p0 < $file
  done

se provi però incontrerai un errore di compilazione che ho risolto con una patch, fa sapere che te la spedisco.

Ciao.
Logged

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

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

@legacy:
come ti ha indicato Mauro, i PKGBUILD li trovi nel repo AUR. Per tua comodità te li ripropongo qui sotto:
avr-gcc-atmel
avr-libc-atmel
avt-binutils-atmel

@Mauro:
non ho controllato con accuratezza se scarica tutte le patch. Comunque non è un problema, se manca qualche patch. So costruire i file PKGBUILD per il repo di AUR, se manca qualcosa posso sistemarlo io e magari mettere online la versione corretta.
Ah, le patch non sono nel tar che scarichi. L'archivio contiene solo il PKGBUILD. Tutto viene tirato giù al momento della compilazione, a cominciare dai sorgenti.

@Brain:
non ho sketch al momento che occupino così tanta Flash.
Logged


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

@Mauro:
ho controllato il motivo per cui non sono presenti tutte le patch in avr-libc-atmel: perché sono patch per alcuni micro che non sono presenti nel resto della toolchain. Aggiungendo tali patch, ricevo poi errori in fase di compilazione, errori che il compilatore attribuisce proprio a questo:
Code:
configure.ac:1151: required file `avr/lib/avr35/attiny1634/Makefile.in' not found
configure.ac:1163: required file `avr/lib/avr4/atmega48pa/Makefile.in' not found
configure.ac:1186: required file `avr/lib/avr5/at90pwm161/Makefile.in' not found
configure.ac:1186: required file `avr/lib/avr5/atmega325pa/Makefile.in' not found
configure.ac:1186: required file `avr/lib/avr5/atmega3250pa/Makefile.in' not found
configure.ac:1186: required file `avr/lib/avr5/atmega3290pa/Makefile.in' not found
configure.ac:1303: required file `avr/lib/avrxmega2/atxmega32x1/Makefile.in' not found
configure.ac:1327: required file `avr/lib/avrxmega6/atxmega128b1/Makefile.in' not found
configure.ac:1327: required file `avr/lib/avrxmega6/atxmega256a3bu/Makefile.in' not found
A me comunque va bene così, in attesa di provare avr-gcc 4.7, che però ho nel ramo testing per cui disponibile sì ma con tutti i rischi del caso.
Logged


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

Si leo lo avevo scritto, questi micro sono presenti in avr-gcc e in avr-libc, mancano solo i makefile.am per compilare il codice.

Se non ti serve usare quei micro non devi appliccare quelle patch ovviamente, ma ricorda che in binutils e avr-gcc devono anche loro essere presenti, probabilmente gli altri build non includono questi micro per cui se devi aggiungerli devi applicare tutte le patch atmel per avr-gcc & company, e se lo fai ti ritrovi con questo intoppo.

Fai un fischio che ti, aspe che l'allego.

Ciao.

* avr-libc-1.7.1-new-devices-makefile.am.patch (25.55 KB - downloaded 2 times.)
Logged

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

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

Ora ricompilo con la tua patch. Vediamo che dice...  smiley-wink

EDIT:
sì è incocciato  smiley-sweat

Code:
Making all in avr
make[3]: Entering directory `/home/leo/Documenti/Arch/ToolchainAvr/avr-libc-atmel/src/avr-libc-1.7.1/include/avr'
make[3]: *** Nessuna regola per generare l'obiettivo «io90pwm161.h», necessario per «all-am».  Stop.
make[3]: Leaving directory `/home/leo/Documenti/Arch/ToolchainAvr/avr-libc-atmel/src/avr-libc-1.7.1/include/avr'
make[2]: *** [all-recursive] Errore 1
make[2]: Leaving directory `/home/leo/Documenti/Arch/ToolchainAvr/avr-libc-atmel/src/avr-libc-1.7.1/include'
make[1]: *** [all-recursive] Errore 1
make[1]: Leaving directory `/home/leo/Documenti/Arch/ToolchainAvr/avr-libc-atmel/src/avr-libc-1.7.1'
make: *** [all] Errore 2
==> ERRORE: Si è verificato un errore in build().
    L'operazione sta per essere interrotta...
« Last Edit: March 27, 2012, 02:20:44 am by leo72 » Logged


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

Ho riprovato ed ha compilato.... questa poi...  smiley-eek

Ora controllo che sia tutto a posto, però.
Logged


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

Se a qualcuno interessa, in allegato rimetto il tar.gz contenente il PKGBUILD modificato per compilare avr-libc che scarica ed applica tutte le patch Atmel per avr-libc, la patch di Mauro per modificare il makefile affinché compili per tutti i micro e la mia patch che modifica il file delay.h originale affinché l'IDE di Arduino non dia errore durante la compilazione degli sketch che usano le funzioni temporali.

* avr-libc-atmel.tar.gz (3.23 KB - downloaded 6 times.)
Logged


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

Leo la patch per il delay vale per i soli utenti di Arduini Ide e core perchè correge un problema interno al core. Poi dovresti avere anche dei problemi nel compilare sketch che usano _delay_ms() e non mi spiego come mai non si verificano nel tuo caso, in pratica c'è una funzione alternativa per creare delay e questa richiede le funzioni fabs e ceil e nell'header delay.h non c'è include per math.h.

Ciao.
Logged

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

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

Sì, la patch vale solo per utenti di Arduino perché altrimenti dalla toolchain ci si aspetta quel file.

Sul fatto che non si verifichi quel bug non so. Stando a quanto aveva detto anche astro, ci voleva l'include di 2 librerie per far funzionare le funzioni temporali ma a me lavorano senza intoppi anche senza senza. Ho preso lo sketch Blink, che usa il delay, l'ho compilato senza errori e poi l'ho uploadato sulla mia UNO, e gira senza problemi, lampeggiando come deve.
Logged


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

Sono emozionato... in Arch è arrivata la toolchain Avr con avr-gcc 4.7.0 nel repo del ramo stabile....  
Ora aggiorno e vediamo un po'....  

EDIT:
come non detto, l'emozione gioca brutti scherzi. E' la toolchain Gnu, non Avr, quindi gcc/binutils/glibc. Però è un buon segno, se è arrivato questo "blocco", il blocco Avr penso che sia di lì a venire, ormai. Attendo con impazienza  smiley-grin
« Last Edit: April 03, 2012, 03:32:06 pm by leo72 » Logged


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

Da qualche giorno è arrivata nei repo Arch la toolchain Avr aggiornata alla versione 4.7 di avr-gcc. Spinto dalla curiosità ho disinstallato la precedente toolchain Atmel e messa questa.

Errori:
1) delay.h
questo è l'ormai famoso errore riguardante le funzioni delay della toolchain che sono differenti da quelle presenti nel core Arduino. Si corregge editando il file /usr/avr/include/avr/delay.h e commentando la riga
Code:
#include <util/delay.h>

2) unknown name type: prog_uint8_t
questo errore compare su alcuni core (tipo il Tiny) che non hanno la definizione del tipo per la gestione con PROGMEM dell'unsigned char. Basta aprire il file pins_arduino.h contenuto in hardware/xxxx/core/xxxx (sostituire ad xxxx il core interessato, es.: tiny o 1284 o quel che è) e cambiare intorno alle righe 60-70 tutte le occorrenze di prog_uint8_t con
Code:
PROGMEM uint8_t

3) errore bastardo! error: attempt to use poisoned "SIG_USART1_RECV"
Questo errore viene fuori praticamente con tutti i core riguardanti i chip che hanno più di una seriale. Ciò è dovuto al fatto che in avr-libc 1.8 è stata inserita una lista di definizioni deprecate, che vengono messe "alla gogna" dal compilatore nel caso il flag _AVR_LIBC_DEPRECATED_ENABLE__ (come in avr-libc 1.smiley-cool risulti attivo.
Questa lista di definizioni deprecate comprende anche tutti i vettori delle seriali definiti con SIG_USARTx_RCV che, nella nuova versione, sono invece definiti con USARTx_RX_vect
Spippolando su internet ho trovato che un fix temporaneo è quello di editare il file HardwareSerial.cpp del core in uso e modificare le occorrenze così:
Code:
//#if defined(SIG_USART1_RECV)
#if defined(USART1_RX_vect)
(maggiori info qui)

Continuo il lavoro....
Logged


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

La cosa è un po' "pacco", nel senso che ho dovuto metter mano a tutti i file HardwareSerial.cpp e togliere tutte le occorrenze incriminate perché un semplice test #if defined() dava comunque l'errore visto che la definizione "avvelenata" non può essere in alcun modo toccata. La cosa positiva è che i vari core già erano predisposti perché c'erano nelle librerie i test per entrambe le definizioni.

Attualmente sembra che tutto funzioni. Adesso vorrei fare una prova con il famigerato bug dei 64kB. Ora ricerco lo sketch di astrobeed e lo compilo...
Logged


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

Attualmente sembra che tutto funzioni. Adesso vorrei fare una prova con il famigerato bug dei 64kB. Ora ricerco lo sketch di astrobeed e lo compilo...

Questa poi... ho caricato lo sketch, ho scelto Arduino Mega2560, ho cliccato su "compile" e mi è venuto fuori questo errore:
Quote
avr-gcc: error: unrecognized command line option '-assembler-with-cpp'
E da chi l'ha avuto quel parametro? Gliel'ha passato l'IDE? E perché sul Blink non l'ha passato?

Ora devo uscire (dentista + lavoro) non ho tempo per indagare, se qualcuno vuol fare qualche prova e far sapere qui cos'ha ottenuto, possiamo confrontare le gioie ed i dolori  smiley-zipper
Logged


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

Non ci siamo.... la toolchain Avr basata su avr-gcc 4.7 è un PACCO.
Oggi per caso, sviluppando la funzione delaySeconds, mi sono accorto che avr-binutils 2.22 è ancora affetta dal famigerato bug di delay/millis che non fa avanzare le funzioni temporali di Arduino. Pazzesco!  smiley-mad

Ho rimesso la toolchain con le patch Atmel.
Logged


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

Sei tanto ostinato che prima o poi ce la farai e leggeremo il tanto sospirato EUREKA! smiley-lol
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

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