La sonde
Au départ, une question simple : la sonde pouvait-elle passer par le Wi-Fi plutôt que par l’USB ? Elle était déjà un Pico W ; il lui manquait le firmware pour s’en servir.
Le point de départ
Pour mettre au point Eliott65, le projet utilisait un Pico W comme sonde, sous debugprobe, le
firmware officiel de sonde de Raspberry Pi. Ce firmware ne parle que l’USB, et aucun firmware de
sonde CMSIS-DAP par le Wi-Fi pour le Pico W n’a été trouvé. Or l’OpenOCD de développement utilisé par
le projet sait déjà parler CMSIS-DAP par TCP, c’est-à-dire par le réseau.
Il fallait donc écrire, pour le Pico W, un firmware de sonde qui parle ce protocole. Le câblage reste
celui de debugprobe : GP2 vers SWCLK, GP3 vers SWDIO, et une masse commune.
Ce qu’elle sait faire
| Service | Port | Rôle |
|---|---|---|
| CMSIS-DAP par TCP | 4441 | OpenOCD flashe et débogue la carte, comme avec une sonde USB |
| Journal local | 4442 | relevés périodiques, déclencheurs, copies de mémoire, lectures de grands blocs |
| Mise à jour | 4442 | nouveau firmware envoyé par le réseau, retour seul à l’ancien en cas d’échec |
La sonde s’annonce sous le nom eliott65sonde, par DHCP et par mDNS : on la joint par
eliott65sonde.local, sans connaître son adresse. Sa LED clignote pendant qu’elle cherche le réseau,
et reste fixe une fois connectée.
Les choix de départ
- Un processeur CMSIS-DAP écrit pour le projet, en C portable. Ni le code de
debugprobeni l’implémentation de référence d’ARM ne sont repris : pas de question de licence, et tout se teste sur le PC. - Seules les commandes qu’OpenOCD emploie sont réalisées, lues dans son code source : connexion, transferts simples et par blocs, réglage de l’horloge, séquences SWD (dont la sélection de cœur propre au RP2040).
- Une cible simulée sur le PC (le port de débogage du RP2040 et 64 Kio de RAM) permet d’essayer la sonde avec le vrai OpenOCD, sans aucun matériel.
- Tout ce qui ne dépend pas du Pico W (CMSIS-DAP, protocole SWD, journal, mise à jour, amorce) est écrit en modules portables, testés sur le PC avant d’aller sur la sonde.
La licence
Le firmware est sous EUPL 1.2, comme Eliott65. Il s’appuie sur le pico-sdk et lwIP (licences BSD)
et sur cyw43-driver, le pilote Wi-Fi, dont la licence ne permet l’usage qu’avec les puces de
Raspberry Pi, ce qu’est le Pico W.