🛠 Boot UF2, BOOTSEL et récupération d'une carte « briquée »

Raspberry Pi Pico · avance · Schéma : IMG-pico-avance-2-pico-boot-uf2-recovery.svg — cycle de boot du RP2040 : broche BOOTSEL, bootrom en ROM, choix flash QSPI externe ou USB, lecteur RPI-RP2 et fichier uf2 déposé

Objectifs

Comprendre la chaîne de boot atypique du RP2040 — aucune flash interne : après reset, le bootrom (en ROM, incopiable) charge le firmware soit depuis la flash QSPI externe de 2 Mo (XIP), soit par USB si la broche BOOTSEL est maintenue. Tu apprendras à entrer en mode BOOTSEL, à comprendre le format UF2 (image « sparse » par blocs de 256 octets), et à récupérer une carte dont le programme plante dès le démarrage — le RP2040 ne peut pas être briqué par logiciel sur ce chemin.

Matériel

Code complet

// canary.c — programme volontairement « méchant » à récupérer
// Écrase le vecteur de reset : au prochain boot, plus rien ne démarre
// (sauf BOOTSEL, qui court-circuite la flash !)
#include "pico/stdlib.h"

int main(void) {
    // efface la table des vecteurs en tête de flash (zone 0x10000000)
    flash_range_erase(0, 4096);
    uint32_t junk[64];
    for (int i = 0; i < 64; i++) junk[i] = 0xDEADBEEF;
    flash_range_program(0, (const uint8_t *)junk, 256);
    while (true) { }   // le prochain reset partira dans le vide
}
// Rebuild avec pico_stdlib + hardware/flash, flash, laisse le programme
// tourner une fois, reset : la carte est « morte »… jusqu'au BOOTSEL.

Vérification attendue

Après exécution du canari puis reset, la carte ne répond plus (pas de REPL, pas de blink). Maintiens BOOTSEL et rebranche : le lecteur RPI-RP2 réapparaît toujours — le bootrom est intact. Dépose un .uf2 sain : la carte revit. Note : un UF2 mal aligné peut être écrit de façon erratique (errata E14 de la datasheet RP2040) ; si le flash semble aléatoire, re-tente avec un UF2 généré par le SDK.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels