VMLAB (Visual Micro LAB) + WinAVR
Transcription
VMLAB (Visual Micro LAB) + WinAVR
VMLAB (Visual Micro LAB) + WinAVR http://www.amctools.com/ Document en cours de rédaction 1 INTRODUCTION VMLAB est un Environnement de Développement Intégré (EDI) performant et gratuit pour µC Atmel AVR ou ST62xx qui permet de : Editer un programme source en langage d’assemblage ou langage C Assembler ou compiler le programme source (pour les µCs Atmel AVR, en faisant appel à AVRGCC installé avec WinAVR (logiciel gratuit)) Simuler le programme (approche pédagogique qui permet d’observer le déroulement du programme sur les registres internes, etc. Indispensable si on ne dispose pas de maquettes) Les µC Atmel AVR supportés 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 Philippe Morenton / VMLAB I/O 6 6 6 6 4 3 15 15 20 32 32 16 32 32 23 23 L’interface est très pédagogique. Il est possible de visualiser les sorties sous forme de chronogrammes, de déclarer des LEDs connectées sur des sorties et de visualiser les états de ces LEDs, etc. On dispose de plusieurs stimuli pour les entrées. A partir du fichier .hex généré, il est possible de programmer un µC cible avec un programmateur ou en passant par une liaison série, avec un chargeur déjà implanté en mémoire du µC. 32 23 32 23 32 24 32 32 48 48 40 1 Aperçu de logiciel avec presque toutes les principales fenêtres ouvertes pour suivre le déroulement d’un programme en simulation. LED D1 Programme source Visualisation PD0 du µC LED D1 + R en série entre VDD et PD0 Visualisation PD0 du µC Des composants peuvent être rajoutés autour du µC. Ils doivent être décrits sous forme de texte et placés dans le fichier du projet. Parmi les composants disponibles, on trouve : Résistance, condensateur, LED (état visualisé dans le panneau de contrôle), interrupteur (actionné dans le panneau de contrôle), amplificateur, etc. Pour une application pédagogique dans le cadre de TDs de courtes durées, la description des composants peut être donnée toute faite dans un fichier et il suffit à l’utilisateur de réaliser un copier / coller. 2 INSTALLATION & CONFIGURATION Il faut d’abord installer WinAVR (prononcer whenever) 2.1 WINAVR http://sourceforge.net/projects/winavr/files/WinAVR/ Procédure d’installation habituelle. Aucune configuration n’est nécessaire. Philippe Morenton / VMLAB 2 Après installation, la page Dossier_d’installation\WinAVRuser-manual.html s’ouvre. De nombreux dossiers sont créés lors de l’installation. Un dossier doc contient la documentation, principalement au format html. La page de départ est index.html. La documentation est accessible avec Démarrer / Tous les programmes / … WinAVR User Manuel & avr-libc Manual [WinAVR]. 2.2 VMLAB Procédure d’installation habituelle. Contrairement à ce qui est écrit dans certaines documentations, VMLAB accepte les noms longs pour les fichiers et les chemins d’accès. Il ne faut pas utiliser de caractères spéciaux dans les noms (ex : &). Après installation, il faut configurer VMLAB. Il faut notamment indiquer le dossier d’installation du compilateur WinAVR. Philippe Morenton / VMLAB 3 A entrer manuellement selon installation. Attention à ne pas faire d’erreurs. 2 fichiers fournis templa33.mak et templa34.mak. Certainement en relation avec les versions d’AVR-GCC 3.3 et 3.4. Actuellement version 4.3.3 AVR-GCC supporte les noms longs Aide de VMLAB : Aide très complète. Pas d’aide contextuelle cependant. L’aide ne fonctionne pas avec Windows Vista ou Windows 7. Il faut installer un module complémentaire. http://support.microsoft.com/kb/917607 Il faut d’abord télécharger GenuineCheck.exe puis l’exécuter pour pouvoir accéder au téléchargement du fichier d’installation Windows6.1-KB917607-x64.msu du module complémentaire. Exemples livrés avec VMLAB pour µC AVR : C:\<installation dir>\AVR_DEMO : plusieurs projets en langage d’assemblage pour assembleur Atmel. (oscil.prj : réalisation d’un 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 première chose à faire est de créer un projet ou d’ouvrir un projet existant. Un fichier .prj contient toutes les informations utiles pour le projet. Philippe Morenton / VMLAB 4 3.1 CREATION D’UN PROJET Valider Désigner le nom du projet et son dossier. Dans cet exemple : prem_prog_mavin Choix du µC cible + options pour fichiers automatiquement générés a Nommer le fichier source principal s’il n’existe pas encore. Extension .c pour langage C, .s pour langage d’assemblage. Ajouter ensuite. b Choisir le fichier source principal s’il existe déjà. Choix de la chaine de développement Nom proposé par défaut Défini une seule fois (pas nécessairement 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 Après la création, les caractéristiques du projet ne peuvent plus être modifiées par une boite de dialogue. 3.2 CONSTITUTION DU FICHIER PROJET Fichier projet d’extension prj automatiquement généré lors de la création du projet Lignes automatiquement générées lors de la création du projet Si la valeur automatiquement générée ne convient pas, entrer la bonne valeur Le chemin d’accès du compilateur est intégré au projet. (Ce n’est pas nécessairement celui de cet exemple). Ne pas modifier le nom automatiquement généré. Voir le § déplacement de projet Option lors de la création du projet Durée de mémorisation des signaux = durée max trace dans oscilloscope Philippe Morenton / VMLAB 5 3.3 OUVERTURE D’UN PROJET Dans la boite de dialogue qui s’ouvre choisir le fichier projet d’extension prj Un projet ne s’ouvre jamais avec la commande File / Open La commande File / Open est réservée à l’ouverture d’un fichier d’un projet. Remarque : Si un projet a été fermé alors qu’il n’était pas finalisé et qu’il comporte des lignes incomplètes, un message d’erreur apparaît à l’ouverture et le fichier source ne s’ouvre pas. Description incomplète (manque valeur) erreur détectée à l’ouverture du projet Le fichier source, pourtant existant, n’est pas ouvert. 3.4 DEPLACEMENT / COPIE / MODIFICATION DE PROJET Opération Modification à effectuer Déplacement de tout le dossier projet Aucune sur le même ordinateur Copie de tout le dossier projet sur un Modification la ligne .GCCPATH du fichier projet si le compiautre ordinateur lateur n’a pas les mêmes chemins d’accès pour les dossiers d’installation sur les 2 ordinateurs. Pour les positions des fenêtres dans VMLAB, voir ci-dessous Modification de projet (ex : change- Modification la ou les lignes concernées dans le fichier proment du µC cible) jet Enregistrement du projet sous un Voir ci-dessous autre nom pour modification partielle Philippe Morenton / VMLAB 6 Pour enregistrer le fichier projet sous un autre nom, il faut activer la fenêtre du fichier projet, puis faire File / Save as … La boîte de dialogue « Enregistrer sous » s’ouvre. Dans le champ « Nom du fichier : », il faut donner le nouveau nom de fichier, avec l’extension prj (elle n’est pas ajoutée automatiquement). Après 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 procéder de même, en n’oubliant pas de donner l’extension 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. Ouverture d’un projet sur un autre ordinateur A chaque ouverture d’un projet, le fichier NomProjet.ly1 est utilisé pour la disposition des fenêtres dans VMLAB. Si ce fichier n’existait pas, il est automatiquement créé sans intervention de l’utilisateur. Ce fichier est dans le dossier du projet. Ce fichier contient entre autres les fenêtres ouvertes dans VMLAB et leurs positions. Lorsqu’on ouvre un projet sur un autre ordinateur que celui qui a servi à le créer, les positions des fenêtres sont fixées avec le fichier .ly1 s’il a été copié avec les fichiers principaux du projet (.prj et .c ou .s). Si les tailles des écrans des deux ordinateurs ne sont pas identiques, les fenêtres ne seront pas affichées de la même façon. Si l’ordinateur utilisé pour la création a une taille écran plus grande que l’ordinateur utilisé pour l’ouverture du projet, certaines fenêtres ne sont pas affichées et il faut utiliser les barres de défilement de VMLAB pour les faire apparaitre. 4 ECRITURE DU FICHIER SOURCE 4.1 LANGAGE D’ASSEMBLAGE WINAVR Le fichier automatiquement généré lors de la création du programme contient des lignes inutiles Voir mon doc sur WinAVR. En cours de rédaction Philippe Morenton / VMLAB 7 4.2 LANGAGE C WinAVR Fichiers en-tête les plus fréquemment utilisés. Automatiquement placés lors de la création du projet. Remarque : signal.h est obsolète. A supprimer pour les nouveaux projets. interrupt.h suffit Fichiers en-tête placés par l’utilisateur. Ici pour pouvoir utiliser des temporisations Le compilateur utilisé est WinAVR. C’est un compilateur C qui supporte les normes C89 à C99 (pas toutes les possibilités) Voir options de compilation. Le compilateur n’a pas de syntaxe particulière pour l’accès direct à un bit, etc. La principale particularité concerne les interruptions. Voir ci-dessous. Nom de registre conforme à la doc constructeur. Défini avec io.h Programme de traitement d’interruption (Interrupt Service Routine, ISR) Il faut placer en début de fichier : #include <avr\interrupt.h> Ensuite : ISR(TIMER0_COMP_vect){ PORTG^=0b00001000; // Exemple. } TIMER0_COMP est la désignation de la doc. du µC. Un _ est rajouté entre les mots. _vect doit être ajouté en fin. Principaux fichiers en-tête : <avr\io.h> (ou <avr/io.h>, les 2 écritures sont possibles) : indispensable. Contient la définition des registres, etc. <avr/interrupt.h> : pour les interruptions <util/delay.h> : pour les temporisations. Inclusion à faire précéder de : #define F_CPU 8000000UL//Fréq. quartz (ex.) 2 fonctions fournies : _delay_us(Valeur) ; _delay_ms(Valeur) ; // les noms sont explicites Ecriture d’une valeur en binaire : 0b00110111 5 AJOUT DE COMPOSANTS EXTERNES AU µC, PREPARATION A LA SIMULATION Le fichier du projet utilise une syntaxe du type SPICE pour décrire des directives ou les composants placés 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 ; Philippe Morenton / VMLAB 8 5.1 AJOUT DE COMPOSANTS EXTERNES L’ajout de composants externes se fait sous forme de description texte dans le fichier projet .prj. 3 types de composants apparaissent dans le panneau de contrôle dès la création d’un projet : LED Bouton poussoir (Key) Potentiomètre (slider) On peut en ajouter d’autres dont certains apparaissent dans le panneau de contrôle (LCD module, TTY). Composants qui apparaissent dans le panneau de contrôle Ligne automatiquement générée. Il faut remplacer x et les nœuds VDD et node par les valeurs souhaitées Syntaxe pour les composants : Composants du panneau de contrôle Composant Repère LED Dx Syntaxe description Commentaire VDD Noeud_Cathode Bouton poussoir node1 node2 [type(delay)] x : 1 à 8 / L’anode doit nécessairement être connectée à VDD. Voir ci-dessous. x : 0 à F / type : NORMAL (par défaut) LATCHED (bistable) MONOSTABLE (delay). Dans ce dernier cas, il faut spécifier la durée (delay) Kx Potentiomètre (slider) Pour le slider, voir l’exemple 3phase.prj Philippe Morenton / VMLAB 9 Exemple Transformation nécessaire Non VDD Syntaxe D1 VDD N_1 R1 N_1 PA0 470 LD1 µC PA0 R1 470 VPA0 X2 ND2 PB0 PB0 N_2 D2 VDD N_3 R2 N_2 N_3 680 VDD LD2 µC PB0 R2 680 µC X2 PB0 & LD2 VPB0 VPB0 Non VDD R2 680 Il est impossible de connecter une LED comme sur le 1er schéma car l’anode doit nécessairement être connectée à VDD K1 VDD PD6 LATCHED R1 PD6 VSS 10K K1 µC PD6 R1 10K Syntaxe pour les E/S PA0 pour la broche 0 du port A. 6 ASSEMBLAGE / COMPILATION Le fichier de commande de l’assemblage ou de la compilation (MakeFile) est automatiquement généré d’après les options de compilation choisies. Ce fichier s’appelle __auto.mak ; il est rangé dans le dossier du projet. Sa génération s’appuie sur le fichier templa33.mak ou templa34.mak fourni avec VMLAB. Voir l’installation et la configuration de VMLAB. Philippe Morenton / VMLAB 10 6.1 OPTIONS DE COMPILATION Laisser toutes les options par défaut, sauf l’optimisation. Pour simulation en pas à pas : pas d’optimisation. 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 l’ANSI C, agrémenté d’extensions propres à GCC. Toutes les possibilités du C99 ne sont cependant pas supportées (http://gcc.gnu.org/gcc-4.3/c99status.html) 6.2 LANCEMENT DE LA COMPILATION La compilation se déroule. Une boite de dialogue montre les différentes étapes et la progression. Le visualiseur de message mémorise toutes les informations. Détail des opérations de compilation. Il est possible de développer ou réduire certaines parties Si la compilation s’est bien déroulée, un message l’indique. Sinon les erreurs sont rapportées et il faut les corriger. Philippe Morenton / VMLAB 11 7 SIMULATION 7.1 VUE D’ENSEMBLE Si l’optimisation de la compilation est trop importante, il est impossible de suivre le déroulement d’un programme en pas à pas. Sans licence, la simulation est très fortement ralentie dans les cas suivants : Taille du code objet > 4Koctets Taille du code objet > la moitié de la taille de la mémoire programme Plus de 4 fichiers ouverts Go / Continue : Simulation continue : le programme s’exécute à une vitesse qui dépend 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 à l’intérieur des fonctions Pour sortir d’une fonction Arrêt 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 d’arrêt pour simulation continue D’autres composants interactifs peuvent être ajoutés : LCD, terminal TTY Interactions avec le programme, si composants définis dans le fichier du projet Visualisation d’une tension si déclaration avec .PLOT dans le fichier du projet Exportation vers un fichier au format standard csv (tableur, etc.) Durée depuis le début de la simulation Remarque : Si l’optimisation de la compilation est trop importante, il est impossible de suivre le déroulement d’un programme en pas à pas. Philippe Morenton / VMLAB 12 7.2 FENETRE REGISTRES Etat de la fenêtre avant le début de la simulation Compteur Programme = pointeur d’instruction Registres d’usage général (transferts, calculs avec l’ALU), dont 6 peuvent être utilisés pour l’adressage indirect (R26 à R31) Etat de la fenêtre après exécution de quelques instructions Registres pour l’adressage indirect Registre d’état (Status Reg.), avec détail des bits. Adresse 3F. Pointeur de pile (Stack Pointer). 2 octets. Ad 3E 3D (5E – 5D) Le Compteur Programme ne peut pas être modifié La taille de la barre jaune est proportionnelle au nb de bits à1 Pour modifier, une valeur, on peut l’entrer directement au clavier ou utiliser le menu contextuel 7.3 FENETRE PORT Ouverture de la fenêtre avec View / I/O Ports Bit 7 Bit 0 Contenus des 3 registres associés à chaque port Broche configurée en entrée (Input) avec résistance de rappel interne (Pull up) Broche configurée en sortie (Output) Broche configurée en entrée (Input) Philippe Morenton / VMLAB 13 7.4 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 Déroulement du programme (normal, interruption). Voir ci-dessous. VSS Visible car .PLOT V(PG3) dans fichier projet 7.5 FENETRE WATCH Ouverture du menu contextuel (clic droit) avec pointeur dans la zone inférieure de la fenêtre Sélection des variables à observer. Ici, une seule locale à la fonction main Debug inspector : double clic sur une variable après une compilation réussie et une exécution en pas à pas ou continue après point d’arrêt. Pb : pointeur non mis à jour. Après ouverture des 2 fenêtres : mise à jour. Philippe Morenton / VMLAB 14 8 BUGS La sortie OC3C (PE5) ne délivre pas un signal correct en mode MLI (visualisation incorrecte sur l’oscilloscope et sur LED dans panneau de contrôle). La sortie OC3B (PE4) fonctionne correctement. Les variables ne sont mises à jour que lorsque le simulateur exécute 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 fenêtre d’observation. Philippe Morenton / VMLAB 15