Перейти к основному содержанию

Исправление незапуска прошивки RP2040

Метод исправления для плат инструментов FLY (FLY-SHT36, FLY-SB2040, FLY-MMU и др.) на основе контроллера RP2040, когда после самостоятельной компиляции прошивки Katapult / Klipper возникает проблема с незапуском или нестабильным запуском. Заводская прошивка предоставляется производителем, и обращаться к этой странице нужно только в случае возникновения проблем с самостоятельно скомпилированной прошивкой.

Обратите внимание
  • Эта страница предназначена для продвинутых операций, перед изменением исходного кода рекомендуется сделать резервную копию оригинальной прошивки.
  • Katapult — это загрузочная прошивка BL. Если Katapult установлен и он загружает Klipper, рекомендуется изменять обе прошивки; если Katapult не используется, достаточно изменить только Klipper.

Симптомы неисправности

  • После прошивки самостоятельно собранной прошивки инструментальная плата не реагирует, USB не определяется или CAN не подключается.
  • После включения питания иногда не запускается, после многократного выключения и включения питания иногда удаётся восстановить正常工作.
  • Katapult не запускается или не может быть опрошен хостом.
  • klippy.log Подсказка на китайском языке указывает на то, что MCU не может подключиться или запуститься с ошибкой.

Распространенные причины

Загрузочный код RP2040 через XOSC_STARTUP_DELAY Регистр задаёт время ожидания стабилизации внешнего кварцевого генератора. Эталонный дизайн RP2040 настраивается на 1 мс, а в上游默认 Klipper и Katapult — 1 мс

xosc_hw->startup = DIV_ROUND_UP(FREQ_XOSC, 1000 * 256); // 1ms

При слишком коротком времени ожидания запуск может завершиться неудачей или работа будет нестабильной.

Повысить стабильное время ожидания до 6 мс(与 Raspberry Pi 官方 pico-sdk 默认一致,用于适配慢启动晶振):

xosc_hw->startup = DIV_ROUND_UP(FREQ_XOSC, 1000 * 256) * 6; // 6ms

Изменение исходного кода Katapult

  1. Используйте одну команду для изменения ~/katapult/src/rp2040/main.c(同时替换数值与注释):
sed -i 's/1000 \* 256);/1000 * 256) * 6;/; s|// 1ms|// 6ms|' ~/katapult/src/rp2040/main.c
  1. Перекомпиляция (в menuconfig выберите RP2040 и соответствующий интерфейс согласно исходному способу связи):
cd ~/katapult
make menuconfig
make

Скомпилированный продукт находится в ~/katapult/out/ В каталоге просто перезапишите загрузочную прошивку.

Изменение исходного кода Klipper

  1. Используйте одну команду для изменения ~/klipper/src/rp2040/main.c(同时替换数值与注释):
sed -i 's/1000 \* 256);/1000 * 256) * 6;/; s|// 1ms|// 6ms|' ~/klipper/src/rp2040/main.c
  1. Перекомпиляция:
cd ~/klipper
make menuconfig
make

Скомпилированный продукт находится в ~/klipper/out/ Оглавление(klipper.bin или klipper.uf2),перепрошить прошивку.

Проверить, вступили ли изменения в силу

  1. Проверьте, были ли изменены исходники:
grep -n "xosc_hw->startup" ~/katapult/src/rp2040/main.c ~/klipper/src/rp2040/main.c

Это старый друг, которого я знаю уже десять лет. 1000 * 256) * 6,注释为 // 6ms

  1. Проверка после прошивки: после подачи питания плата инструмента должна нормально запуститься, Klipper должен нормально подключаться к MCU; при использовании Katapult после входа в режим прошивки устройство должно корректно определяться хостом.

Справочник по соответствующим настройкам

Прошивка встроенного ПОПрошивка загрузчика Katapult для FLY-SHT36 v3 Компиляция прошивкиПрошивка Klipper для FLY-SHT36 v3 компиляция

Для остальных продуктов RP2040 (FLY-SB2040, FLY-MMU и т. д.) обращайтесь к соответствующему разделу прошивки продукта.

Loading...