Bonjour.
Lorsque l'on travaille avec des microcontrôleurs, une
des grandes difficultés, c'est de faire fonctionner
les programmes qu'on a écrit, de trouver
les pannes qui sont à l'intérieur, de dépanner.
On parle parfois aussi de déverminage ou encore de débogage,
mais c'est certainement le terme anglais "debug" qui est le plus utilisé.
Je rappelle qu'il y
a plusieurs manières de programmer un microcontrôleur.
La technique qui est utilisée dans
l'Arduino utilise ce qu'on appelle une bootloader.
Il s'agit d'un programme qui doit être présent sur le microcontrôleur
et qui permet de charger un autre programme dans ce même microcontrôleur.
C'est d'ailleurs une de, une des contraintes,
on ne peut pas acheter un microcontrôleur
tout nu, tout neuf, comme le fabriquant le livre.
Il ne va pas fonctionner sur un
Arduino puisqu'il faut préalablement lui installer un bootloader.
Il existe aussi des programmateurs, celui qui
est utilisé pour les MSP430, par exemple.
Le mode ISP qui est utilisé pour les
AVR et qui permet une première programmation d'un Arduino.
Vous vous souvenez, on a notre schéma, notre montage, on a ici,
quelque chose qui nous permet de nous relier au PC pour faire la programmation.
La plupart des programmateurs permettent
simplement de programmer le microcontrôleur.
Mais certains programmateurs ont des
fonctions supplémentaires qui offrent cette
possibilité de, en quelque sorte, voir à l'intérieur du microcontrôleur,
voir ce qui se passe dans notre microcontrôleur.
Historiquement, c'est souvent les systèmes JTAG qui ont été utilisés.
C'est un terme que vous devez connaître, on
en parle souvent en rapport avec les microcontrôleurs.
On peut programmer des AVR avec des interfaces JTAG.
Les ARM sont presque toujours programmés également, avec cette technologie.
Il existe aussi des systèmes
spécifiques inventés par certains fabriquants, par
exemple, le système debugWire des AVR.
Il est assez génial parce qu'il utilise une seule patte, la patte
Reset, mais dans un mode spécial et qui permet, donc, non seulement
de programmer le microcontrôleur, mais aussi de suivre ce qui se passe
à l'intérieur, et ça va être une aide énorme pour faire le dépannage,
le debug.
Il faut, dans ce cas-là, utiliser le programmateur Dragon proposé par Atmel.
Il se trouve que le launchPad MSP430 contient aussi un de ces programmateurs
évolués qui permet de regarder ce qui se passe à l'intérieur du microcontrôleur.
Ces dispositifs étaient jusqu'à il y a
pas très longtemps réservés à des professionnels.
C'était des dispositifs
extrêmement coûteux, et le fait qu'ils soient disponibles sur le launchPad
à un prix très intéressant est, euh, un avantage, euh, de taille.
Évidemment, un programmateur donné pourra être utilisé
dans sa fonction de debug, pour autant qu'on utilise le logiciel correspondant.
Dans le cas des MSP430 de Texas Instruments, c'est le logiciel
Code Composer Studio dont vous voyez, ici, une vue générale qui permet de faire cette
programmation avec debug. Vous reconnaissez ce type d'environnement.
Ici, on voit les fichiers qui sont associés
au projet qu'on est en train de réaliser.
Ici, il y a le source du programme qu'on écrit, et puis là, il y aura
la console qui par exemple, nous donnera les, le résultat de la compilation, avec
éventuellement des erreurs, et il y a
aussi, ici, une fenêtre avec des aides diverses.
Essayons de créer pas à pas, un
projet avec cet environnement Code Composer Studio.
La première chose qu'il faut faire, c'est
aller dans File, sélectionner New, puis CCS Project.
Donc, on va créer un projet qui
contiendra plus tard un ou plusieurs fichiers sources.
Donc, CCS Project.
Le menu suivant, euh, nous demande de donner
le nom au projet, l'extension est donnée automatiquement.
Il faut, comme d'habitude, cliquer sur Next.
Il y a encore deux fenêtres sur lesquelles il suffit de cliquer Next, et je m'arrête,
ici, sur la troisième fenêtre, dans laquelle
il est nécessaire de donner une réponse.
On doit choisir le microcontrôleur qu'on va utiliser.
Si on clique simplement dans la liste, la liste est très longue.
C'est un peu difficile de trouver le processeur qui nous intéresse.
Alors, ce qui est plus facile, c'est de choisir dans
cette famille, dans cette liste de familles, la famille MSP430G
qui est celle qui correspond au launchPad.
Et ensuite, on fait dérouler une liste qui est moins longue et
le processeur qui est originalement sur le launchPad, c'est celui-ci, le 25 53.
Ensuite, il suffit de choisir Next.
On a donc créé un projet, et on n'a
pas encore créer de fichier source associé à ce projet.
Et il est nécessaire de cliquer, avec le bouton
de droite, sur le nom du projet, de choisir à
nouveau, New, et cette fois, de choisir Source File, fichier source.
Ensuite, on a le menu où on doit donner le nom du fichier.
N'oubliez-pas de donner l'extension point C, puisqu'il s'agira
bien d'un fichier point C, et ensuite, on
se trouve avec une page vide dans lequel
il suffit d'écrire le programme que nous souhaitons écrire.
J'ai pris comme exemple, pour cette démonstration,
un source qu'il est important de pouvoir calibrer.
C'est le, l'utilisation d'un capteur de distance infrarouge, et à
un moment donné, on doit faire une petite attente pour
que globalement, le temps de mesure corresponde à, le temps
de décharge de la capacité dans les conditions de travail
réel, et il va falloir ajuster cette valeur-là.
Donc, ça sera très intéressant de pouvoir
visualiser ce que va nous rendre notre procédure
et on verra que c'est, ça sera très facile de le faire, grâce au debugger.
Lorsque le source est prêt, Il faut cliquer dans Project,
puis Build Active Project. Donc, on fait la construction du projet.
C'est le thème qui est utilisé pour la compilation, suivi des
étapes qui suivent la compilation parti, en particulier, euh, l'édition des liens.
Dans ce cas-là, il n'y a pas eu d'erreurs, on voit bien, ici, Build Complete.
Par contre, il y a eu un Warning, un avertissement qui est d'ailleurs tout
à fait pertinent, puisque mon programme principal
dit ceci : Mesure égale Mesure Distance,
mais on ne fait rien pour le moment, de cette valeur.
Donc, elle n'est pas utilisée.
Et là, c'est très intéressant de pouvoir, malgré tout, lancer
ce programme qu'on va ensuite arrêter et on ira regarder la
valeur mesurée sans avoir besoin de s'occuper de mettre du
matériel supplémentaire autour de notre
microcontrôleur pour afficher cette valeur mesurée.
On va lancer l'environnement de Debug grâce
à la sélection Target, puis Debug Active Project.
Target, c'est donc la cible, on parle souvent
de système cible pour, euh, ces systèmes microcontrôleurs.
Donc, on va dépanner le project actif sur le système cible.
Et on se trouve, après quelques dizaines de secondes,
je devrais dire, ça prend un petit peu de temps; le, l'environnement doit se
commuter, doit changer Le programmateur doit envoyer le code à l'intérieur
du microcontrôleur et lorsque tous ces, toutes ces opérations sont terminées, on
se trouve avec un environnement un petit peu différent de tout à l'heure.
On trouve quelque part, dans une fenêtre un peu minuscule, le source
du programme que nous venons d'écrire.
On trouve, ici, euh, les messages qui viennent d'une console.
On trouve, ici, les instruction ta, traduites
en assembleur, ça peut être extrêmement utile,
et on retrouvera, ici, des noms de
variables, ce qui va être extrêmement intéressant.
Pour le moment, le programme ne s'exécute pas encore,
il va falloir, ici, cliquer sur la touche Run
qui est une petite flèche verte qui va
permettre de lancer le programme à l'intérieur du microcontrôleur.
Une fois que le programme est lancé, on ne va rien voir du tout.
Pourquoi?
Notre programme s'exécute à l'intérieur du microcontrôleur, il fait
ses mesures de distance, mais il ne les affiche pas.
Il va être, donc, nécessaire d'arrêter l'exécution du programme.
Ici, il y a une touche Alt que
vous allez trouver, qui vous permet d'arrêter le programme.
Donc, la touche Alt, c'est cette touche qui est juste
entre le Run et l'arrêt complet du système de Debug.
Une fois que le programme est arrêté, on
voit, ici, l'endroit où le programme s'est arrêté.
Il se trouve qu'il était dans cette boucle d'attente lorsqu'il s'est arrêté.
On voit que des variables locales, ici, i et j ont une certaine
valeur. La distance vaut la même valeur que le j.
On est au milieu de la procédure de mesure de
distance, c'est donc pas du tout des informations qui sont intéressantes.
Ce qu'on va faire maintenant, c'est qu'on va
créer un point d'arrêt à l'intérieur du programme.
En anglais, on appelle ça un break point.
Je vais donc cliquer sur cette ligne, ici, qui est la fin de
la procédure et qui donne l'instruction Return Distance, avec le bouton de droite.
Je vais chosir New Breakpoint.
Je vais choisir Breakpoint, et à ce moment-là,
mon programme va devoir s'arrêter s'il passe à cet endroit-là.
Je vais donc, renoncer l'exécution et lorsqu'elle
va s'arrêter, je vais voir le résultat à l'intérieur de mon microcontrôleur.
C'est bien ici, que je me suis arrêté, donc, juste au niveau du return distance.
J'ai de nouveau les
valeurs de i et de j.
Le j est arrivé à 254, on est donc bien à la fin de la boucle de mesure.
Par contre, on a, ici, la valeur qui
a effectivement été lue, qui est la valeur 41.
Donc, en fonction de l'objet que j'avais placé en face de mon capteur,
je vois que la valeur 41 a été donnée. Je vais pouvoir faire d'autres
tests de cette manière-là pour éventuellement calibrer mon programme.
Je pense que vous vous rendez compte
que c'est extrêmement puissant, comme manière de travailler
puisqu'on peut, en quelque sorte, aller voir
à l'intérieur du microcontrôleur, ce qui se passe.
Lorsqu'on écrit des programmes complexes, on peut tout à coup
perdre contrôle, ne plus très bien savoir ce qui se passe.
Il est toujours possible, avec ce dispositif,
d'arrêter l'exécution, d'aller voir des variables.
Il est possible également, de faire du pas
à pas, ce qui est aussi extrêmement intéressant.
Ce que nous venons de voir
maintenant, c'était considéré comme des outils professionnels
tout à fait coûteux et inabordables pour les étudiants et pour les amateurs.
Aujourd'hui, c'est des technologies qui sont peu coûteuses et je
vous encourage vivement à apprendre à les utiliser, à les maîtriser, vous serez
beaucoup plus efficaces pour le développement-microcontrôleur.