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 by
elf’. 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
# Le 23 avril 2007 à 19:21, par Eric P.
En réponse à : Mise en place de l’environnement
Tout est détaillé dans le fichier /avrx/readme.txt
# Le 25 avril 2007 à 16:28, par ?
En réponse à : Mise en place de l’environnement
Merci, c’est bon !!!
Répondre à ce message