Aller au contenu
Eliott65Sondewiki
Sommaire

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

ServicePortRôle
CMSIS-DAP par TCP4441OpenOCD flashe et débogue la carte, comme avec une sonde USB
Journal local4442relevés périodiques, déclencheurs, copies de mémoire, lectures de grands blocs
Mise à jour4442nouveau 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 debugprobe ni 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.

Sources dans le dépôt : README.md, docs/adr/ADR-0001-cmsis-dap-par-tcp.md, docs/adr/ADR-0002-firmware-pico-w.md, docs/journal/01-cmsis-dap-tcp.md.