Outils pour utilisateurs

Outils du site


tuto_utilisation_de_eclipse_cdt_avr

====== [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 ((cf. Tuto précédent [[tuto_installation_de_eclipse|[TUTO] Installation de Eclipse]])). ---- ===== 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 : <code> 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 </code> 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 ----

tuto_utilisation_de_eclipse_cdt_avr.txt · Dernière modification: 2013/10/31 12:01 par spelle