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