Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Programmation > Apprendre à coder > Les micro-contrôleurs > RTOS sur AVR > AvrX > Mise en place de l’environnement

Mise en place de l’environnement

dimanche 10 décembre 2006, par Eric P.

Installation

Elle se borne à décompresser l’archive téléchargée à l’endroit de votre choix. En ce qui me concerne, je l’ai mis comme sous-répertoire de mon WinAVR (soit C:\WinAVR\AvrX2.6f), mais ce n’est en rien obligatoire.

Il faut ensuite déclarer une variable d’environnement nommée AVRX (original non ?) qui va pointer sur le répertoire home de AvrX, c’est à dire celui qui contient les sources. Sur mon système, c’est C:\WinAVR\AvrX2.6f\avrx.

Il est dit que cette variable est utilisée dans les makefile fournis pour construire la librairie et les exemples, mais en fait c’est faux, bien que ça devrait l’être. Nous allons voir comment y remédier.

Compilation de la librairie

Ce qui suit décrit le mode opératoire pour une utilisation d’AvrX avec WinAVR. Si vous utilisez ICCAVR, il vous faudra vous débrouiller tout seul, et travailler avec le fichier makefile.old.iar. L’auteur d’AvrX lui-même n’utilise plus ICCAVR visiblement (cf le nom du makefile), et précise à plusieurs endroits que les utilisateurs d’ICCAVR doivent se débrouiller tout seuls.

Pour pouvoir utiliser AvrX dans vos applications, le plus simple est de compiler la librairie, ce qui produira le fichier avrx.a que vous pourrez ensuite linker directement avec votre code.

Allez dans le répertoire pointé par la variable d’environnement AVRX créée précédemment, et éditez le fichier makefile qui s’y trouve. Depuis les versions récentes d’AvrX, il est au format des makefiles de WinAVR. Si vous êtes coutumiers de cet environnement, vous y retrouverez vite vos petits. On va y juste y spécifier le type de processeur cible en modifiant la variable MCU.

Lancer le make ensuite, ce qui se terminera par la création d’un fichier avrx.a dans le même répertoire que les sources. Vous pouvez le laisser là à priori, on pointera ensuite dessus dans les makefiles des applications.

Le matériel

Les essais présentés dans cette série d’articles ont été effectués sur la platine MR163 de Microbot, disponible chez
Lextronic. Il n’y a rien de spécifique à ce matériel, et toute autre solution, y compris montage volant sur plaquette d’expérimentation, conviendra parfaitement.

Ne perdez cependant pas de vue qu’utiliser AvrX (ou tout autre noyau multi-tâche de ce genre) nécessite un minimum de mémoire, aussi bien flash que RAM. Vous risquez donc d’être rapidement limités sur des modèles comme le Tiny23. Visez donc un ATmega8 comme modèle de départ. De plus, celui-ci inclut une panoplie de devices intéressante pour un prix et un encombrement raisonnables (allez faire un tour dans la rubrique Micro-contrôleurs sans ta mère pour en savoir plus sur l’ATmega8).

Joujou avec les samples

Il y en a plusieurs, illustrant l’utilisation des timers et des différents types de messages, et utilisant tous plusieurs tâches. Ils sont regroupés dans le sous-répertoire Examples.

Il faut au préalable adapter le makefile à votre cible et à votre outillage, mais également y corriger quelques petits détails.

Tout d’abord on modifie la variable MCU comme d’habitude pour correspondre au type de µC cible. Se reporter à la documentation de WinAVR pour tous les détails.

Même chose pour la fréquence d’horloge, mais qui s’appelle CPUCLK ici au lieu de F_CPU comme d’habitude. De même, il faut ajouter le "L" en fin de valeur contrairement au makefile de WinAVR. Je suppose que ce makefile a été développé avec une version ancienne de WinAVR. Il serait judicieux de le mettre à niveau pour être compatible avec ce qui est inclus dans WinAVR, mais je vous laisse le soin de le faire. Cela ne présente aucune difficulté.

La modification annoncée dans l’introduction concerne les variables ASRC et GCCLIB, et seront utiles si vous utilisez ensuite ce makefile comme modèle pour vos applications, comme suggéré à juste titre dans la documentation en ligne. Telles qu’elles sont définies, elles pointent en relatif sur les répertoires contenant les sources et la librairie avrx.a que nous avons compilée précédemment. Il faut donc les modifier comme suit :

de telle sorte qu’elles exploitent la variable d’environnement créée lors de l’installation, et qui sinon ne sert à rien.

Suivent ensuite les modifications adéquates des options d’avrdude pour correspondre à votre programmateur.

Et c’est fini.

Pour simplifier la démo (qui met en oeuvre également la liaison série), éditez le source Timers.c et mettez en commentaire les lignes suivantes :

(ces trois lignes sont à des endroits différents du source)

Utilisez la commande make TARGET=Timers pour générer le binaire de l’exemple des timers. Connectez quelques LEDS sur le port B, ou bien modifiez le fichier hardware.h avant compilation pour correspondre à votre montage. Connectez le programmateur, puis lancez la commande make program.

Voilà, vous devriez voir clignoter vos LEDs, et exulter de joie comme d’habitude,.... et générer quelques hochements de tête navrés autour de vous, comme d’habitude aussi (nous sommes de grands incompris).

On examinera plus en détail cet exemple dans un autre article.

Vos commentaires

  • Le 20 juin 2007 à 18:09, par JARROUSSE Steven En réponse à : Mise en place de l’environnement

    bonjour,

    j’ai un probleme avec AVRX. j’ai bien généré la librairie. ensuite j’ai effectué les modifications du "makefile" pour le timers et lorsque je le compile, il ne veut pas me faire le timers.elf

    make.exe : *** No rule to make target Timers.elf', needed byelf’. Stop.

    si je ne mets pas

    ASRC = $(AVRX)/serialio.S

    GCCLIB = $(AVRX)/avrx.a

    alors il me met un message d’erreur :

    ../avrx/serialio.S:248 : Error : constant value required
    ../avrx/serialio.S:248 : Error : number must be less than 64

    merci.

    • Le 20 juin 2007 à 18:40, par ? En réponse à : Mise en place de l’environnement

      Le mieux serait de m’envoyer le makefile (à eric at pobot dot org) pour que je le vérifie. Ce joujou est assez sensible à des choses nous paraissant insignifiantes, comme les tabulations par exemple.

      Or le message "no rule to make ..." est symptomatique de ce type de problème.

    • Le 21 juin 2007 à 14:55, par ? En réponse à : Mise en place de l’environnement

      je vous ai envoyer le fichier "makefile"à l’adresse indiquée. dans l’attente d’une réponse rapide merci d’avance.

      steven JARROUSSE ;

    • Le 22 juin 2007 à 10:21, par ? En réponse à : Mise en place de l’environnement

      Je l’ai bien reçu.

      Pour la réponse "rapide", on fera ce qu’on peut....

    • Le 22 juin 2007 à 10:28, par ? En réponse à : Mise en place de l’environnement

      ^^
      escuse mon impatience

      entre temps, j’ai essayé les testcase mais le simulateur me dit : AVR Simulator : Excessive stack overflow, stop sim

      et lorsque je le charge dans l’ATmega16 3 led s’allume et.... ben rien d’autre ;)

    Répondre à ce message

  • Le 23 avril 2007 à 14:44, par philtri En réponse à : Mise en place de l’environnement

    Bonjour, j’ai un problème avec AVRX : quelle est la procédure pour lancer le makefile qui permet de générer la librairie ?
    Merci

    Répondre à ce message

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.