Changer de firmware demandait de débrancher le Pico W et de tenir le bouton BOOTSEL. Le câblage bougeait à chaque fois. Désormais la sonde se met à jour par le réseau, et se rattrape seule si ça tourne mal.
Dans cette page
Pourquoi
Pour comparer deux versions du SWD, il fallait reflasher le Pico W en BOOTSEL, donc le débrancher : le
câblage bougeait, et la carte était même éteinte entre deux mesures. On ne comparait plus seulement
le firmware. D’où la mise à jour par le réseau (OTA), en v0.5, puis l’amorce, en v0.6.
L’envoi et la vérification
L’outil e65s.py lit le fichier UF2 du firmware et l’envoie sur le port 4442, par morceaux, dans
l’ordre. La sonde l’écrit dans une réserve de la flash, secteur par secteur, et relit chaque
secteur. À la fin, elle relit toute l’image dans la flash et vérifie son CRC-32 et sa table des
vecteurs. Une image tronquée, corrompue ou faite pour un autre microcontrôleur est refusée avant
de toucher au firmware en place.
L’amorce
Le plan de la flash depuis la v0.6.0 : l’amorce en tête, l’application, la réserve, la sauvegarde et
deux secteurs d’état.
Une image ne peut pas décider elle-même de son remplacement : ce choix doit venir d’un code qui
s’exécute avant elle et que la mise à jour ne touche jamais. C’est l’amorce, 32 Kio en tête de
flash (9 Kio utilisés).
Une mise à jour, de la réception à la validation, ou au retour à l’ancien firmware.
Appliquer : l’application copie le firmware en place dans la sauvegarde, écrit l’état « à
installer », puis redémarre. Elle n’efface jamais son propre code.
Installer : au démarrage, l’amorce vérifie la réserve, la recopie sur l’application, vérifie le
résultat et passe « à l’essai ».
À l’essai : l’amorce compte un essai, arme le chien de garde (8 s) et lance l’application. Celle-ci
doit être validée par le PC dans les 2 minutes ; e65s.py le fait dès que la sonde revient
sur le réseau.
Retour en arrière : après 3 démarrages sans validation, l’amorce remet la sauvegarde. La
sonde revient sur l’ancien firmware, état « restauré ».
Sur la sonde
Une mise à jour prend 18 s de bout en bout ; plusieurs de suite ont réussi.
Une image en panne (qui boucle dès son démarrage) a été lancée 3 fois, arrêtée à chaque fois
par le chien de garde, puis remplacée par l’ancienne : la sonde est revenue seule, en 52 s.
Pas encore essayé sur le Pico W : une image qui démarre mais n’est jamais validée (3 fois
2 minutes). Le cas est couvert par les bancs sur le PC.
Les limites
L’amorce elle-même ne se met à jour que par BOOTSEL.
La validation ne prouve que la connexion : une image qui répond sur le réseau mais dont le SWD
serait cassé reste en place.
Il n’y a pas d’authentification : quiconque est sur le réseau local peut flasher la sonde.
Sources dans le dépôt : docs/adr/ADR-0004-mise-a-jour-par-le-reseau.md, docs/adr/ADR-0005-amorce-et-retour-arriere.md, docs/journal/05-mise-a-jour-par-le-reseau.md, docs/journal/07-amorce.md.