Как восстановить Raspberry Pi Pico 2 или другую плату на RP2350, ставшую «кирпичом»

Теоретически, практически невозможно заблокировать Raspberry Pi Pico 2 или другие платы на RP2350, поскольку код загрузочного ПЗУ ( исходный код ) хранится в 32 КБ ПЗУ микроконтроллера и по определению является «памятью только для чтения». Однако недавно удалось «заблокировать» Raspberry Pi Pico 2, и даже тестовый пример со светодиодом не запускался на плате. Далее будет объяснён простой метод восстановления/своего рода сброса к заводским настройкам.

Сначала поясним, что произошло. Плата стала непригодной к использованию после выполнения следующей команды в процессе сборки RISC-V Linux для RP2035 при подключённой к сборочной машине Pico 2:

make flash-kernel

В определённый момент происходит копирование двоичного файла прошивки UF2, предназначенного для плат с PSRAM, которой Raspberry Pi Pico 2 не оснащена:

cp build/psram-bootloader.uf2 "/media/jaufranc/RP2350"/

После этого плата Raspberry Pi Pico 2 по-прежнему отображалась как диск «RP2350» на компьютере, и можно было скопировать другой UF2-файл (например, blink_simple.uf2), но ничего не происходило. Подключение последовательной консоли показало следующее:

Invalid PSRAM ID: 0
PSRAM setup failed
Press any key to reset.

Очевидно, что старая прошивка, ожидавшая PSRAM, продолжала работать, а копирование различных UF2-файлов (blink_simple, CircuitPython…) не давало эффекта.

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

Решение для восстановления заблокированной Raspberry Pi Pico 2 / платы RP2350 заключается в простом скачивании и копировании flash_nuke.uf2 (файл идентичен для RP2040 и RP2350) на диск RP2350 компьютера, что автоматически сотрёт флеш-память и восстановит работоспособность платы. Это всё.

По-видимому, прошивка RISC-V Linux создаёт разделы на плате, которые не удаляются при копировании нового UF2-файла при работе программы из флеш-памяти. Однако flash_nuke выполняется однократно из ОЗУ и не подвержен этому ограничению. Исходный код доступен @ https://github.com/raspberrypi/pico-examples/blob/master/flash/nuke/ , а следующая строка в CMakeLists.txt принудительно запускает его из ОЗУ:

pico_set_binary_type(flash_nuke no_flash)

Решение было найдено через раздел комментариев на CNX Software и форумы Raspberry Pi , где можно узнать подробности о внутренних процессах.

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments