La sonde pour les nuls
Jamais branché de sonde sur une carte ? Voici, en quelques minutes, ce qu’est une sonde de débogage, ce que fait celle-ci, et pourquoi elle se passe de câble USB.
Dans cette page
1. Regarder à l’intérieur d’une puce qui tourne
La carte Eliott65 est une Neo6502kbd d’Olimex : un petit ordinateur dont le cerveau est un microcontrôleur RP2040. Quand on met au point son logiciel, on a besoin de deux choses : y installer un nouveau programme (le « flasher »), et regarder ce qui se passe dedans pendant qu’il tourne (lire sa mémoire, l’arrêter, le faire avancer pas à pas).
Une sonde de débogage sert à cela. C’est un petit boîtier branché entre le PC et la carte : d’un côté, elle reçoit les ordres d’un logiciel du PC, ici OpenOCD ; de l’autre, elle les traduit en signaux électriques sur deux broches de débogage de la puce.
2. Deux langues : SWD et CMSIS-DAP
- SWD (Serial Wire Debug) est la langue de la puce : deux fils, une horloge (SWCLK) et une donnée (SWDIO), par lesquels on lit et on écrit n’importe quelle adresse de la puce, même pendant qu’elle tourne.
- CMSIS-DAP est la langue entre le PC et la sonde : des commandes du type « lis ce mot », « écris ce bloc », qu’OpenOCD sait envoyer.
La sonde est donc un traducteur : elle reçoit des commandes CMSIS-DAP et les exécute en SWD.
3. Ce qui change : le Wi-Fi au lieu de l’USB
D’habitude, la sonde est reliée au PC par un câble USB. Celle-ci est un Raspberry Pi Pico W, qui
a une puce Wi-Fi : elle rejoint le réseau de la maison, et OpenOCD la joint par le réseau local. Il
suffit de lui dire le nom de la sonde, eliott65sonde.local.
4. Une sonde qui travaille seule
La sonde sait relever d’elle-même une liste d’adresses de la carte, à intervalle fixe, et ranger les valeurs dans sa propre mémoire. Elle peut s’arrêter quand une valeur cesse de bouger, ou atteint une valeur choisie, en gardant une copie des zones de mémoire intéressantes à ce moment. Le PC vient ensuite tout relire en une fois.
C’est utile pour un défaut qui n’apparaît qu’au bout de plusieurs minutes : plus besoin d’un PC attentif pendant tout ce temps.
5. Et pour la changer ?
La sonde se met à jour par le réseau, sans la débrancher. Si le nouveau firmware ne marche pas, elle revient seule à l’ancien. Voir Les mises à jour.
En résumé
| Question | Réponse courte |
|---|---|
| C’est quoi ? | Une sonde de débogage pour la carte Eliott65, sur un Pico W. |
| Ça remplace quoi ? | Une sonde reliée en USB ; celle-ci passe par le Wi-Fi. |
| Avec quels logiciels ? | OpenOCD, et l’outil e65s.py du projet pour le journal et les mises à jour. |
| Ça marche ? | Oui, sur la carte : OpenOCD s’y connecte, et Eliott65 a été flashé par le Wi-Fi. |
| Et ensuite ? | Voir Où en est la sonde. |
Les mots techniques sont expliqués dans le glossaire.