Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Programmation > Apprendre à coder > Les micro-contrôleurs > Trucs et astuces > Utiliser WinAVR et MFile et AVRDUDE

Utiliser WinAVR et MFile et AVRDUDE

mardi 16 février 2010, par Julien H.

Pour programmer un microcontrôleur Atmel AVR, on doit écrire du code source sur son ordinateur et le compiler pour le transformer en un programme pour AVR, puis le transférer dans le micro-contrôleur.

Toutes ces étapes nécessitent une suite de logiciels différents (un éditeur de texte, un compilateur spécifique selon le langage choisi, et un logiciel de transfert, pour simplifier) plus tous les outils de vérification de code, d’optimisation de taille, etc...

C’est ce que permet WinAVR, une suite d’outils pour AVR basé sur des outils libres (GNU) notamment le cross-compilateur avr-gcc. Mais d’habitude, on installe tout et on se lance directement dans la programmation. Voyons cette fois tout ce qu’il y a dans WinAVR.

Liste des logiciels

Je vais présenter ci-dessous une traduction du manuel utilisateur de la version 2010-01-10 de WinAVR, disponible une fois installé dans le fichier "WinAVR-20100110/WinAVR-user-manual.html".

Outil Description
AVR GNU Binutils 2.19 outils de compilation pour AVR
AVR GNU Compiler Collection (GCC) 4.3.3 compilateur libre pour le langage C et C++ spécialisé pour AVR
avr-libc 1.6.7cvs bibliothèques de fonctions classiques, adaptées pour AVR
AVRDUDE 5.8cvs logiciel de programmation (transfert) pour AVR
AVR GNU Debugger (GDB) / Insight 6.8 débogueur en ligne de commande / interface graphique
AVaRICE 2.9 programme de debug utilisant le protocole JTAG
SimulAVR 0.9cvs simulation des AVR pour utilisation avec GDB
AVR32 GNU Binutils 2.19 idem pour AVR32 (version 32 bits)
AVR32 GNU Compiler Collection (GCC) 4.3.2 idem pour AVR32
Newlib (for AVR32) 1.16.0 idem pour AVR32
AVR32 GNU Debugger (GDB) / Insight 6.7.1 idem pour AVR32
Splint 3.1.2  ??
SRecord 1.47 outils de manipulation des mémoire EPROM
MFile générateur de makefile pour AVR
Programmers Notepad 2.0.8.718 logiciel de développement / édition de code source intégrant les outils AVR
LibUSB 0.1.12.1 bibliothèque de gestion de l’USB pour AVRDUDE et AVaRICE
Cygwin DLLs bibliothèques du projet Cygwin (unix sous windows) comme make et bash
Tofrodos 1.6 conversion des fins de ligne dans les fichiers en ligne de commande

Première compilation

Une fois installé, et si vous avez choisi les options par défaut (comme les variables système a.k.a. PATH), vous êtes capable de programmer un microcontrôleur. Il suffirait d’ouvrir une fenêtre de ligne de commande et de taper le nom des programmes (faites un essai avec "avr-gcc —version" qui vous répondra correctement).

Mais si on débute, alors il est préférable d’utiliser des outils graphiques, à commencer par l’éditeur Programmers Notepad. Il est accessible dans le menu Démarrer si vous avez laissé les options d’installation par défaut.

Une fois ouvert, vous devez créer un nouveau projet

Puis y ajouter de nouveaux fichiers. Deux sont nécessaires : un "Makefile" qui permet de décrire le projet et la compilation nécessaire : nous allons pour cela utiliser un petit outil faisant parti de WinAVR : Mfile.

Lancez MFile depuis le menu des programmes installés (là où vous avez trouvé Programmers Notepad dans le menu Démarrer / Programmes). Une fenêtre s’ouvre avec un éditeur de texte et deux menus. Le second menu propose de modifier les options : choix du MCU (microcontrôleur), options de compilation, nom du fichier.

Pour commencer il faut modifier :
 le MCU (ATtiny, ATmega selon votre matériel disponible)
 le nom du programme (main par défaut)

A noter qu’il n’y a pas de menu pour l’horloge, mais il faut bien penser à modifier la valeur (en Hz, 8000000 pour 8 MHz).

Enregistrez le fichier Makefile dans le répertoire créé pour le nouveau projet de Programmers Notepad, et créez dans ce même répertoire un fichier portant le même nom que celui spécifié dans MFile et l’extension .c (exemple : servoclock.c ou main.c si vous avez gardé la valeur par défaut).

Vous constaterez que Programmers Notepad propose par défaut dans la colonne de gauche des "Text Clips" pour différents langages / outils dont WinAVR, avec "application" et "function".

Double-cliquez sur "application" : un archétype de programme (avec include, fonction d’init et boucle main) est écrit dans votre fichier vide, vous pouvez l’enregistrer, il est totalement fonctionnel même s’il ne fait rien.

Maintenant dans le menu Tools, choisissez l’option "[WinAVR] make all", elle va lancer la suite d’instructions correspondant à la chaine complète (all = tout) dans votre Makefile auto-généré.

Vous avez désormais votre premier programme, inutile mais correctement compilé pour votre cible. Il ne reste plus qu’à le transférer.

Programmation du microcontrôleur

Prenez votre programmateur d’Atmel AVR en ISP (on en présente quelques-uns dans les articles de la même rubrique). Le makefile des projets WinAVR proposent le téléchargement par AVRDUDE, il suffit de préciser le type de programmateur (stk200, stk500, avr910, avr901, butterfly, etc.. parmi les plus connus) et le port série (même pour un programmateur USB, la plupart sont vus comme des émulations de port série COMx).

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.