Aller au contenu
Eliott65Sondewiki
Sommaire

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

Eliott65Sonde : qui parle à quiSur le PC, OpenOCD et l'outil e65s.py joignent la sonde par le Wi-Fi, en TCP. La sonde est un Pico W : sur le port 4441, elle sert CMSIS-DAP à OpenOCD ; sur le port 4442, son journal local et la mise à jour de son firmware. Elle parle SWD à la carte Eliott65 (Olimex Neo6502kbd, RP2040 à deux cœurs) par deux fils, GP2 vers SWCLK et GP3 vers SWDIO, avec une masse commune.PCOpenOCDflasher, déboguer(port 4441)outil e65s.py (port 4442)Eliott65SondeRaspberry Pi Pico W4441 · CMSIS-DAP4442 · journal, OTACarte Eliott65Neo6502kbdRP2040, deux cœursla cibleWi-FiTCPSWDGP2, GP3, massePlus de câble USB entre le PC et la sonde : tout passe par le réseau local.La sonde sait aussi relever seule, puis envoyer ses relevés par lots.
Le PC parle CMSIS-DAP à la sonde par le Wi-Fi ; la sonde parle SWD à la carte par deux fils.
  • 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é

QuestionRé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.

Sources dans le dépôt : README.md, docs/adr/ADR-0001-cmsis-dap-par-tcp.md, docs/adr/ADR-0003-journal-local.md.