Arduino · 22 giugno 2014 0

Aggiornare la toolchain Atmel su Mac OS X

In questo articolo vi mostrerò come aggiornare la toolchain Atmel su OS X per poter usufruire degli strumenti di compilazioni più aggiornati disponibili. C’è un problema, ossia che la compilazione della toolchain dai sorgenti di GNU è un vero calvario! Ma possiamo risolvere il problema usando CrossPack! CrossPack è la toolchain già precompilata e impacchettata in forma di comoda app che possiamo scaricare ed installare sul nostro sistema in un paio di minuti. Attenzione: CrossPack gira su OS X 10.6 o successivi, la presente guida è stata realizzata su Mavericks: penso che possa funzionare anche su versioni precedenti del sistema senza o con poche modifiche.

[notice]Requisito fondamentale è la conoscenza minima del terminale, necessaria per poter inserire alcuni comandi. Non si tratta di nulla di eccezionale, ma è richiesta una certa dimestichezza perché con “sudo” ed il terminale si può alterare il sistema, se si sbaglia a scrivere un comando.[/notice]

Prima di tutto, procuriamoci l’ultima versione di CrossPack da questa pagina. Al momento della stesura di questa guida (21/06/2014) la versione più recente è la CrossPack-AVR-20131216 (ossia rilasciata il 16/12/2013). Scaricato il file .dmg, installiamo la suite con un doppio click sull’icona del pacchetto “CrossPack-AVR.pkg“.

CrossPack-AVR

Terminata l’installazione dei file, inizia la parte più complicata del lavoro, dove opereremo da terminale. Aprite il Launcher e selezionate l’app “Terminale” oppure, se l’avete sulla vostra Dock Bar, apritelo da lì. Adesso è importante che digitiate i comandi così come sono riportati (adattandoli, quando ve lo dirò, al vostro sistema). Portiamoci nella cartella di sistema dov’è presente CrossPack-AVR con:

cd /usr/local

Dando il comando

ls -la

possiamo vedere un elenco dettagliato dei file di quella cartella:

drwxrwxr-x  21 root            admin 714   27 Apr 12:00 .
drwxr-xr-x@ 12 root            wheel 408   27 Apr 11:56 ..
-rw-r--r--@ 1  leonardomiliani admin 6148  4  Mag 12:29 .DS_Store
drwxr-xr-x  13 leonardomiliani admin 442   27 Apr 12:28 .git
-rw-r--r--  1  leonardomiliani admin 246   27 Apr 10:52 .gitignore
-rw-r--r--  1  leonardomiliani admin 3158  27 Apr 10:52 CODEOFCONDUCT.md
-rw-r--r--  1  leonardomiliani admin 687   27 Apr 10:52 CONTRIBUTING.md
drwxr-xr-x  13 leonardomiliani admin 442   28 Apr 11:15 Cellar
lrwxr-xr-x  1  root            admin 22    31 Mar 15:49 CrossPack-AVR -> CrossPack-AVR-20131216
drwxr-xr-x  15 root            wheel 510   16 Dic 2013 CrossPack-AVR-20131216
-rw-r--r--  1  leonardomiliani admin 1253  27 Apr 10:52 LICENSE.txt
drwxr-xr-x  9  leonardomiliani admin 306   27 Apr 10:55 Library
-rw-r--r--  1  leonardomiliani admin 1708  27 Apr 10:52 README.md
-rw-r--r--  1  leonardomiliani admin 23719 27 Apr 10:52 SUPPORTERS.md
drwxr-xr-x  84 leonardomiliani admin 2856  14 Mag 18:44 bin
drwxr-xr-x  3  leonardomiliani admin 102   27 Apr 12:00 etc
drwxrwxr-x  18 root            admin 612   27 Apr 12:28 include
drwxr-xr-x  67 root            admin 2278  27 Mag 17:52 lib
drwxr-xr-x  14 leonardomiliani admin 476   28 Apr 11:15 opt
drwxr-xr-x  15 leonardomiliani admin 510   14 Mag 18:44 share
drwxr-xr-x  3  leonardomiliani admin 102   27 Apr 12:00 var

Fate caso a questo, ci sono 2 cartelle che hanno un nome che iniziano con “CrossPack-AVR“: una è la cartella vera e propria che contiene la toolchain, “CrossPack-AVR-20131216“, mentre l’altra è un link a questa (notate la presenza della freccia “->“). Altra cosa che potete notare sono il nome del proprietario dei vari file ed il gruppo di appartenenza. Mac OS X, derivando da UNIX, conserva un ferreo controllo sull’accesso ai file in base ai proprietari ed ai gruppi di appartenza, in modo che le azioni di ogni singolo utente siano limitate ai propri file oppure ai file dei gruppi a cui anch’egli appartiene. Come vedete, la cartella che contiene la toolchain di CrossPack appartiene al gruppo “wheel“, che sui sistemi *nix è un gruppo che ha la possibilità di diventare “superuser” (ossia operare come fosse l’utente amministratore, “root“, senza esserlo, tramite il comando “sudo“) ma anche di poter accedere a determinate periferiche e/o file. Nel nostro caso, necessitiamo di appartenere al gruppo “wheel” per poter compilare ed inviare alle schede Arduino i nostri sketch. Per far ciò dobbiamo assegnare il nostro utente al gruppo “wheel” con il seguente comando:

sudo dseditgroup -o edit -a NOMEUTENTE -t user wheel

sostituendo a “NOMEUTENTE” il nome che avete scelto al momento dell’installazione di Mac OS X. E’ facile scoprirlo perché è quello che compare al prompt sul terminale dopo il nome del vostro computer. Nel mio caso:

iMac-di-Leonardo:/ leonardomiliani$

Ecco il mio utente, “leonardomiliani“.

Fatto questo passaggio, torniamo all’ambiente grafico. Adesso dobbiamo creare una copia dell’IDE di Arduino con la nuova toolchain. Procuriamoci quindi da questa pagina l’ultima versione dell’IDE, se già non l’abbiamo sul nostro sistema: al momento della stesura di questa guida è la 1.0.5.

Siccome dobbiamo lavorare all’interno del pacchetto dell’app Arduino, per comodità la copia dell’IDE è bene che sia all’interno della cartella Applicazioni del nostro utente. Se avete già l’IDE di Arduino installato sul vostro sistema, aprite il Finder, selezionate “Applicazioni” dal menu di sinistra e poi, cliccando col pulsante destro del mouse direttamente sull’app, scegliete “Duplica“, oppure selezionatela e poi dal menu “File” scegliete la voce “Duplica“. Verrà creata una copia dell’app. Aprite un’altra finestra del Finder e poi selezionate dal menu “Vai” la voce “Computer“. Si aprirà la vista delle periferiche del vostro computer. Cliccate sull’icona del vostro disco rigido (dovrebbe essere “Macintosh HD“), poi su “Utenti“, poi sull’icona a forma di casa con il vostro nome utente ed infine sulla cartella “Applications“. Queste sono le app installate solo per il vostro utente, come potete vedere sono molto poche rispetto a quelle presenti sul sistema. La comodità di selezionare questa cartella è data dal fatto che abbiamo un percorso accessibile senza dover dare permessi o percorsi particolari.

Macintosh HDUna volta nella cartella “Applications” del nostro utente, trasciniamo qui la copia dell’IDE che abbiamo fatto oppure direttamente l’app appena scaricata dal sito di Arduino e rinominiamola con un nome indicativo, io ad esempio ho scelto “Arduino 1.0.5 crosspack“.

Adesso facciamo click col pulsante destro e scegliamo “Mostra contenuto pacchetto” oppure selezioniamo l’icona e poi dal menu delle azioni (l’icona a forma di rotellina sul Finder) clicchiamo su “Mostra contenuto pacchetto”, ed entriamo così nell’app stessa.

Mostra contenuto pacchettoClicchiamo su “Contents/Resources/Java/hardware/tools“: troveremo al termine di questo percorso una cartella denominata “avr“: essa contiene la toolchain originale dell’IDE di Arduino. Dobbiamo eliminarla: tranquilli, tanto stiamo lavorando sulla copia dell’IDE, ricordate? Quindi, prendete l’icona e trascinatela nel cestino (svuotate poi il cestino per assicurarsi che il sistema la elimini definitivamente). A questo punto non ci resta che inserire la toolchain in questa copia dell’IDE. Siccome la toochain è già presente nel sistema (ricordate? è nella cartella “CrossPack-AVR“) il modo più semplice è usare le potenzialità dei sistemi *nix e creare un collegamento simbolico.

Riapriamo il terminale e digitiamo il seguente comando:

cd '/Users/NOMEUTENTE/Applications/NOME_COPIA_IDE.app'

sostituendo a “NOMEUTENTE” il vostro nome utente ed a “NOME_COPIA_IDE” il nome che avete dato alla vostra copia dell’app. Ricordatevi i singoli apici prima e dopo il percorso: sono importanti perché se avete, come nel mio caso, scelto un nome che contiene degli spazi come separatori, il terminale interpreterebbe il comando male (in *nix lo spazio separa i vari comandi oppure i vari parametri dei comandi stessi). Quindi, tornando al mio esempio, io digiterò:

cd '/Users/leonardomiliani/Applications/Arduino 1.0.5 crosspack.app'

Adesso, sempre da terminale, spostiamoci fino alla cartella che conterrà il collegamento simbolico alla toolchain: è la stessa cartella che conteneva la cartella “avr” che abbiamo cancellato in precedenza. Digitiamo:

cd Contents/Resources/Java/hardware/tools

ora in questa cartella creeremo il collegamento simbolico con:

ln -s /usr/local/CrossPack ./avr

Se adesso diamo il comando:

ls -la

vedremo che la cartella avr è un link simbolico a CrossPack-AVR.

Bene! Abbiamo terminato. Chiudete tutte le finestre del terminale, poi aprite il Finder, cliccate su “Vai” e poi su “Computer”, aprite il vostro disco rigido, poi entrate nella cartella del vostro utente, selezionate “Applications” e trascinate l’icona dell’IDE di Arduino con la toolchain di CrossPack nella Dock Bar, in modo da avere l’app a portata di click ed il gioco è fatto. Aprendo l’IDE con la nuova toolchain potrete compilare i vostri sketch con gli ultimi strumenti messi a disposizione da Atmel ossia avr-gcc 4.8.1, binutils 2.23.2 e avrdude 6.0.1. Buon divertimento!