Aller au contenu
Eliott65Sondewiki
Sommaire

Les essais sur la carte

Sur le PC, tout passait. Sur la carte, les premières lectures ont échoué une fois sur six, puis plus du tout, puis à nouveau. Récit d’une mise au point où l’on a appris à dire « on ne sait pas ».

Dans cette page

Premier essai, sans la carte

Firmware v0.4.0 flashé sur le Pico W, rien de branché sur GP2 et GP3. La sonde rejoint le Wi-Fi, ouvre ses deux ports, répond en mDNS. Le journal rend ses limites ; « connecter » répond que la cible ne répond pas, ce qui est attendu. OpenOCD se connecte à la sonde, puis échoue faute de cible, ce qui est attendu aussi.

La carte branchée : des erreurs

La sonde lit l’identifiant du RP2040 et sa ROM sans faute. Mais les lectures de SRAM, de périphériques et des registres système échouent souvent, par le journal comme par OpenOCD, à 100 kHz comme à 1 MHz : 824 erreurs sur 4 952 lectures en 10 s. Aucune demande d’attente de la cible : la ligne se désynchronise, ou le bus renvoie une erreur.

Une hypothèse est posée : le programme PIO changeait SWDIO dans le même cycle que la descente de SWCLK, et un parasite d’un fil sur l’autre ferait voir un faux front à la cible. Le programme est corrigé (la donnée est posée un cycle plus tard), et le banc vérifie désormais qu’aucun changement de SWDIO ne tombe sur un front.

La comparaison qui n’a rien prouvé

Grâce à la mise à jour par le réseau, trois variantes ont été comparées sans toucher au câblage :

VarianteIdentifiant, 1 000 lecturesRelevé de 10 s
PIO corrigée1 000 justes0 erreur
PIO d’origine1 000 justes0 erreur
PIO d’origine, sans réserver la machine PIO1 000 justes0 erreur

Les erreurs avaient disparu dans les trois cas, après que la carte a été éteinte puis rallumée et le Pico W rebranché. Le firmware n’était donc pas en cause, et l’hypothèse n’est pas confirmée : faux contact ou état de la carte, on ne sait pas. La correction est gardée, car elle ne coûte rien.

Les erreurs reviennent

Pour flasher Eliott65 v0.58.0 par le Wi-Fi, OpenOCD n’arrivait plus à lire la mémoire. Cette fois, les lectures par blocs revenaient avec une parité fausse, puis la ligne se désynchronisait ; une lecture isolée passait. Après un nouveau câblage, c’était pire : même l’identifiant revenait faux, jusqu’à 30 % du temps, décalé d’un bit, signature d’un faux front d’horloge vu par la cible.

Une variante aux broches plus douces (2 mA au lieu de 4, pente lente) a été installée par le réseau :

Mesure4 mA2 mA
Identifiant, 1 000 lectures à 100 kHz702 justes1 000 justes
Identifiant à 1 et 4 MHz—1 000 justes à chaque vitesse
Blocs de 200 mots à 100 et 200 kHz—0 erreur
Blocs de 200 mots à 400 kHz—2 blocs en échec sur 50
Blocs de 200 mots à 1 MHz—erreurs après 20 à 150 mots
Relevé de 10 s à 1 MHz, lectures d’un mot—0 erreur

Le réglage à 2 mA est gardé. Eliott65 v0.58.0 a alors été flashé par le Wi-Fi à 200 kHz, et vérifié, en 1 min 27 s.

Sources dans le dépôt : docs/journal/04-essai-reel.md, docs/journal/06-integrite-du-signal.md.