Pages: [1] 2 3 ... 9   Go Down
Author Topic: [MAC] Aggiornamento IDE 1.0x all'ultima versione Atmel Toolchain  (Read 5426 times)
0 Members and 1 Guest are viewing this topic.
Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

N.B. : Questo thread fa seguito a tutta la serie di prove che si sono effettuate QUI per compilare l'ultima versione della Atmel Toolchain (3.4.2) su OS X Mountain Lion 10.8.4 e ne riassume i punti fondamentali.



La compilazione della Atmel Toolchain su OS X richiede una serie di prerequisiti :

prima di tutto l'installazione di Xcode (scaricabile gratuitamente dell'App Store per Mac), quindi, tramite Xcode, l'installazione dei "Command Line Tools" (... si può fare da dentro le preferenze di Xcode, bottone Downloads, tab Components), più l'installazione di tutta una serie di pacchetti indispensabili.

Se come me, non siete dei maghi di Linux, per facilitarvi la vita suggerisco, come prima cosa, l'installazione su OS X del pacchetto "Homebrew", che altro non è che un prodotto per semplificare l'installazione e la manutenzione di innumerevoli pacchetti disponibili per Linux su OS X.

Aperto il terminale, dal prompt dare il comando :

Code:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

... e l'installazione di Homebrew dovrebbe procedere senza intoppi. Al termine dell'installazione è suggerita una verifica con il comando, sempre da terminale :

Code:
brew doctor

che dovrebbe segnalare eventuali problemi da correggere (... o da ignorare se non rilevanti).

Terminata l'installazione e la verifica di Homebrew, si può passare all'installazione di tutti i pacchetti che sono propedeutici alla corretta compilazione della Atmel Toolchain. Per fare questo, sempre da terminale, useremo Homebrew secondo la seguente sintassi :

Code:
brew install nome_pacchetto

dove nome_pacchetto è il pacchetto che si desidera installare.  I pacchetti da installare sono i seguenti :

Code:
autoconf            gmp           libmpdclient           libusb-compat           pkg-config
automake            jasper        libpng                 mpc                     texinfo
dfu-programmer      jpeg          libtiff                mpfr                    wget
git                 libmpc        libusb                 netpbm

... in realtà ce n'è qualche d'uno in più (es. git, libusb, dfu-programmer) che io già avevo installato ... ritengo comunque conveniente la loro installazione poiché tanto, prima o poi, servono smiley-wink

Terminata l'installazione di questi pacchetti con Homebrew, occorre installare un ulteriore pacchetto ... TeX per il quale, fortunatamente, esiste una distribuzione aggiornata per OS X : http://mirror.ctan.org/systems/mac/mactex/MacTeX.pkg ... fate attenzione, è un .pkg da oltre 2 GB quindi ... occorre un po' di tempo, ma almeno è ben fatto e si installa senza problemi smiley

A questo punto, l'ambiente per poter compilare la Atmel Toolchain è completo di tutti gli strumenti necessari e si può passare al scaricare la Toolchain dal sito di Atmel ed a mettere tutti i vari .tar.gz nelle giuste directory, dopo di che occorre modificare lo script che viene fornito da Atmel per la compilazione, per renderlo eseguibile, senza problemi, su OS X.


Per evitarvi problemi, ho già creato la struttura delle directory necessaria e vi ho già messo dentro i vari pacchetti e lo script modificato ... potete scaricare il tutto dal seguente link : http://www.phoenixsea.ch/downloads/AVR/AVR_Toolchain_v3.4.2.zip  smiley-grin


Scaricato e scompattato lo zip indicato, dovreste trovarvi con una cartella di nome "AVR Toolchain v3.4.2" che, al suo interno, contiene ulteriori tre cartelle : "bld", "src" e "install" nonché lo script di compilazione (già corretto) build-avr8-gnu-toolchain.sh .

Da terminale posizionatevi nella radice di detta cartella ed eseguite il comando :

Code:
sh build-avr8-gnu-toolchain.sh -b _vostro_percorso_/bld -p _vostro_percorso_/install -s _vostro_percorso_/src

dove _vostro_percorso_ è il percorso completo alla cartella della Toolchain.

Dopo un tempo variabile, a secondo della potenza di calcolo del vostro Mac (... sul mio ha impiegato circa 40 minuti) la compilazione avrà termine e la Toolchain sarà tutta correttamente compilata e risiederà all'interno della cartella "install".


Per chi si vuole evitare l'installazione di Xcode, dei "Command Line Tools" e di tutti i pacchetti aggiuntivi necessari, nonché della compilazione, ho già predisposto uno .zip che contiene SOLO la Toolchain già compilata e già in una cartella di nome avr che, come vedremo, è quella che dobbiamo sostituire nel nostro IDE.

Tale zip, con la Toolchain già compilata per OS X è scaricabile da qui : http://www.phoenixsea.ch/downloads/AVR/avr.zip   smiley-lol

===============================================================================
======                                           AGGIORNAMENTO DEL 05 DIC 2013                                        ======
===============================================================================


Atmel ha rilasciato una nuova Toolchain, versione 3.4.3.  Grazie all'esperienza fatta con la precedente sono riuscito a ricreare la struttura per poter compilare questa nuova versione ... nuova posizione dei files nelle cartelle e nuovo script.

Dal link che segue potere scaricare detta struttura già pronta per la compilazione su OS X 10.9 (Mavericks) :

http://www.phoenixsea.ch/downloads/AVR/AVR_Toolchain_v3.4.3.zip  (circa 135 MB)

mentre, chi volesse scaricare la cartella avr, già pronta da sostituire all'interno dell'IDE 1.0.5 versione OS X, può seguire questo link :

http://www.phoenixsea.ch/downloads/AVR/avr_3.4.3.zip  (circa 50 MB).

Per la compilazione, valgono tutti i prerequisiti descritti per la precedente versione ... smiley-wink

=======================================================================================
« Last Edit: December 05, 2013, 06:03:56 am by gpb01 » Logged

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

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il passo successivo è ora aggiornare Arduino IDE per utilizzare la nuova Toolchain ...

Per fare questo, dovete andare nella cartella /Applications (... dove normalmente si trova Arduino.app), selezionare l'applicazione (Arduino.app), fare click con il tasto destro e selezionare la voce di menu "Show Package Contents" (... ho OS X in Inglese e quindi tutto quello che riporto è per l'inglese ... non dovreste comunque avere problemi ad identificare la voce nel caso lo abbiate in Italiano).

Questo aprirà una finestra del "Finder" sulla cartella "Contents" dell'applicazione.

Procedere nel seguente percorso :

Code:
Contents -> Resources -> Java -> hardware -> tools

... nella cartella "tools" si trova la cartella "avr" che è quella che dovremo sostituire.

Per il momento rinominate della cartella "avr" in "avr-old" e copiate nello stesso posto (dentro "tools") la nuova toolchain appena compilata (... o appena scaricata già compilata) :


Se avete compilato voi la toolchain allora :

1. copiate la catella "install" della toolchain dentro "tools"
2. rinominate la cartella copiata da "install" in "avr"
3. copiate la cartella "etc" che si trova ancora in "avr-old" (... la vecchia toolchain che abbiamo salvato) in "avr" (... la nuova toolchain)
4. copiate il file "avrdude" che si trova nella cartella "bin" dentro la "avr-old" (... la vecchia toolchain che abbiamo salvato) nella cartella "bin" che si trova in "avr" (... la nuova toolchain)


Se avete scaricato la toolchain già compilata :

1. copiate la cartella "avr" estratta dalo zip dentro la cartella "tools"


A questo punto, volendo, potete anche cancellare la cartella "avr-old" (... la vecchia toolchain), oppure lasciarla li nel caso ... voleste tornare indietro  smiley-mr-green


Questo è quanto e ... il vostro Arduino IDE contiene ora la nuova versione della Toolchain Atmel !!! smiley-wink


Ed ora iniziano i problemi ...
... il "core" arduino NON è al 100% compatibile con la nuova toolchain e occorrerà esaminare caso per caso le correzioni che sarà necessario applicare. faremo questa cosa assieme nei post a seguire.


Buon lavoro.


Guglielmo
« Last Edit: September 05, 2013, 02:13:46 pm by gpb01 » Logged

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

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 77
Posts: 4620
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ed ora iniziano i problemi ... il "core" arduino NON è al 100% compatibile con la nuova toolchain e occorrerà esaminare caso per caso le correzioni che sarà necessario applicare. faremo questa cosa assieme nei post a seguire.

Scusa @Guglielmo, questi problemi ci sono indipendentemente dal S.O. in uso, giusto?
Logged

my name is IGOR, not AIGOR

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, ho verificato gli stessi problemi che riscontro su OS X anche su Windows usando la Toolchain già compilata da Atmel.

Direi che nei post successivi ne mettiamo uno per volta e li risolviamo così, alla fine, ci saranno tutte le modifiche da fare al "core" e le potremo raggruppare in uno zip da installare assieme alla nuova Toolchain smiley

Guglielmo
Logged

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

Offline Offline
Full Member
***
Karma: 4
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, ho verificato gli stessi problemi che riscontro su OS X anche su Windows usando la Toolchain già compilata da Atmel.

Direi che nei post successivi ne mettiamo uno per volta e li risolviamo così, alla fine, ci saranno tutte le modifiche da fare al "core" e le potremo raggruppare in uno zip da installare assieme alla nuova Toolchain smiley

Guglielmo
Grande Guglielmo,complimenti per il tuo instancabile lavoro e per la condivisione dei risultati.
Provvedo anch'io al'installazione dei pacchetti per poi riportare eventuali problemi che incontrerò durante l'utilizzo della nuova toolchain.
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grande Guglielmo,complimenti per il tuo instancabile lavoro e per la condivisione dei risultati.
Provvedo anch'io al'installazione dei pacchetti per poi riportare eventuali problemi che incontrerò durante l'utilizzo della nuova toolchain.

Grazie ibbba  smiley-wink

Mi raccomando ... un problema alla volta ... apriamolo, risolviamolo ed archiviamo la soluzione così alla fine abbiamo la situazione aggiornata e valida per tutti gli OS (... tanto si tratta di correggere codice c/c++ nel core).

Guglielmo
Logged

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

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"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

ci saranno tutte le modifiche da fare al "core" e le potremo raggruppare in uno zip da installare assieme alla nuova Toolchain smiley

Non credo siano cambiate molte cose da quando ho fatto la stessa cosa per Windows, vedi articolo pubblicato su Elettronica In (http://www.open-electronics.org/arduino-full-memory-upgrade-to-the-last-atmel-toolchain-version/), non c'è da modificare nulla nel core, c'è da modificare vari file include della toolchain cambiando l'ordine di invocazione delle dipendenze, è questo che crea problemi a come lavora Arduino.
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie Astro, ma ... purtroppo credo che alcune cose siano cambiate, difatti, sia con l'include originale che con il tuo ... si hanno una serie di problemi.

Comunque, problema per problema, si verificherà se il tuo include risolve o se invece saranno necessarie altre modifiche smiley-wink

Guglielmo
Logged

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

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cominciamo con il più semplice dei programmi :

Code:
void setup() {
  
}

void loop() {
  
}

... più semplice di così si muore  smiley-mr-green

Appaiono una serie di problemi ... cominciamo a vedere se i primi sono da correggere oppure li possiamo solo considerare dei warnings e li trascuriamo.


Code:
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:98:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In function 'void __vector_18()':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:127:21: warning: unused variable 'c' [-Wunused-variable]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:368:11: warning: unused variable 'current_config' [-Wunused-variable]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:467:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]


Code:
In file included from /Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.cpp:3:0:
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'IPAddress::operator uint32_t()':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:51:55: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h: In member function 'bool IPAddress::operator==(const IPAddress&)':
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:75: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/Users/gpb01/Desktop/Arduino 1.0.5 TL.app/Contents/Resources/Java/hardware/arduino/cores/arduino/IPAddress.h:52:108: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]


... che vengono fuori sia con che senza la sostituzione della "include" fornita da Astro.

A me sembrano warnings trascurabili, ma preferirei avere conferma prima di passare ai successivi. smiley-wink

Guglielmo
« Last Edit: September 05, 2013, 02:48:43 pm by gpb01 » Logged

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

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

Alcuni warning sono sintomo di cattiva abitudine e possono portare il programmatore a commettere errori e qui il compilatore viene in aiuto emettendo dei warning.

Di cosa si tratta nello specifico non lo, bisogna studiare nel dettaglio il codice di arduino in corrispondenza di quei warning.

Diciamo che per il momento si possono pure tralasciare.

Mentre i warning che avvisano che un direttiva è stata ignorata devono mettere in allarme, perchè ignorare una direttiva PROGMEM comporta malfunzionamenti al programma.

Ciò che è cambiato è:
Ora c'è una funzione builtin di avr-gcc che viene usata da _delay_ms() e _delay_us(), che prendono entrambe un double.
Tuttavia è possibile disabilitare l'uso della builtin definendo __DELAY_BACKWARD_COMPATIBLE__

Ora i puntatori a pgm devono essere "const" ed è cosa ovvia, ma adesso il compilatore avvisa o termina in errore?
Sono deprecate le SIGNAL, che diventano ISR.

Non ci sono più gli alias prog_char ecc, ma c'è da vedere il file header pgmspace.h.

Non mi pare ci sia altro.

Ciao.
Logged

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

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

x iscrizione
Logged

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

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

Gli errori su HardwareSerial.cpp derivano principalmente da errori di scrittura del codice  smiley-yell
Sono segnalati dei confronti tra una variabile "i" di tipo "int" ed i membri di una struct che sono solo di tipo unsigned, quindi il compilatore segnala appunto l'incongruenza di tipi.
Altra cosa buffa, sono gli errori su variabili dichiarate ma non usate nella funzione indicata. Sarebbe da fare una ripulitura e revisione del codice.

Gli errori su IPAddress non li capisco, quel "dereferencing type-punned pointer will break strict-aliasing rules" non so bene cosa voglia dire.
Per ora, più che di errori di compatibilità del codice con la nuova toolchain, vedo errori di stesura del codice  smiley-wink
Logged


Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
Per ora, più che di errori di compatibilità del codice con la nuova toolchain, vedo errori di stesura del codice  smiley-wink

Già ... credo infatti che il nuovo compilatore sia solo ... più esigente e preciso e quindi, tutti quelli che saltano/salteranno fuori, sono essenzialmente "errori di stesura del codice" !!!  smiley-twist smiley-twist smiley-twist

Guglielmo
Logged

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

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

PS:
io per dire la verità non ho mai controllato i warning perché la compilazione non la tengo "verbosa" perciò non so mai cosa viene fuori compilando  smiley-sweat
Anzi, ieri facendo la prova, ho notato un altro warning, che tu non hai, nella compilazione di uno sketch vuoto. Ma ora è troppo presto per ricordarmi che problema era, e non sono a casa per controllare
Logged


Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
Anzi, ieri facendo la prova, ho notato un altro warning, che tu non hai, nella compilazione di uno sketch vuoto. Ma ora è troppo presto per ricordarmi che problema era, e non sono a casa per controllare

... ce l'ho, ce l'ho, ma ... quello è molto più grave e me lo tenevo per dopo. Deciso che questi che ho esposto sono solo "warning trascurabili", passiamo a quello che è più importante  smiley-yell

Come ho detto ... una cosa per volta o non riusciamo a fare una collezione esatta dei problemi/soluzioni smiley-wink

Guglielmo
Logged

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

Pages: [1] 2 3 ... 9   Go Up
Jump to: