[TUTO] [AVR] [Eclipse] Installation de Eclipse

Wikis > Les Tutoriels > [TUTO] [AVR] [Eclipse] Installation de Eclipse

Eclipse, qu’est-ce que c’est ?

[Wikiedia – http://fr.wikipedia.org/wiki/Eclipse_(projet)]

Eclipse est un projet, décliné et organisé en un ensemble de sous-projets de développements logiciels, de la Fondation Eclipse visant à développer un environnement de production de logiciels libres qui soit extensible, universel et polyvalent, en s’appuyant principalement sur Java. Son objectif est de produire et fournir des outils pour la réalisation de logiciels, englobant les activités de programmation (notamment environnement de développement intégré et frameworks) mais aussi d’ATL recouvrant modélisation, conception, testing, gestion de configuration, reporting… Son EDI, partie intégrante du projet, vise notamment à supporter tout langage de programmation à l’instar de Microsoft Visual Studio. Bien que conçu initialement uniquement pour produire des environnements de développement, les utilisateurs et contributeurs Eclipse se sont rapidement mis à réutiliser ses briques logicielles pour des applications clientes classiques. Cela a conduit à une extension du périmètre initial d’Eclipse à toute production de logiciel : c’est l’apparition du framework Eclipse RCP en 2004. Figurant parmi les grandes réussites de l’OpenSource, Eclipse est devenu un standard du marché des logiciels de développement, intégré par de grands éditeurs logiciels et sociétés de services. Les logiciels commerciaux Lotus Notes 8, IBM Lotus Symphony ou WebSphere Studio Application Developer sont notamment basés sur Eclipse.

Bon, en fait, c’est un IDE 1).

Installation d’Eclipse

Sous Linux, en fonction de la distribution utilisée, il est possible d’installer Eclipse depuis les depot officiels de la distribution.

Dans mon cas (Debian Wheezy 64-bit), seule une version assez ancienne n’est disponible (Indigo – 3.8.x). Il manque quelques fonctionnalités que je trouve plutôt pratiques depuis la Juno (4.2). Dans la suite du present tutoriel je ne considere que les versions à partir de Juno.

Eclipse est téléchargeable depuis cette URL : http://www.eclipse.org/downloads/ La version actuelle est la 4.3.1. Nom de code “Kepler SR1”.

[ACTION] Télécharger la version adaptée au système d’exploitation.

Pour ma part, étant sous Debian Wheezy 64-bit, je choisirai plûtot “Linux 64-bit”.

Une archive .tar.gz est téléchargée

[ACTION] Decompresser l’archive vers un répertoire/dossier.

lhotse@lhotse ~/Downloads % tar -xvzf eclipse-standard-kepler-SR1-linux-gtk-x86_64.tar.gz

Pour ma part, cette archive n’étant pas un logiciel tout bien packagé “comme-il-faut” pour ma distribution, je ne souhaite pas “polluer” mon système en copiant, par exemple, l’archive décompressée dans mon /opt. Etant le seul utilisateur de mon PC, je l’ai donc installée dans un répertoire opt dans mon home. Le chemin est donc : ~/opt/eclipse-standard-kepler-SR1-linux-gtk-x86_64.

lhotse@lhotse ~/Downloads % mv eclipse eclipse-standard-kepler-SR1-linux-gtk-x86_64

lhotse@lhotse ~/Downloads % cd ~/opt

lhotse@lhotse ~/opt % mv ~/Downloads/eclipse-standard-kepler-SR1-linux-gtk-x86_64 .

Une fois Eclipse installé, il est possible de le lancer. Le fait de l’avoir installé dans un chemin local, permet d’avoir plusieurs instances d’Eclipses différentes ; une pour faire du Java, une pour du C/C++, une pour du PHP, une pour du Ruby, etc…

Il est vrai que “autant tout avoir dans le même”… Cependant, bon nombre de développeurs Java diront que la gestion des dépendances peut-être problématique. Le truc qui me plait a moi, c’est que si je casse mon Eclipse en ayant installé le plugin de trop, je peux en changer comme bon me semble ; il suffit de supprimer le répertoire et de me refaire une configuration de Eclipse. Alors après, si on veut aller dans les copies de sauvegarde, il n’y a qu’un pas… Pour ma part, je n’installe pas un plugin tout les jours, surtout chez moi ; au boulot non plus, je n’ai pas les droits. He oui ! le fait de faire comme ca permet de s’affranchir du fait d’etre root pour installer un plugin ! Le seul inconviennient est qu’il s’agit du coup d’une “installation” mono-utilisateur ; à l’epoque du multi-utilisateur… Bref, revenons a nos moutons ! :-)

[ACTION] Lancer Eclipse

lhotse@lhotse ~/opt % cd eclipse-standard-kepler-SR1-linux-gtk-x86_64

lhotse@lhotse ..e-standard-kepler-SR1-linux-gtk-x86_64 % ./eclipse &

Un splash-screen s’affiche ; Une boite de dialogue s’affiche ensuite demandant de spécifier un Workspace. Un Workspace est un répertoire ou seront stockés un ensemble de projets avec ou sans liens entre eux.

[ACTION] Spécifier un chemin de Workspace

Une fois Eclipse lancé un certain nombre de plugins vont être nécessaires…


Installation du plugin CDT

Le plugin CDT permet la programmation en langage C/C++. Outre l’assembleur, qui n’a plus qu’un intérêt très spécifique et pédagogique, les microcontrôleurs (puisque in fine il est question de ça) se programment principalement en C, voir C++. Il est donc nécessaire d’installer le plugin CDT 2)

[ACTION] Dans notre Eclipse flambant neuf, qui attend dans une fenêtre derrière celle-ci, cliquer sur Help > Install New Software…

Une boite de dialogue s’affiche.

[ACTION] Dans la liste déroulante, sélectionner –All Available Sites–

La liste des softwares disponibles s’actualise. Ça peut prendre un peu de temps…

[ACTION] Dans Programming Languages, sélectionner à minima C/C++ Development Tools [ACTION] Cliquer sur Next > Next > I Accept… > Finnish

Pour ma part, je sélectionne tout ce qui commence par C/C++… C’est plutôt empirique comme approche… ^_^

Le(s) plugin(s) se télécharge(nt) et s’installe(nt) tous seuls… Une fois le plugin installé, une boite de dialogue s’affiche demandant le redémarrage d’Eclipse.

[ACTION] Cliquer sur Yes

Une fois Eclipse redémarré, une nouvelle “perspective” est disponible : C/C++ Development

Pour ouvrir la perspective C/C++ :

[ACTION] Fermer l’onglet Welcome
[ACTION] Dans le coin en haut à gauche, cliquer-droit sur Java > Close
[ACTION] Toujours dans le coin en haut à gauche, cliquer sur l’icone avec un plus (Tooltip : Open Perspective)
[ACTION] Selectionner C/C++ dans la boite de dialogue, puis OK

Bienvenue dans la perspective C/C++…


Installation du plugin AVR

Une fois que le plugin CDT est installé, il est ensuite nécessaire d’installer le plugin AVR. Ce plugin permet de s’interfacer avec le compilateur avr-gcc et les autres outils permettant le développement sur nos microcontrôleurs préférés.

Cela se fait de la même manière que précédemment, a la différence qu’il faudra ajouter un site de téléchargement.

[ACTION] Cliquer sur Help > Install New Software…

Une boite de dialogue s’affiche…

[ACTION] Cliquer sur Add…
[ACTION] Créer un nouvel update site avec l’URL suivante : http://avr-eclipse.sourceforge.net/updatesite

Si l’URL n’est pas la bonne, c’est peut-etre qu’elle a changée. Visiter le source-forge du plugin : http://www.webring.org/l/rd?ring=avr;id=59;url=http%3A%2F%2Fwinavr%2Esourceforge%2Enet%2F

[ACTION] Cliquer sur OK
[ACTION] Dans la liste déroulante, sélectionner le site nouvellement créé.

La liste des softwares disponibles s’actualise…

[ACTION] Sélectionner AVR Eclipse Plugin
[ACTION] Cliquer sur Next > Next > I Accept… > Finnish

A la fin de l’installation, Eclipse demande a être redémarré.

[ACTION] Cliquer sur Yes

Une fois Eclipse redémarre, un nouveau menu AVR est disponible dans la perspective C/C++ Development.

Et voila, nous avons Eclipse + CDT + AVR. Il ne manque plus que les outils de compilation !


Installation des outils de développement AVR

Comme évoqué précédemment, un compilateur adéquat est nécessaire afin de “transformer” le code écrit en C, en instructions compréhensibles par le processeur de nos petits microcontrôleurs chéris.

Sous Linux, le premier endroit où regarder est les dépôts officiels de la distribution utilisée.

Pour Debian Wheezy, il s’agit des paquets suivants :
* gcc-avr
* avr-binutils
* avr-libc
* gdb-avr
* avrdude

Pour les autres distributions, c’est sensiblement les même noms.

Pour les utilisateurs de Windows, un installer est disponible. Il s’agit de win-avr, disponible ici : http://www.webring.org/l/rd?ring=avr;id=59;url=http%3A%2F%2Fwinavr%2Esourceforge%2Enet%2F dans la rubrique Download. La procédure d’installation reste la procédure habituelle de tout logiciel sous Windows : Next > Next > Next > … > Finnish.

Coté Eclipse, pas grand chose a faire normalement. Etant donné que le plugin AVR fait un scan du système à la recherche de son compilateur, un simple redémarrage d’Eclipse doit suffire. Si ce n’est pas le cas, il est possible de spécifier les chemins en allant dans les préférences du plugin AVR.

Pour ce faire :

[ACTION] Cliquer sur Window > Préférences
[ACTION] Développer AVR > Paths
[ACTION] Spécifier les chemins vers les outils de développements si besoin.

That’s It ! Nous avons a présent un environnement de développement en C/C++ pour nos microcontrôleurs qui en théorie fonctionne. Beh justement, nous allons le tester !


Un premier projet

Alors voila, notre environnement de développement est prêt à être utilisé, il ne demande que ça en fait, et nous aussi, à dire vrai ! ^_^

Pour faire original, nous allons faire clignoter une LED… Quoi, comment ça “Encore ?!?!”. ^_^

Commençons par créer un nouveau projet.

[ACTION] Cliquer File > New » C++ Project

Une boite de dialogue s’affiche.

[ACTION] Spécifier un nom de projet (représentatif, si possible) dans le champ Project Name
[ACTION] Sélectionner AVR Cross Target Application > Empty project

N.B. : En informatique, plus particulièrement dans le domaine de la compilation, on parle de “cross-compilation” lorsque la plateforme sur laquelle va tourner le programme est différente (en terme d’architecture) de la plateforme sur laquelle le programme a été compilé ; C’est notre cas, gcc-avr est un cross-compilateur : on compile sur une machine Linux ou Windows 32 ou 64 bits un programme qui va tourner sur un microprocesseur 8-bit. En français on dit “compilation croisée”. C’est valable de système à système, d’architecture à architecture, et il est possible de combiner les deux (système + architecture) : on peut compiler sous Windows 64-bit un programme pour une cible ARM 32-bit sous Linux…

[ACTION] Cliquer Next

Il est ensuite proposer de sélectionner/customiser des configurations. Laissons tomber ce point là pour le moment ; on y reviendra bien assez tôt…

[ACTION] Cliquer Next

Ha !! Il est ensuite demandé de spécifier les propriétés du matériel. C’est là, ou la connaissance de notre plateforme matérielle intervient. Si on ne sait pas, il faut consulter la documentation. Pour rappel, notre plateforme matérielle est un Arduino Uno Rev. 3 ou un Arduino Nano Rev. 3 ; toutes deux basées sur un ATmega328P cadencé à 16MHz. Nous allons donc indiquer ceci dans notre projet.

[ACTION] Dans la liste déroulante MCU Type, selectionner ATmega328P
[ACTION] Dans le champ MCU Frequency (MHz), specifier 16000000

[ACTION] Cliquer Finnish

Voilà notre projet créé. La méthode de création d’un projet ne varie que très peu : Un nom, le microcontrôleur concerné, et la fréquence. On verra qu’il est possible de faire plusieurs configurations pour plusieurs microcontrôleurs différents.


MOI VOULOIR CODEEEERRRRRRR !!!!!

Oui, ca vient, ca vient !!! Keep your pantyhose on !! (Abyss).

Ajoutons un fichier source a notre projet :

[ACTION] Dans le l’Explorateur de Projets/Projet Explorer, cliquer-droit sur le nom du projet > New > Source File

Une boite de dialogue s’affiche.

[ACTION] Dans le le champ Source File, spécifier un nom de fichier.

L’usage veut que l’on mette soit main.c/cpp, soit Nom_Du_Projet.c/cpp (Blink_A_LED.cpp dans le cas présent).

Un nouveau fichier est créé et ajouté a notre Projet. Eclipse l’ouvre directement dans la partie centrale de l’espace de travail.

La LED a faire clignoter est la LED deja cablée sur la carte Arduino. Dans les deux cas (Uno et Nano), il s’agit de la broche D13 : la broche #5 du Port B (PB5).

On peut donc écrire le code source suivant :

#include <avr/io.h>
#include <util/delay.h>
 
int main( void )
{
    // Sets Pin #5 of port B as Output
   DDRB |= (1 << PB5) ;
 
   for( ; ; )''
   {''
      // Toggle Pin #5 of Port B
      PORTB ^= (1 << PB5) ;
 
      // Wait for 1 second
      _delay_ms( 1000.0 ) ;
 
   }
}

Il est ensuite temps de compiler tout ça… Ca se fait en cliquant sur l’icone marteau dan la barre d’outil. Pour les fans des menus, ca se passe ici :

[ACTION] Dans la barre d’outils, cliquer sur le marteau / Project > Build All.

Le résultat de la compilation est visible en bas de l’écran, dans l’onglet Console :

14:00:47 **** Incremental Build of configuration Debug for project Blink_A_LED ****
make all 
Building file: ../Blink_A_LED.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF"Blink_A_LED.d" -MT"Blink_A_LED.d" -c -o "Blink_A_LED.o" "../Blink_A_LED.cpp"
In file included from ../Blink_A_LED.cpp:11:
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
Finished building: ../Blink_A_LED.cpp
 
Building target: Blink_A_LED.elf
Invoking: AVR C++ Linker
avr-g++ -Wl,-Map,Blink_A_LED.map,--cref -mmcu=atmega328p -o "Blink_A_LED.elf"  ./Blink_A_LED.o   
Finished building target: Blink_A_LED.elf
 
Invoking: AVR Create Extended Listing
avr-objdump -h -S Blink_A_LED.elf  >"Blink_A_LED.lss"
Finished building: Blink_A_LED.lss
 
Invoking: Print Size
avr-size --format=avr --mcu=atmega328p Blink_A_LED.elf
AVR Memory Usage
----------------
Device: atmega328p

Program:    3292 bytes (10.0% Full)
(.text + .data + .bootloader)

Data:          8 bytes (0.4% Full)
(.data + .bss + .noinit)


Finished building: sizedummy
 

14:00:49 Build Finished (took 2s.328ms)

Je vous passe les détails, mais la compilation a réussie ! Notre chaîne de compilation fonctionne. Un seul petit bémol, mais qui n’est pas dût a notre chaîne de compilation : le compilateur nous indique qu’il y a un Warning. Nous verrons de quoi il s’agit par la suite… Il manque quelques commutateur d’optimisation…


Remarques, Propositions d’améliorations, Questions

Vous pouvez poster vos remarques, propositions d’amelioration, et questions sur le forum, dans la discussion prévue a cet effet : http://fablab-robert-houdin.org/fablab/phpBB-3.0.11-fr/phpBB3/viewtopic.php?f=3&t=8