Sie sind auf Seite 1von 13

VMLAB (Visual Micro LAB) + WinAVR

http://www.amctools.com/ Document en cours de rdaction

1 INTRODUCTION
VMLAB est un Environnement de Dveloppement Intgr (EDI) performant et gratuit pour C Atmel AVR ou ST62xx qui permet de : Editer un programme source en langage dassemblage ou langage C Assembler ou compiler le programme source (pour les Cs Atmel AVR, en faisant appel GNU AVR-GCC install avec WinAVR (logiciel gratuit)) Simuler le programme (approche pdagogique qui permet dobserver le droulement du programme sur les registres internes, etc. Indispensable si on ne dispose pas de maquettes) Les C Atmel AVR supports sont les suivants : Model Flash EEPROM RAM (kO) (octets) (octets) ATiny11 1 ----Atiny12 1 ----Atiny15 1 64 --Atiny22 2 128 128 AT90S2343 2 128 128 AT90S2323 2 128 128 AT90S1200 1 64 --AT90S2313 2 128 128 AT90S4433 4 256 128 AT90S4414 4 256 256 AT90S8515 8 512 512 AT90S8515_64K 8 512 512 AT90S4434 4 256 256 AT90S8535 8 512 512 Atmega48 4 256 512 Atmega8 8 512 1024 ATmega8515 ATmega8515_64 ATmega8535 8 512 512 ATmega88 8 512 1024 ATmega16 16 512 1024 ATmega168 16 512 1024 ATmega161 16 512 1024 ATmega161_64K 16 512 1024 ATmega162 16 512 1024 ATmega32 32 1024 2048 ATmega64 64 2048 4096 ATmega128 128 4096 4096 ATmega128_64K 128 4096 4096 Linterface est trs pdagogique. Il est possible de visualiser les sorties sous forme de chronogrammes, de dclarer des LEDs connectes sur des sorties et de visualiser les tats de ces LEDs, etc. On dispose de plusieurs stimuli pour les entres.

I/ O 6 6 6 6 4 3 15 15 20 32 32 16 32 32 23 23

A partir du fichier .hex gnr, il est possible de programmer un C cible avec un programmateur ou en passant par une liaison srie, avec un chargeur dj implant en mmoire du C.

32 23 32 23 32 24 32 32 48 48 40

Philippe Morenton / VMLAB

Aperu de logiciel avec presque toutes les principales fentres ouvertes pour suivre le droulement dun programme en simulation.

LED D1 Programme source

Visualisation PD0 du C

LED D1 + R en srie entre VDD et PD0 Visualisation PD0 du C

Des composants peuvent tre rajouts autour du C. Ils doivent tre dcrits sous forme de texte et placs dans le fichier du projet. Parmi les composants disponibles, on trouve : Rsistance, condensateur, LED (tat visualis dans le panneau de contrle), interrupteur (actionn dans le panneau de contrle), amplificateur, etc. Pour une application pdagogique dans le cadre de TDs de courtes dures, la description des composants peut tre donne toute faite dans un fichier et il suffit lutilisateur de raliser un copier / coller.

2 INSTALLATION & CONFIGURATION


Il faut dabord installer WinAVR (prononcer whenever)

2.1 WINAVR
http://sourceforge.net/projects/winavr/files/WinAVR/ Procdure dinstallation habituelle. Aucune configuration nest ncessaire.

Philippe Morenton / VMLAB

Aprs installation, la page Dossier_dinstallation\WinAVR-usermanual.html souvre. De nombreux dossiers sont crs lors de linstallation. Un dossier doc contient la documentation, principalement au format html. La page de dpart est index.html. La documentation est accessible avec Dmarrer / Tous les programmes / WinAVR User Manuel & avr-libc Manual [WinAVR].

2.2 VMLAB
Procdure dinstallation habituelle. Contrairement ce qui est crit dans certaines documentations, VMLAB accepte les noms longs pour les fichiers et les chemins daccs. Il ne faut pas utiliser de caractres spciaux dans les noms (ex : &). Aprs installation, il faut configurer VMLAB. Il faut notamment indiquer le dossier dinstallation du compilateur WinAVR.

Philippe Morenton / VMLAB

A entrer manuellement selon installation. Attention ne pas faire derreurs.

2 fichiers fournis templa33.mak et templa34.mak. Certainement en relation avec les versions dAVR-GCC 3.3 et 3.4. Actuellement version 4.3.3

AVR-GCC supporte les noms longs

Aide de VMLAB : Aide trs complte. Pas daide contextuelle cependant. Laide ne fonctionne pas avec Windows Vista. Exemples livrs avec VMLAB pour C AVR : C:\<installation dir>\AVR_DEMO : plusieurs projets en langage dassemblage pour assembleur Atmel. (oscil.prj : ralisation dun astable avec le C + RC) C:\<installation dir>\WinAVR : plusieurs projets en langage C pour WinAVR.

3 PROJET / GESTION DE PROJET


VMLAB travaille en projets. 1 projet = tous les fichiers utiles pour obtenir le fichier objet pour la programmation du C. La premire chose faire est de crer un projet ou douvrir un projet existant. Un fichier .prj contient toutes les informations utiles pour le projet.

3.1 CREATION DUN PROJET

Philippe Morenton / VMLAB

Valider Dsigner le nom du projet et son dossier. Dans cet exemple : prem_prog_mavin Choix du C cible + options pour fichiers automatiquement gnrs

a Nommer le fichier source principal sil nexiste pas encore. Extension .c pour langage C, .s pour langage dassemblage. Ajouter ensuite. b Choisir le fichier source principal sil existe dj.

Choix de la chaine de dveloppement Nom propos par dfaut Dfini une seule fois (pas ncessairement comme sur cet exemple). Ne plus changer ensuite. Dans cet exemple, le C cible est un ATmega64 et la chaine de compilation est GCC / WinAVR

Aprs la cration, les caractristiques du projet ne peuvent plus tre modifies par une boite de dialogue.

3.2 CONSTITUTION DU FICHIER PROJET

Fichier projet dextension prj automatiquement gnr lors de la cration du projet

Lignes automatiquement gnres lors de la cration du projet

Le chemin daccs du compilateur est intgr au projet. (Ce nest pas ncessairement celui de cet exemple). Ne pas modifier le nom automatiquement gnr. Voir le dplacement de projet Option lors de la cration du projet

Si la valeur automatiquement gnre ne convient pas, entrer la bonne valeur

Dure de mmorisation des signaux = dure max trace dans oscilloscope

Ouverture dun projet Remarque : Si un projet a t ferm alors quil ntait pas finalis et quil comporte de lignes incompltes, un message derreur apparat louverture et le fichier source ne souvre pas.
Philippe Morenton / VMLAB 5

Description incomplte (manque valeur) erreur dtecte louverture du projet

Le fichier source, pourtant existant, nest pas ouvert.

3.3 DEPLACEMENT / COPIE / MODIFICATION DE PROJET


Opration Modification effectuer Dplacement de tout le dossier projet sur le Aucune mme ordinateur Copie de tout le dossier projet sur un autre Modification la ligne .GCCPATH du fichier projet si le compilateur na pas les mmes ordinateur chemins daccs pour les dossiers dinstallation sur les 2 ordinateurs Modification de projet (ex : changement du Modification la ou les lignes concernes dans C cible) le fichier projet Enregistrement du projet sous un autre nom Voir ci-dessous pour modification partielle Pour enregistrer le fichier projet sous un autre nom, il faut activer la fentre du fichier projet, puis faire File / Save as La bote de dialogue Enregistrer sous souvre. Dans le champ Nom du fichier : , il faut donner le nouveau nom de fichier, avec lextension prj (elle nest pas ajoute automatiquement). Aprs avoir valid, un message indique que le fichier est cr et que le fichier en cours reste ouvert. Si on veut copier le fichier source sous un autre nom, il faut procder de mme, en noubliant pas de donner lextension du nouveau fichier source (c ou asm). Il faut ensuite ouvrir le fichier projet, modifier manuellement le nom du nouveau fichier source .c et du nouveau fichier cible .hex, enregistrer le fichier projet, le fermer et le rouvrir.

Philippe Morenton / VMLAB

4 ECRITURE DU FICHIER SOURCE 4.1 LANGAGE DASSEMBLAGE WINAVR


Le fichier automatiquement gnr lors de la cration du programme contient des lignes inutiles Voir mon doc sur WinAVR. En cours de rdaction

4.2 LANGAGE C WinAVR

Fichiers en-tte les plus frquemment utiliss. Automatiquement placs lors de la cration du projet. Remarque : signal.h est obsolte. A supprimer pour les nouveaux projets. interrupt.h suffit Fichiers en-tte placs par lutilisateur. Ici pour pouvoir utiliser des temporisations Le compilateur utilis est WinAVR. Cest un compilateur C qui supporte les normes C89 C99 (pas toutes les possibilits) Voir options de compilation. Le compilateur na pas de syntaxe particulire pour laccs direct un bit, etc. La principale particularit concerne les interruptions. Voir ci-dessous.

Nom de registre conforme la doc constructeur. Dfini avec io.h

Programme de traitement dinterruption (Interrupt Service Routine, ISR) Il faut placer en dbut de fichier : #include <avr\interrupt.h> Ensuite : ISR(TIMER0_COMP_vect){ PORTG^=0b00001000; // Exemple. } TIMER0_COMP est la dsignation de la doc. du C. Un _ est rajout entre les mots. _vect doit tre ajout en fin.

Principaux fichiers en-tte : <avr\io.h> (ou <avr/io.h>, les 2 critures sont possibles) : indispensable. Contient la dfinition des registres, etc. <avr/interrupt.h> : pour les interruptions <util/delay.h> : pour les temporisations. Inclusion faire prcder de : #define F_CPU 8000000UL//Frq. quartz (ex.) 2 fonctions fournies : _delay_us(Valeur) ; _delay_ms(Valeur) ; // les noms sont explicites Ecriture dune valeur en binaire : 0b00110111

Philippe Morenton / VMLAB

5 AJOUT DE COMPOSANTS EXTERNES AU C, PREPARATION A LA SIMULATION


Le fichier du projet utilise une syntaxe du type SPICE pour dcrire des directives ou les composants placs autour du C. Une directive commence par un point (exemple: .PLOT V(n1) ) Un composant commence par une lettre (exemple: R1 n1 n2 1K ) Un commentaire commence par un ;

5.1 AJOUT DE COMPOSANTS EXTERNES


Lajout de composants externes se fait sous forme de description texte dans le fichier projet .prj. 3 types de composants apparaissent dans le panneau de contrle ds la cration dun projet : LED Bouton poussoir (Key) Potentiomtre (slider) On peut en ajouter dautres dont certains apparaissent dans le panneau de contrle (LCD module, TTY).

Composants qui apparaissent dans le panneau de contrle

Ligne automatiquement gnre. Il faut remplacer x et les nuds VDD et node par les valeurs souhaites

Syntaxe pour les composants : Composants du panneau de contrle Composant LED Bouton poussoir Repre Dx Kx Syntaxe description VDD Noeud_Cathode node1 node2 [type(delay)] Commentaire x : 1 8 / Lanode doit ncessairement tre connecte VDD. Voir ci-dessous. x : 0 F / type : NORMAL (par dfaut) LATCHED (bistable) MONOSTABLE(delay). Dans ce dernier cas, il faut spcifier la dure (delay)
8

Philippe Morenton / VMLAB

Potentiomtre (slider) Pour le slider, voir lexemple 3phase.prj Exemple


VDD LD1

Transformation ncessaire Non

Syntaxe D1 VDD N_1 R1 N_1 PA0 470

PA0

R1 470

VPA0

VDD LD2
R2 680

X2 ND2 PB0 PB0 N_2 D2 VDD N_3 R2 N_2 N_3 680


R2 680

PB0

C
LD2 VPB0

PB0

X2

&
VPB0

Il est impossible de connecter une LED comme sur le 1er schma car lanode doit ncessairement tre connecte VDD

Syntaxe pour les E/S PA0 pour la broche 0 du port A.

6 ASSEMBLAGE / COMPILATION
Le fichier de commande de lassemblage ou de la compilation (MakeFile) est automatiquement gnr daprs les options de compilation choisies.

6.1 OPTIONS DE COMPILATION

Philippe Morenton / VMLAB

Laisser toutes les options par dfaut, sauf loptimisation.

Pour simulation en pas pas : pas doptimisation. Utilisation de temporisation : niveau 1 min. Pour simulation continue ou programmation du C cible : optimisation niveau 2 ou pour la taille du code objet.

Standard GNU99 = C99, volution de lANSI C, agrment dextensions propres GCC. Toutes les possibilits du C99 ne sont cependant pas supportes (http://gcc.gnu.org/gcc4.3/c99status.html)

6.2 LANCEMENT DE LA COMPILATION

La compilation se droule. Une boite de dialogue montre les diffrentes tapes et la progression. Le visualiseur de message mmorise toutes les informations.

Dtail des oprations de compilation. Il est possible de dvelopper ou rduire certaines parties

Si la compilation sest bien droule, un message lindique. Sinon les erreurs sont rapportes et il faut les corriger.

7 SIMULATION 7.1 VUE DENSEMBLE

Philippe Morenton / VMLAB

10

Si loptimisation de la compilation est trop importante, il est impossible de suivre le droulement dun programme en pas pas. Sans licence, la simulation est trs fortement ralentie dans les cas suivants : Taille du code objet > 4Koctets Taille du code objet > la moiti de la taille de la mmoire programme Plus de 4 fichiers ouverts

Go / Continue : Simulation continue : le programme sexcute une vitesse qui dpend du PC (plus lentement que sur le C cible). Vitesse ralentie avec Code anim

Simulation pas pas. Un pas = une instruction ou une fonction en entier Simulation pas pas lintrieur des fonctions

Pour sortir dune fonction Arrt Fin simulation sans effacement RAM Fin simulation avec effacement RAM

Commandes de simulation

Code anim. Vitesse par Options / Display Control

Contenu de chaque registre modifiable par double clic ou avec menu contextuel Point darrt pour simulation continue Dautres composants inteInteractions avec le proractifs peuvent tre ajouts : gramme, si composants dfinis LCD, terminal TTY dans le fichier du projet

Visualisation dune tension si dclaration avec .PLOT dans le fichier du projet Exportation vers un fichier au format standard csv (tableur, etc.)

Dure depuis le dbut de la simulation

Remarque : Si loptimisation de la compilation est trop importante, il est impossible de suivre le droulement dun programme en pas pas.

7.2 FENETRE REGISTRES

Philippe Morenton / VMLAB

11

Etat de la fentre avant le dbut de la simulation

Compteur Programme = pointeur dinstruction Pointeur de pile (Stack Pointer). 2 octets. Ad 3E 3D (5E 5D)

Registres dusage gnral (transferts, calculs avec lALU), dont 6 peuvent tre utiliss pour ladressage indirect (R26 R31)

Etat de la fentre aprs excution de quelques instructions La taille de la barre jaune est proportionnelle au nb de bits 1

Registres pour ladressage indirect

Registre dtat (Status Reg.), avec dtail des bits. Adresse 3F.

Le Compteur Programme ne peut pas tre modifi

Pour modifier, une valeur, on peut lentrer directement au clavier ou utiliser le menu contextuel

7.3 FENETRE SCOPE


Niveau de pile. Voir ci-dessous. Visible si .TRACE dans fichier projet

Echelles horizontale (temps en s) et verticale (tension en V)

VDD VSS

Droulement du programme (normal, interruption). Voir ci-dessous.

Visible car .PLOT V(PG3) dans fichier projet

Fentre watch Debug inspector : double clic sur une variable aprs une compilation russie et une excution en pas pas ou continue aprs point darrt. Pb : pointeur non mis jour. Aprs ouverture des 2 fentres : mise jour.

Philippe Morenton / VMLAB

12

8 BUGS
La sortie OC3C (PE5) ne dlivre pas un signal correct en mode MLI (visualisation incorrecte sur loscilloscope et sur LED dans panneau de contrle). La sortie OC3B (PE4) fonctionne correctement. Les variables ne sont mises jour que lorsque le simulateur excute du code en correspondance avec le programme. Avec une optimisation, il est impossible de mettre en correspondance certaines parties du code objet avec le programme source certaines variables ne sont jamais mises jour dans la fentre dobservation.

Philippe Morenton / VMLAB

13

Das könnte Ihnen auch gefallen