You are here :   Welcome » AVRGCC : how make your tool with Ubuntu 8.04
 
Preview  Print...  Print this page...
Preview  Print...  Print this section...
Electronic
Microcontroler

 786954 visitors

 4 visitors online


kontrollerlab Kontrollerlab (IDE pour microcontrôleurs Atmel) tournant sur Ubuntu 8.04


Cet article donne la méthode pour compiler AVRGCC et utiliser (configurer) Kontrollerlab, l'environnement de développement intégré pour microcontrôleurs Atmel. Tous ces outils sont sous LINUX. Pour les vindosiens, il existe AVRGCC qui est intégré à WINAVR à télécharger sur le même site que le script que nous allons utiliser : AVRFREAKS. Il est alors possible d'utiliser l'environnement de développement Eclipse avec le plugins de M. Matthew McDougal (voir le lien suivant : http://www.sourceforge.net/projects/avr-eclipse/). C'est un exemple pour les vindosiens et qui fonctionne puisque je l'utilise au boulot (merci de ne pas se moquer, je suis effectivement obligé d'utiliser vindobefrown). Il y a d'autres environnements et méthodes bien sûr. Notre préoccupation  de ce jour se trouve sous LINUX :

Pour l'exemple de mise en oeuvre des outils j'ai utilisé LINUX avec la distribution Ubuntu 8.04. Cette remarque est importante car suivant la version et la distribution, la méthode peut quelque peu varier. Vous retrouverez la méthode pour Mandriva 2008.1 free sur ce même site.

AVRGCC



Allez sur le site d'AVRFREAKS. Se rendre sur le forum dans la section "AVRGCC forum" puis Sticky: Script for building AVR-GCC 4.2.2 on Linux.

Téléchargez le ZIP qui contient les scripts de téléchargement des programmes, téléchargement des patchs, de compilation et de nettoyage des répertoires. Attention, pour pouvoir télécharger ce ZIP, il faut être enregistré sur le forum sinon les téléchargements ne sont pas accessibles : build-avr-gcc-4.2.2-libc-1.6.1-makeinfo-fixed.zip.

Il faut alors suivre les étapes décrites dans le topicks. Nous allons les faire ensemble mais avant toute chose, si votre distribution LINUX est installée avec l'installation par défaut, il va vous manquer un certain nombre de packages. La première chose a faire est donc de télécharger avec l'outil d'installation de packages intégré à la distribution (Synaptic pour Ubuntu) les packages suivants :
 
  • texinfo
  • patch
  • avrgcc-color (non obligatoire)
  • nautilus-open-terminal (c'est une bonne option non obligatoire mais qui permet d'ouvrir un terminal directement dans le répertoire en cours tout comme avec Konqueror et F4)
Dans Nautilus, vérifier que le répertoire /usr/local/avr n'existe pas (ce qui est normalement le cas) ou qu'il n'y a pas de fichier dedans. Si ce répertoire existe, il faut le supprimer. Il faut les droits root pour ce faire.
 
  • Créez ensuite un répertoire temporaire dans lequel vous décompressez les scripts téléchargés. Ce placer dans le répertoire puis lancer une console (pratique nautilus-open-terminal dans le menu fichier) qui s'ouvrira directement dans ce répertoire.
  • Lancez le script ./getfiles.sh. Ce script télécharge dans votre répertoire temporaire tous les sources nécessaires.

monmon@monmon-portable:~/temp/build-avr-gcc-4.2.2-libc-1.6.2-makeinfo-fixed/make-avr-gcc$ sudo sh getfiles.sh

--18:00:04--  ftp://sourceware.org/pub/insight/releases/insight-6.7.1.tar.bz2

           => `insight-6.7.1.tar.bz2'

Résolution de sourceware.org... 209.132.176.174

Connexion vers sourceware.org|209.132.176.174|:21... connecté.

Ouverture de session en anonymous... Session établie!

==> SYST ... complété.    ==> PWD ... complété.

==> TYPE I ... complété.  ==> CWD /pub/insight/releases ... complété.

==> PASV ... complété.    ==> RETR insight-6.7.1.tar.bz2 ... complété.

Taille: 23 172 660 (22M) (non certifiée)


100%[========================================================================================>] 23 172 660   263.63K/s    ETA 00:00


18:01:34 (261.38 KB/s) - « insight-6.7.1.tar.bz2 » sauvegardé [23172660]


--18:01:34--  ftp://ftp.dkuug.dk/pub/gnu/ftp/gnu/binutils/binutils-2.18.tar.bz2

           => `binutils-2.18.tar.bz2'

Résolution de ftp.dkuug.dk... 195.215.30.75

Connexion vers ftp.dkuug.dk|195.215.30.75|:21... connecté.

Ouverture de session en anonymous... Session établie!

==> SYST ... complété.    ==> PWD ... complété.

==> TYPE I ... complété.  ==> CWD /pub/gnu/ftp/gnu/binutils ... complété.

==> PASV ... complété.    ==> RETR binutils-2.18.tar.bz2 ... complété.

Taille: 14 962 245 (14M) (non certifiée)


100%[========================================================================================>] 14 962 245   378.39K/s    ETA 00:00


18:02:18 (341.07 KB/s) - « binutils-2.18.tar.bz2 » sauvegardé [14962245]


--18:02:18--  http://download.savannah.gnu.org/releases/avr-libc/avr-libc-user-manual-1.6.2.pdf.bz2

           => `avr-libc-user-manual-1.6.2.pdf.bz2'

Résolution de download.savannah.gnu.org... 199.232.41.75

Connexion vers download.savannah.gnu.org|199.232.41.75|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: 1 471 961 (1.4M) [application/pdf]


100%[========================================================================================>] 1 471 961    371.22K/s    ETA 00:00


18:02:24 (278.20 KB/s) - « avr-libc-user-manual-1.6.2.pdf.bz2 » sauvegardé [1471961/1471961]


--18:02:24--  http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.6.2.tar.bz2

           => `avr-libc-1.6.2.tar.bz2'

Résolution de download.savannah.gnu.org... 199.232.41.75

Connexion vers download.savannah.gnu.org|199.232.41.75|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: 1 044 977 (1020K) [application/x-tar]


100%[========================================================================================>] 1 044 977    318.04K/s    ETA 00:00


18:02:28 (303.44 KB/s) - « avr-libc-1.6.2.tar.bz2 » sauvegardé [1044977/1044977]


--18:02:28--  ftp://ftp.dkuug.dk/pub/gnu/ftp/gnu/gcc/gcc-4.2.2/gcc-4.2.2.tar.bz2

           => `gcc-4.2.2.tar.bz2'

Résolution de ftp.dkuug.dk... 195.215.30.75

Connexion vers ftp.dkuug.dk|195.215.30.75|:21... connecté.

Ouverture de session en anonymous... Session établie!

==> SYST ... complété.    ==> PWD ... complété.

==> TYPE I ... complété.  ==> CWD /pub/gnu/ftp/gnu/gcc/gcc-4.2.2 ... complété.

==> PASV ... complété.    ==> RETR gcc-4.2.2.tar.bz2 ... complété.

Taille: 44 144 408 (42M) (non certifiée)


100%[========================================================================================>] 44 144 408   375.97K/s    ETA 00:00


18:04:40 (328.37 KB/s) - « gcc-4.2.2.tar.bz2 » sauvegardé [44144408]


  • Lancez le script ./get-patches.sh. Ce script télécharge dans votre répertoire temporaire tous les patchs de mise à jour comme la prise en compte des micros Tiny45 par exemple.

monmon@monmon-portable:~/temp/build-avr-gcc-4.2.2-libc-1.6.2-makeinfo-fixed/make-avr-gcc$ sudo sh get-patches.sh

--18:11:45--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-binutils/files/patch-newdevices

           => `patch-newdevices'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [  <=>                                                                                    ] 7 116         29.64K/s            


18:11:47 (29.59 KB/s) - « patch-newdevices » sauvegardé [7116]


--18:11:47--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-binutils/files/patch-aa

           => `patch-aa'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 1 416         --.--K/s            


18:11:48 (82.28 MB/s) - « patch-aa » sauvegardé [1416]


--18:11:48--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-binutils/files/patch-bug5215

           => `patch-bug5215'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 1 132         --.--K/s            


18:11:50 (117.98 MB/s) - « patch-bug5215 » sauvegardé [1132]


--18:11:50--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-binutils/files/patch-coff-avr

           => `patch-coff-avr'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [       <=>                                                                               ] 170 287      116.44K/s            


18:11:52 (116.16 KB/s) - « patch-coff-avr » sauvegardé [170287]


--18:11:52--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-binutils/files/patch-newsections

           => `patch-newsections'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 1 205         --.--K/s            


18:11:53 (75.47 MB/s) - « patch-newsections » sauvegardé [1205]


AVERTISSEMENT: les métacaractères ne sont pas supportés en HTTP.

--18:11:53--  http://winavr.cvs.sourceforge.net/*checkout*/winavr/patches/binutils/2.18/30-binutils-2.18-avr-size.patch

           => `30-binutils-2.18-avr-size.patch'

Résolution de winavr.cvs.sourceforge.net... 66.35.250.89

Connexion vers winavr.cvs.sourceforge.net|66.35.250.89|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [   <=>                                                                                   ] 12 761        28.48K/s            


18:11:55 (28.39 KB/s) - « 30-binutils-2.18-avr-size.patch » sauvegardé [12761]


--18:11:55--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-0b-constants

           => `patch-0b-constants'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [  <=>                                                                                    ] 4 122         17.58K/s            


18:11:56 (17.53 KB/s) - « patch-0b-constants » sauvegardé [4122]


--18:11:56--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-bug11259

           => `patch-bug11259'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [   <=>                                                                                   ] 11 090        23.81K/s            


18:11:58 (23.73 KB/s) - « patch-bug11259 » sauvegardé [11090]


--18:11:58--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-bug25672

           => `patch-bug25672'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 671           --.--K/s            


18:11:59 (45.81 MB/s) - « patch-bug25672 » sauvegardé [671]


--18:11:59--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-bug30243

           => `patch-bug30243'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 409           --.--K/s            


18:12:00 (25.62 MB/s) - « patch-bug30243 » sauvegardé [409]


--18:12:00--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-constraint-desc

           => `patch-constraint-desc'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 1 101         --.--K/s            


18:12:02 (73.69 MB/s) - « patch-constraint-desc » sauvegardé [1101]


--18:12:02--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-doc-progmem

           => `patch-doc-progmem'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 716           --.--K/s            


18:12:03 (66.06 MB/s) - « patch-doc-progmem » sauvegardé [716]


--18:12:03--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-dwarf

           => `patch-dwarf'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 372           --.--K/s            


18:12:04 (34.79 MB/s) - « patch-dwarf » sauvegardé [372]


--18:12:04--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-libiberty-Makefile.in

           => `patch-libiberty-Makefile.in'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [ <=>                                                                                     ] 392           --.--K/s            


18:12:05 (37.96 MB/s) - « patch-libiberty-Makefile.in » sauvegardé [392]


--18:12:05--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-newdevices

           => `patch-newdevices'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [   <=>                                                                                   ] 10 361        22.22K/s            


18:12:07 (22.15 KB/s) - « patch-newdevices » sauvegardé [10361]


--18:12:07--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-os_main-os_task

           => `patch-os_main-os_task'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [  <=>                                                                                    ] 6 714         27.94K/s            


18:12:08 (27.87 KB/s) - « patch-os_main-os_task » sauvegardé [6714]


--18:12:08--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-zero_extend

           => `patch-zero_extend'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [  <=>                                                                                    ] 4 979         21.23K/s            


18:12:10 (21.15 KB/s) - « patch-zero_extend » sauvegardé [4979]


--18:12:10--  http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-zz-atmega256x

           => `patch-zz-atmega256x'

Résolution de www.freebsd.org... 69.147.83.33

Connexion vers www.freebsd.org|69.147.83.33|:80... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/plain]


    [   <=>                                                                                   ] 10 099        21.52K/s            


18:12:11 (21.50 KB/s) - « patch-zz-atmega256x » sauvegardé [10099]

  • Lancer le script ./buildavr-no-insight.sh. Ce script lance automatiquement la décompression, le patch et la compilation d'AVRGCC. Ne pas oublier de rendre ce fichier exécutatable (dans Nautilus, faire un clic droit sur le fichier, propriété, onglet permissions et cocher la case Exécution). Répondre "y" à la question de départ et le travail commence.

root@monmon-portable:/home/monmon/temp/build-avr-gcc-4.2.2-libc-1.6.2-makeinfo-fixed/make-avr-gcc#

root@monmon-portable:/home/monmon/temp/build-avr-gcc-4.2.2-libc-1.6.2-makeinfo-fixed/make-avr-gcc# sudo sh buildavr-no-insight.sh

  • Si tout se passe correctement, au bout de quelques minutes (suivant la puissance de votre processeur, dans mon cas, environ 15 min sur un dual core 1,7GHz), vous avez le message suivant :

make[1]: quittant le répertoire « /usr/local/avr/build/avr-libc-1.6.2/include »
Making clean in common
make[1]: entrant dans le répertoire « /usr/local/avr/build/avr-libc-1.6.2/common »
make[1]: Rien à faire pour « clean ».
make[1]: quittant le répertoire « /usr/local/avr/build/avr-libc-1.6.2/common »
Making clean in .
make[1]: entrant dans le répertoire « /usr/local/avr/build/avr-libc-1.6.2 »
make[1]: Rien à faire pour « clean-am ».
make[1]: quittant le répertoire « /usr/local/avr/build/avr-libc-1.6.2 »
(./buildavr-no-insight.sh)
(./buildavr-no-insight.sh) installation of avr GNU tools complete
(./buildavr-no-insight.sh) add /usr/local/avr/bin to your path to use the avr GNU tools
(./buildavr-no-insight.sh) you might want to run the following to save disk space:
(./buildavr-no-insight.sh)
(./buildavr-no-insight.sh) rm -rf /usr/local/avr/source /usr/local/avr/build



Dans le cas d'un message d'erreur, c'est surement un package qui est manquant. Il faut donc installer ce package et vider de ses fichiers le répertoire /usr/local/avr avant de relancer les scripts.
Nous ne toucherons pas aux paths comme indiqué mais configurerons Kontrollerlab pour aller chercher les outils dans le bon répertoire.
 
  • Nous pouvons maintenant lancer la ligne de commande sudo rm -rf /usr/local/avr/source /usr/local/avr/build
    pour nettoyer le répertoire /usr/local/avr de tous les fichiers créés pendant la compilation qui ne sont plu utiles (sources, obj,...). Seuls les fichiers nécessaires sont conservés.

AVRDUDE et USBASP

j'utilise le programmateur USBASP (programmateur Atmel sur port USB, voir la réalisation sur ce site) avec le programme AVRDUDE. AVRDUDE est facilement installable à travers Synaptic. Le programmateur USBASP utilise la libairie libusb qui est installée par défaut.

Vous pourrez donc utiliser directement votre programmateur mais attention ; uniquement en super-utilisateur. Il faut les droits pour pouvoir accéder au port USB. Vous pouvez vérifier si votre programmateur fonctionne correctement avec la ligne suivante (mode terminal d'AVRDUDE) : sudo avrdude -c usbasp -p t45 -t -F
monmon@monmon-portable:~$ sudo avrdude -c usbasp -p t45 -t -F
[sudo] password for monmon:

avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0xff0000
avrdude: Expected signature for ATtiny45 is 1E 92 06
avrdude: current erase-rewrite cycle count is 128 (if being tracked)
avrdude> quit
>>> quit

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

monmon@monmon-portable:~$ 
Dans la capture ci-dessus, on tente de rentrer en mode terminal avec un Tiny45. On passe en mode terminal et le message d'erreur vient du fait qu'on est pas connecté à un Tiny mais on établit bien la communication avec le programmateur, ce qui était recherché.

Pour ne pas être embêté par le fait de passer en su, voici la méthode suivie tirée du site http://forums.obdev.at/viewtopic.php?p=4436

How to add user permission for USBasp (I have tested this method in ubuntu 7.10):
source:http://www.bitpim.org/help/

1. Create new rule for udev
Code:
sudo gedit /etc/udev/rules.d/60-objdev.rules

2. Edit new rule in gedit and add following:
Code:
   SUBSYSTEM!="usb_device", ACTION!="add", GOTO="objdev_rules_end"
   # USBasp
   SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="users", MODE="666"
   LABEL="objdev_rules_end"

3. Restart udev.
Code:

   sudo /etc/init.d/udev restart


LA SUITE BIENTOT

Creation date : 24/01/2008 @ 22:09
Last update : 06/04/2011 @ 21:48
Category : Microcontroler - Soft Tools
Page read 24852 times
  Next


Reactions to this article

Reaction #1 

by roro 09/11/2008 @ 19:33

La script de compilation ne fonctionne pas sous Mandriva 2007.1, ni Mandriva 2008 ... Une bibliotheque systeme manquante :
http://rpm.pbone.net/index.php3/stat/4/idpl/4336686/com/libbinutils2-2.16.91.0.7-3mdv2007.0.i586.rpm.html
http://rpm.pbone.net/index.php3/stat/4/idpl/5166363/com/libbinutils2-2.17.50.0.12-1mdv2008.0.i586.rpm.html

          Salutations



Did you like an article ?
To receive news about this website, consider subscribing to our Newsletter.
Captcha reload
copy the code :
You are here :   Welcome » AVRGCC : how make your tool with Ubuntu 8.04
 
Search
 
Sentence to think about :  Caution, a train can hide another !! eek  Monmon