Beruflich Dokumente
Kultur Dokumente
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
Aperu de logiciel avec presque toutes les principales fentres ouvertes pour suivre le droulement dun programme en simulation.
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.1 WINAVR
http://sourceforge.net/projects/winavr/files/WinAVR/ Procdure dinstallation habituelle. Aucune configuration nest ncessaire.
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.
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
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.
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.
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
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
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.
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
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
PA0
R1 470
VPA0
VDD LD2
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
6 ASSEMBLAGE / COMPILATION
Le fichier de commande de lassemblage ou de la compilation (MakeFile) est automatiquement gnr daprs les options de compilation choisies.
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)
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.
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
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.)
Remarque : Si loptimisation de la compilation est trop importante, il est impossible de suivre le droulement dun programme en pas pas.
11
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
Registre dtat (Status Reg.), avec dtail des bits. Adresse 3F.
Pour modifier, une valeur, on peut lentrer directement au clavier ou utiliser le menu contextuel
VDD VSS
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.
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.
13