[TUTO] [AVR] [Eclipse] Utilisation de Eclipse/CDT/AVR

Revision for “[TUTO] [AVR] [Eclipse] Utilisation de Eclipse/CDT/AVR” created on 9 octobre 2014 à 13 h 24 min

Titre
[TUTO] [AVR] [Eclipse] Utilisation de Eclipse/CDT/AVR
Contenu
[TUTO] Utilisation de Eclipse/CDT/AVR Introduction Ça y est, nous avons donc un environnement de développement digne de ce nom. Non pas que l'interface Arduino soit “mauvaise” ; elle est volontairement simple, orientée vers le plus grand nombre. Il est certain qu'une certaine catégorie d'utilisateurs seront tout à fait satisfaits avec, par contre les plus curieux en atteindront vite les limites. D'autres seront gênés sur des aspects de taille ou d'efficacité de code. Et puis pourquoi ne pas utiliser les broches du Port C pour autre chose que des Entrées Analogiques ? Pourquoi mettre les broches du Port B à “0” ou à “1” une part une à l'aide de la macro digitalWrite, alors qu'une seule écriture de registre suffirait ? Trêve de bavardages. Nous avons vu comment créer un projet, y ajouter un fichier source, et le compiler 1). Les configurations Il a été mentionné précédemment la possibilité de définir des Configurations. Par défaut, Eclipse/CDT en définit deux : Debug et Release. Dans les grandes lignes, la configuration Debug place des commutateurs dans l'appel au compilateur et à l’éditeur de liens qui vont permettre le débogage du programme. Ceci est applicable lors d'un workflow de développement “standard”, càd lorsque l'on développe un programme ou application qui tourneront sur une architecture PC, mettons. Le résultat d'une telle compilation est un exécutable avec des informations de Debug à l’intérieur permettant à un debugger de travailler a son aise. C'est donc une configuration de travail ; en aucun cas de production. Le résultat d'une compilation en Release est, lui, une version optimisée du même programme. Cette version est par conséquent plus légère et est apte (après débogage) à intégrer un environnement de production ou être livrée. C'est grosso-modo la théorie, dans l'informatique logicielle. En embarqué, c'est un peu différent. Il est possible de déboguer un programme sur un embarqué ; mais en général, ce serait sur des architectures déjà conséquentes, du genre ARM, etc. Et cela impose l'utilisation d'un matériel plus spécifique. Certains parmi vous ont peut-être déjà entendu parler de sondes JTAG… Dans le cas de notre Arduino, on pas trop d'alternatives ; Il existe bien une Debug Wire, mais cela impose un programmeur déjà évolué… Autant dire que la configuration Debug ne nous servira quasiment pas ; nous allons donc la supprimer… [ACTION] Cliquer sur le menu Project > Build Configuration » Manage… [ACTION] Selectionner la configuration Debug [ACTION] Cliquer sur Delete ; confirmer. [ACTION] Selectionner la configuration Release [ACTION] Cliquer sur Rename… [ACTION] Dans le champ Name, indiquer un nouveau nom de configuration. Une bonne pratique a adopter est de nommer les configuration de maniere représentative. Lors de projets AVR/Arduino, j'ai pour habitude de mettre <Cible>_<Frequence>. Ca donnerai ici : ATmega328P_16MHz [ACTION] Confirmer le tout (cliquer sur OK). Voila, une bonne chose de faite. Il est possible ensuite de définir plusieurs autre configurations : par exemple si l'on souhaite que le projet tourne sur d'autres microcontrôleurs. [ACTION] Supprimer le répertoire Debug Nous allons a présent dire au compilateur que nous souhaitons optimiser notre code. [ACTION] Cliquer-droit sur le projet > Properties [ACTION] Dans le panneau de gauche, développer C/C++ Build > Settings [ACTION] Dans le panneau de droite, dans AVR Compiler > Optimization, sélectionner Size Optimizations (-Os) dans la liste déroulante Optimization Level Reporter le changement dans AVR C++ Compiler [ACTION] Dans le panneau de droite, dans AVR C++ Compiler > Optimization, sélectionner Size Optimizations (-Os) dans la liste déroulante Optimization Level Il est possible que le paramètre soit déjà effectif. He oui, nous avons renommé la configuration Release qui avait déjà quelques éléments d'optimisation ! [ACTION] Lancer la compilation Le warning a disparu. La suite logique est le transfert du programme vers l'Arduino… Transfert du programme Le transfert du programme, ou téléversement dans la lexicologie Arduino, se fait a l'aide de l'outil avrdude. Dans Eclipse, il s'agit du bouton de la barre de menu AVR avec la fleche verte, vers le bas. Sinon, on peut faire via le menu AVR > Upload Project to Target Device. Comme la pluspart des operations dans Eclipse, elle est parametrable via les propriétés du projet. [ACTION] Cliquer-droit sur le projet > Properties [ACTION] Dans le panneau de gauche, développer AVR > AVRDude [ACTION] Dans le panneau de droite, dans l'onglet Programmer, créer une nouvelle Programmer configuration : cliquer sur New… [ACTION] Specifier le champ Configuration name [ACTION] Selectionner Arduino comme Programmer hardware (peut parfois etre Atmel STK500 Version 2.x firmware, en fonction du bootloader chargé sur la carte Arduino) [ACTION] Specifier le champ Override default port : /dev/ttyUSB0 pour le Arduino Nano ; /dev/ttyACM0 pour le Arduino Uno [ACTION] Specifier le champ Override default baudrate : 57600 ou 115200 (j'ai un peu tweaké le mien) [ACTION] Valider [ACTION] Uploader/Televerser le projet La sortie de la console nous indique que l'opération est un succès : Launching /usr/bin/avrdude -pm328p -carduino -P/dev/ttyUSB0 -b115200 -Uflash:w:Blink_A_LED.hex:a Output: avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e950f avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "Blink_A_LED.hex" avrdude: input file Blink_A_LED.hex auto detected as Intel Hex avrdude: writing flash (162 bytes): Writing | ################################################## | 100% 0.03s avrdude: 162 bytes of flash written avrdude: verifying flash memory against Blink_A_LED.hex: avrdude: load data flash data from input file Blink_A_LED.hex: avrdude: input file Blink_A_LED.hex auto detected as Intel Hex avrdude: input file Blink_A_LED.hex contains 162 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.02s avrdude: verifying ... avrdude: 162 bytes of flash verified avrdude done. Thank you. avrdude finished Voila. Pour resumer, nous avons installé Eclipse, le plugin CDT, le plugin AVR, ouvert la perspective C/C++, créé un projet, testé notre chaine de compilation, joué un peu avec les configurations, optimsé notre projet, et uploadé le projet… C'est dejà pas mal, non ? Pour aller plus loin Pour ceux qui veulent utiliser la librairie Arduino sous Eclipse, il y a un tuto sur le playground : http://playground.arduino.cc/Code/Eclipse Il y a aussi un Plugin Arduino carrement. Je ne l'ai pas testé… http://www.baeyens.it/eclipse/ 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=9
Extrait


OldNewDate CreatedAuthorActions
9 octobre 2014 à 13 h 24 min sebastien pelle
9 octobre 2014 à 13 h 23 min sebastien pelle
9 octobre 2014 à 13 h 20 min sebastien pelle