Sommaire

Transcription

Sommaire
Environnement de développement MPLAB7.40
Sommaire :
Introduction
p2
Comprendre les outils
1. Architecture d'un projet en langage C
2. Les outils de développement
p3
p4
Utiliser les outils
3. Création d'un nouveau projet
4. Compilation, édition de lien
5. Le débuggage par simulation
6. La programmation du microcontrôleur
7. Le débuggage in situ
p6
p9
p 10
p 12
p 14
Références
p14
Auteur : T.ROCACHER
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
1
Environnement de développement MPLAB7.40
Introduction
L'environnement de travail présenté ici, associé au microcontrôleur de type PIC18F de chez
Microchip, est à la fois simple d'utilisation et très complet. Le but ultime que l'on doit atteindre
avec ces outils est de programmer le PIC directement sur le système que l'on est en train de
concevoir (exemples : une imprimante, un robot, une télévision, un calculateur d'injection pour
voiture...une trottinette électrique...). C'est ce qu'on appelle la programmation « in situ ». Plus
besoin de déporter le microcontrôleur vers un programmateur spécial ( à noter que ce concept de
« programmation in situ » est aussi utilisé pour des CPLD – Complex Programmable Logic Deviceet autres circuits logiques programmables). Cette manière de travailler est rendue possible par le fait
que la mémoire qui contient le code n'est pas une ROM figée, mais de la mémoire Flash. Elle
possède le double avantage d'être non volatile (on peut couper l'alimentation, rien n'est perdu) et
d'être programmable avec des niveaux de tension TTL. Le PIC18F embarque une petite interface
logique qui permet de remplir la Flash via une liaison série synchrone. Les fils sont dénommés
PGC, PGD, /MCLR.
Voici les étapes qui sont nécessaires pour pouvoir atteindre cet objectif :
•
•
•
•
•
Créer un projet, ce qui implique de construire un répertoire dans lequel, on va ranger tous les
fichiers nécessaires. Il faudra savoir dès cette étape, la référence du PIC à utiliser.
Construire l'éxecutable (.hex), c'est à dire, compiler, faire l'édition de lien
Faire un débuggage par simulation sur PC. Jusque là, pas besoin de micro-contrôleur. Tout ce
passe sous MPLAB7.40
Si les résultats de simulation sont ceux attendus, on opère la programmation In Situ avec ICD2
Si les résultats ne sont pas encore satisfaisants, on peut procéder à un débuggage In Situ. Il ne
s'agit plus d'une simulation simple exclusivement sous PC, mais d'une avancée pas à pas du
programme implanté sur le PIC, contrôlée depuis le PC (MPLAB7.40+ICD2).
On le voit, les possibilités offertes par cet outil de développement sont très complètes et permettent
de découvrir toutes les étapes de développement associées à un microcontrôleur de haut niveau. En
outre, on peut citer deux avantages : une rapidité de prise en main logicielle, et l'utilisation de
circuits « low cost ».
La suite de ce document est découpée en deux parties, l'une qui a pour but de comprendre
grossièrement les divers outils de développement (compilateur, édition de lien...), mais aussi de bien
cerner le rôle de chaque fichier nécessaire à la construction d'un projet. La seconde partie traitera
avec pragmatisme de la mise en oeuvre de ces outils.
La lecture de ces quelques pages, me semble indispensable pour mener à bien le projet, avec un
degrés de maîtrise suffisant.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
2
Environnement de développement MPLAB7.40
Comprendre les outils
1. Architecture d'un projet en langage C
L'ensemble des fichiers utiles sont placés dans un répertoitre, le répertoire de travail. Afin que
MPLAB puisse construire le fichier exécutable, on doit trouver dans ce répertoire :
–
–
–
–
–
Le ou les fichiers sources en langage C, dont l'extention est .C.
Eventuellement un ou plusieurs fichiers sources assembleur dans le cas où l'on veut développer
en C tout en mixant de l'assembleur. L'extension est .asm.
Les fichiers objets nécessaires (.o). Un fichier objet est le fruit d'une compilation d'un fichier
source.Asm ou .C.
Les bibliothèques (ou librairies, .lib). Un fichier .lib, est un regroupement de plusieurs fichiers
objet (.o), dont les sources ont un thème commun. Par exemple, plusieurs sources .C qui traitent
de fonctions mathématiques, seront regroupés en une librairie, math.lib.
Le fichier de description pour l'édition de lien, l'extention est .lkr. Ce fichier permet de définir
l'espace mémoire de type ROM et RAM disponible dans le microcontrôleur considéré. C'est le
"memory layout".
Pour ce qui nous concerne, voici les fichiers qui devront être présents dans le répertoire de
travail (en plus du fichier source .C en cours d'élaboration) :
•
•
•
•
c018i.o : Ce fichier objet est le produit de compilation du fichier source c018i.c qui est la routine
de démarrage (start up code). Son but est en particulier de définir une pile système et de lancer le
programme main().
clib.lib: regroupement de fonctions mathématiques en C, de fonctions de temporisations (délais)
et de fonctions standards C. L'ensemble de ces fonctions est dédié à n'importe quel PIC18F.
NB: Seules les fonctions utilisées sont incorporées à l'édition de lien.
P18F458.lib: contient des fonctions en C diverses. Contient aussi la définition de tous les
registres dont le fichier source est p18F458.asm.
18F458.lkr ou 18F458i.lkr: Pour un projet, on utilisera l'un ou l'autre. Le premier est le script
classique pour l'édition de lien vers un 18F458. Le second contient en plus des réservations
mémoire particulières pour utilise le débugger in Situ.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
3
Environnement de développement MPLAB7.40
2. Les outils de développement :
Le développement en langage C sur MPLAB se fait en utilisant une "suite d'outils"
dénommée"Microchip C18 Tool suite". Cette suite se compose des outils suivants :
►MPASM Assembler
►MPLINK Object Linker
►MPLAB C18 C Compiler
►MPLIB Librarian
: permet d'assembler un source .asm
: lie tous les fichiers objets .o, les fichiers .lib, grâce à un
script .lkr
: compile un fichier source .C
: Fabrique une bibliothèque .lib à partir de fichiers objets .o.
Voici un graphe (flux de fichiers) qui permet de comprendre la construction du fichier exécutable
(.hex) à partir des outils énumérés plus haut :
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
4
Environnement de développement MPLAB7.40
NB: Dans la suite du document, nous n'évoquerons pas MPLIB. La construction des bibliothèques
ne faisant pas partie des objectifs.
En plus du fichier exécutable, .hex, deux autres fichiers sont importants :
► .lst : Il s'agit de la liste des codes héxadécimaux correpondant au programme implanté dans
le circuit. Chaque code est précédé de l'adresse mémoire qui lui correspond. De plus, on
trouve l'instruction assembleur (désassemblée à partir du code héxa) ainsi que la ligne du
code source C.
►.map: contient les informations sur toutes les variables et constantes. On voit clairement à
quelle adresse telle ou telle variable ou constante est affectée.
A noter que le fichier .cof est utiliseé par le simulateur incorporé dans MPLAB7.40.
Voici le flux de fichiers qui correpond à une application développée en C dont le code source est
toto.c dans le projet essai :
toto.c (contient main())
MPLAB C18
toto.o
clib.lib
pic18F458.lib
c018i.o
(fcts standards C)
(fcts d'init. Périphériques
+ déclarations registres)
(start up code)
essai.hex
INSA Toulouse 2006-2007
MPLINK
18F458.lkr ou 18F458i.lkr
essai.map
essai.lst
Manuel_MPLAB_V2.pdf
essai.cof
5
Environnement de développement MPLAB7.40
Utilliser les outils
3. Création d'un nouveau projet
Comme pour beaucoup de systèmes de développement sous PC, la première étape de travail
consiste à construire un nouveau projet. Pour cela :
– créer un nouveau répertoire. Par exemple, nous nommerons ce répertoire "exemple".
–
Copier tous les fichiers du répertoire A_Inclure, (répertoire qui se trouve dans commetud) dans
répertoire exemple. Ce sont les fichiers nécessaires, décrits précédemment.
–
Dans MPLAB7.1, aller dans le menu Project ►Project Wizard...La fenêtre suivant s'affiche:
Choisir le PIC18F458 dont on se servira dans le bureau d'études
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
6
Environnement de développement MPLAB7.40
Ensuite on doit choisir la suite d'outils :
Sélectionner alors Microchip C18 Toolsuite.
La troisième étape est le choix du répertoire et du nom de projet :
Le nom retenu pour ce projet est essai.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
7
Environnement de développement MPLAB7.40
Enfin, lors de la dernière étape, on propose d'ajouter des fichiers au projet. Cette étape est
facultative, et peut se faire ultérieurement.
Ici, nous avons ajouté le "linker script", 18F458i.lkr. La notion d'ajout ou suppression de fichier
pour le projet, ne doit pas être confondue avec la création ou suppression de fichiers du répertoire
"exemple". Ajouter un fichier pour le projet signifie que le Linker va s'en servir pour produire
l'exécutable .hex.
NB: si on a la curiosité d'ouvrir le script 18F458i.lkr en mode texte, on voit qu'il invoque les 3
fichiers du répertoire ( c018i.o, clib.lib, P18F458.lib). Ainsi, pas besoin de les ajouter au projet.
Maintenant que le projet est construit, il faut rédiger le programme principal en C. Pour ce faire, une
première méthode consiste, à partir d'une page blanche :
• Files ►New...
• Un fichier texte apparait, on y rédige le programme, puis on le sauve sous un nom portant
l'extension .c.
• On ajoute le fichier créé au projet en pointant le champ Source Files dans la fenêtre essai.mcw.
Un clic droit sur la souris permet d'accéder au menu d'ajout de fichier.
Une seconde méthode consiste à partir d'un fichier existant, à le recopier dans le répertoire de
travail, et enfin à l'ajouter au projet parmi les fichiers sources. Dans le commetud, on pourra trouver
quelques exemples de fichiers sources. Ces fichiers sont dans le répertoire Exemples:
•
Le fichier trame_C.c est en quelques sortes le canevas, la structure type de fichier source .c qu'il
convient d'utiliser comme base de départ. Il inclut la préparation d'une interruption.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
8
Environnement de développement MPLAB7.40
•
Le fichier Rappel_structures_C. Quelques structures de type, for, if... sont rappelées.
Afin de compléter le projet, ajouter le fichier Rappel_structures_C dans les fichiers sources.
4. Compilation, édition de lien
On peut compiler chaque fichier source afin d'en obtenir le fichier objet, .o. Pour cela, il suffit de
pointer le fichier source et de cliquer sur le bouton droit, puis Compile. Cette démarche lance C18
seulement. Elle permet de vérifier la syntaxe C.
Pour faire l'édition de lien, il faut lancer la commande Make. Pour cela cliquer sur le bouton :
Enfin, on peut faire l'ensemble de ces opérations par la commande Build All :
NB: Parmi tous les fichiers produits par le Linker (édition de lien, voir p5), le fichier Map n'est
créé que si on le spécifie : Project ►Build Options ►Project. La fenêtre suivante s'affiche :
Cocher la case Generate Map
File et relancer l'édition de lien.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
9
Environnement de développement MPLAB7.40
5. Le débuggage par simulation
Le débuggage en simulation est l'outil indispensable qui permet de mettre au point un
programme. Il permet de faire une progression pas à pas avec la possibilité de voir tous les registres
du PIC ainsi que les variables déclarées dans le programme. De plus, on peut effectuer des
chronométrages précis, ce qui permet de mettre au point tout ce qui est temporisation.
Pour utiliser le débugger en simulation : Debugger ►Select tool ►MPLAB SIM
Une nouvelle barre d'outils s'inscrit:
Run : Lance
l'exécution du
programme
jusqu'à la fin
ou jusqu'à un
Animate :
point d'arrêt Stop :
Arrête le
Lance le
programme programme
en pas à pas
automatique
Reset :
Retour à la
première
instruction
Step into :
Progresse
d'une
instruction
Step over :
Progresse d'une
instruction et
exécute une
fonction entière
si l'instruction
est un appel de
fonction
Step out : sort
d'une fonction,
dans le cas où
le débugger est
en pas à pas à
l'intérieur d'une
fonction
5.1Point d'arrêt :
C'est un marqueur qui identifie une ligne de programme particulière sur laquelle le débugger va
s'arrêter lorsqu'il est en mode Run. On peut placer plusieurs points d'arrêt, les activer ou les
desactiver.
Placer un point d'arrêt : un simple double-clic sur la ligne souhaitée remplit cette tâche.
Pour gérer les points d'arrêts, aller dans le menu Debugger ►Breakpoints.
5.2Visualiser des registres et variables
Pour cela , aller dans le menu View ►Watch :
Dans la colonne Add SFR, choisir le registre
(Special Function Register) à observer.
Dans la colonne Add Symbol, on pourra
visualiser n'importe quelle variable du
programme.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
10
Environnement de développement MPLAB7.40
5.3 La mesure de temps (StopWatch)
Cette fonction de chronométrage est accessible via le menu Debugger ► StopWatch :
!!Attention :
la ligne Processor Frequency indique 20
Mhz. Rien ne dit que l'application
hardware développée tourne à cette
fréquence là.
Si la fréquence du quartz de la carte n'est
pas la bonne, il faut la changer :
Debugger ► Settings, onglet Osc/Trace
5.4 L'anlyseur logique
C'est un outil qui permet d'observer lors d'une simulation, les signaux logiques sur une ou
plusieurs I/O configurées en sortie.
View ► Simulator Logic Analyser
Le bouton Channel permet de choisir les signaix à observer.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
11
Environnement de développement MPLAB7.40
5.5 Le DMCI (Data Monitor and Control Interface)
Cet environnement graphique permet notamment de visualiser des courbes. Chaque courbe
correspond au tracé d'un certain nombre de valeurs regroupées dans un tableau. Cet outil ne gère
donc que des tableaux.
Ainsi, dans le cadre du débuggage d'un filtre numérique, et si l'on veut observer la sortie, il convient
de modifier légèrement le code en venant remplir une table au fur et à mesure que les sorties
s'actualisent. Cela nécessite donc la création d'un tableau (utilisation de RAM en plus) et d'une
petite gestion de remplissage de table (code, et donc temps d'exécution en plus).
Tools ► DMCI
Pour activer le menu déroulant, cliquer sur le bouton droit (un fois que le graphique est coché). On
peut alors configurer le tableau à visualiser. Une interpolation permet de rendre un tracé lisse.
6. La programmation du microcontrôleur
La programmation se fait par l'intermédiaire d'un outil matériel, le module ICD 2. Il est relié au PC
par l'intermédiaire d'un câble USB. Le module est alimenté, par le câble USB. Le module est
connecté à la carte constituant l'application par une nappe spéciale.
Avant toute chose, il faut choisir le module ICD 2 comme programmateur:
Programmer ►Select Programmer ►MPLAB ICD 2.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
12
Environnement de développement MPLAB7.40
6.1configuration du module ICD 2
Les réglages se font par l'intermédiaire du menu Programmer ►settings.
Veiller à ce que la case Power
target from MPLAB ICD 2 soit
décochée. En effet, l'application
qui reçoit le PIC18F est déjà
alimentée.
En principe, la communicaion est déjà configurée en USB à 19200 Bauds.
6.2Les bits de configurations du PIC18F
Une particularité des microcontrôleurs PIC18F est que lors de la programmation (remplissage de la
mémoire FLASH du code exécutable), s'ajoute la programmation de certains bits particuliers qui
vont déterminer la façon dont le PIC va fonctionner. Cette étape est donc très importante.
Deux manières possibles pour la configurations de ces bits :
• On rédige cette configuration directement dans le fichier source (c'est le cas des 2 fichiers
d'exemple fournis). A l'édition de lien, cette configuration est interprétée par MPLAB qui pourra
effectuer la configuration lors de la phase de programmation.
• On peut régler les bits de configuration directement dans l'interface MPLAB :
Configure ►Configuration bits...
Les configurations par défaut à utiliser sont celles présentées dans le fichiers d'exemple.
6.3La programmation
Il faut d'abord opérer la connexion de MPLAB7.1 avec ICD 2 : Programmer ►Connect. Si la
connexion pose problème, vérifier si le câble est bien relié à l'application. Vérifier aussi qu'elle est
bien alimentée.
Ensuite effectuer la programmation : Programmer ►Program.
Une fois l'opération faite, débrancher le câble de l'application afin que le programme puisse
démarrer.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
13
Environnement de développement MPLAB7.40
7. Le débuggage In situ
Le débuggage sur site consiste à travailler avec un PC, directement sur l'application. Par
exemple, on peut imaginer un PC directement connecté à un calculateur embarqué sur une voiture.
Alors, on peut contrôler le déroulement d'un programme pas à pas. La première opération que l'on
fait est de télécharger le programme utilisateur à tester. En réalité, on téléchargera aussi un
moniteur qui va permettre le dialogue PIC – PC. Le moniteur est en fait le programme principal qui
tourne sur le PIC. Le programme utilisateur est une sorte de sous-programme. Depuis le PC,
l'utilisateur va pouvoir demander au moniteur, via la liaison USB et le module ICD2, de faire
avancer le programme utilisateur d'un pas, ou de le lancer jusqu'à un point d'arrêt, ou de le stopper...
La "greffe" du moniteur au programme utilisateur se fait lorsqu'on active le débugger ICD2.
Le moniteur, pour fonctionner correctement, a besoin d'un certain nombre de ressources et
notamment de réservation mémoire. C'est la raison pour laquelle, le linker a besoin d'un script
spécial qui se nomme 18F458i.lkr. On utilisera systématiquement ce dernier (vivement conseillé)
pour le débuggage in situ.
7.1Lancement du débuggage in situ
NB: MPLAB ne supporte pas que le module ICD2 soit à la fois en mode de programmation et en
débuggage. Il faut donc déselectionner le programmateur :
Programmer ►Select Programmer ►None,
puis, sélectionner ICD2 en mode simulation :
Debugger ►Select Tool►MPLAB ICD 2.
Tout comme la programmation, il faut se connecter, puis programmer le PIC.
7.2Le débuggage
Les fonctionnalités sont les mêmes que pour le simulateur (sauf l'analyseur logique et le DMCI)
Références :
C18_Lib_51297d.pdf - Microchip : pour la compréhension des bibliothèques invoquées par
défaut dans le fichier script .lkr. Donne des informations sur les fichiers sources .C et .asm des
diverses bibliothèques.
Aide en ligne de MPLAB7.1, MPLINK Object linker : pour la compréhension de l'édition de
lien, explications des fichiers objets...
MPLAB_C18_Getting_Started_51295d – Microchip : pour les exemples de base, dont par
exemple l'utilisation d'interruption
MPLAB_C18_Config_Settengs_51537a – Microchip : pour comprendre les bits de configuration
du PIC18F458.
INSA Toulouse 2006-2007
Manuel_MPLAB_V2.pdf
14