Исправление незапуска прошивки 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
- Используйте одну команду для изменения
~/katapult/src/rp2040/main.c(同时替换数值与注释):
sed -i 's/1000 \* 256);/1000 * 256) * 6;/; s|// 1ms|// 6ms|' ~/katapult/src/rp2040/main.c
- Перекомпиляция (в menuconfig выберите RP2040 и соответствующий интерфейс согласно исходному способу связи):
cd ~/katapult
make menuconfig
make
Скомпилированный продукт находится в ~/katapult/out/ В каталоге просто перезапишите загрузочную прошивку.
Изменение исходного кода Klipper
- Используйте одну команду для изменения
~/klipper/src/rp2040/main.c(同时替换数值与注释):
sed -i 's/1000 \* 256);/1000 * 256) * 6;/; s|// 1ms|// 6ms|' ~/klipper/src/rp2040/main.c
- Перекомпиляция:
cd ~/klipper
make menuconfig
make
Скомпилированный продукт находится в ~/klipper/out/ Оглавление(klipper.bin или klipper.uf2),перепрошить прошивку.
Проверить, вступили ли изменения в силу
- Проверьте, были ли изменены исходники:
grep -n "xosc_hw->startup" ~/katapult/src/rp2040/main.c ~/klipper/src/rp2040/main.c
Это старый друг, которого я знаю уже десять лет. 1000 * 256) * 6,注释为 // 6ms。
- Проверка после прошивки: после подачи питания плата инструмента должна нормально запуститься, Klipper должен нормально подключаться к MCU; при использовании Katapult после входа в режим прошивки устройство должно корректно определяться хостом.
Справочник по соответствующим настройкам
Прошивка встроенного ПО:Прошивка загрузчика Katapult для FLY-SHT36 v3 Компиляция прошивки:Прошивка Klipper для FLY-SHT36 v3 компиляция
Для остальных продуктов RP2040 (FLY-SB2040, FLY-MMU и т. д.) обращайтесь к соответствующему разделу прошивки продукта.