Comment récupérer une carte Raspberry Pi Pico 2 ou autre carte RP2350 « briqué »

Recover Bricked Raspberry Pi Pico 2 or RP2350 board with flash_nuke.uf2

En théorie, il est presque impossible de bricker votre Raspberry Pi Pico 2 ou d’autres cartes RP2350 car le code bootrom (code source) est stocké dans la ROM de 32 Ko du microcontrôleur et est par définition une « mémoire en lecture seule ». Mais j’ai réussi à « bricker » mon Raspberry Pi Pico 2 l’autre jour, et même un échantillon clignotant ne fonctionnait pas sur la carte. Je vais donc vous expliquer une méthode simple pour récupérer/effectuer une sorte de réinitialisation d’usine.

Tout d’abord, laissez-moi vous expliquer ce qui s’est passé. Ma carte est devenue inutilisable après avoir exécuté la commande suivante lors de la construction de RISC-V Linux pour RP2035 et mon Pico 2 était connecté à la machine de construction :

À un moment donné, il copiera un binaire de firmware UF2 conçu pour les cartes avec PSRAM qui manque au Raspberry Pi Pico 2 :

cp build/psram-bootloader.uf2 « /media/jaufranc/RP2350″/

Après cela, je pouvais toujours voir la carte Raspberry Pi Pico 2 comme un lecteur « RP2350 » sur mon ordinateur, et vous pouviez copier un autre fichier UF2 comme blink_simple.uf2, mais rien ne se passait. La connexion d’une console série a montré ce qui suit :

ID PSRAM non valide : 0

Échec de la configuration de la PSRAM

Appuyez sur n’importe quelle touche pour réinitialiser.

Il est donc clair que l’ancien firmware attendant la PSRAM fonctionnait toujours, et la copie de divers fichiers UF2 (blink_simple, CircuitPython…) n’a rien changé.

Récupérer une carte Raspberry Pi Pico 2 ou RP2350 briquée avec flash_nuke.uf2

La solution pour une carte Raspberry Pi Pico 2 / RP2350 en panne consiste simplement à télécharger et copier flash_nuke.uf2 (il s’agit du même fichier pour RP2040 et RP2350) sur le lecteur RP2350 de votre ordinateur. Il effacera automatiquement le flash et récupérera la carte. C’est tout.

Ce qui s’est apparemment passé, c’est que le micrologiciel Linux RISC-V crée des partitions sur la carte, et celles-ci ne sont pas effacées lors de la copie d’un nouveau fichier UF2 avec le programme exécuté à partir de la mémoire flash. Mais le programme flash_nuke s’exécute une fois à partir de la RAM et n’est pas affecté. Vous trouverez le code source sur https://github.com/raspberrypi/pico-examples/blob/master/flash/nuke/, et la ligne suivante dans CMakeLists.txt le force à s’exécuter à partir de la RAM :

pico_set_binary_type(flash_nuke sans_flash)

J’ai obtenu la solution via la section commentaires sur Raspberryme Software et les forums Raspberry Pi où vous trouverez plus de détails sur ce qui se passe réellement sous le capot.

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

Youtube video