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

Исправление незапуска прошивки 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 мс (это значение по умолчанию в официальном pico-sdk для Raspberry Pi; подходит для кристаллических генераторов с медленным запуском):

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...