メインコンテンツにスキップ

RP2040 ファームウェアが起動しない修復

RP2040コントローラーを搭載したFLYツールボード(FLY-SHT36、FLY-SB2040、FLY-MMUなど)で、自作コンパイルしたKatapult / Klipperファームウェア後に起動しない、起動が不安定になる問題が発生した場合の修復方法です。出荷時ファームウェアはメーカーが提供しており、自作コンパイルしたファームウェアで問題が発生した場合のみ、このページを参照してください。

注意事項
  • 本ページは上級操作です。ソースコードを変更する前に、元のファームウェアをバックアップすることをお勧めします。
  • Katapult は BL ブートローダーファームウェアです。Katapult がインストールされ、それによって Klipper がブートされる場合、両方のファームウェアを修正することを推奨します。Katapult を使用していない場合は、Klipper のみを修正してください。

故障現象

  • 自作でコンパイルしたファームウェアを書き込んだ後、ツールボードが反応せず、USBが認識されない、またはCANに接続できない。
  • 電源投入後に偶発的に起動しないことがあり、電源を切って再投入を繰り返すと、たまに正常に戻ることがある。
  • Katapult が起動できない、またはホストから照会できない。
  • klippy.log 中提示は、MCUが接続できないか、起動異常であることを示しています。

よくある原因

RP2040起動コードは、 XOSC_STARTUP_DELAY レジスタは外部水晶発振器の安定待ち時間を設定します。RP2040リファレンスデザインでは1msに設定されており、KlipperとKatapultの上流デフォルトはどちらも 1ms

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

待機カウントが短すぎる場合、これにより起動失敗や動作が不安定になる可能性があります。

安定待ち時間を向上させる。 6ms(Raspberry Pi公式pico-sdkのデフォルトと一致し、スロー起動の水晶振動子に適合するためのものです):

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

Katapultソースコードの修正

  1. 次の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を使用する場合、書き込みモードに入った後、ホストに正常に認識されること。

関連設定参考

ファームウェア書き込みFLY-SHT36 v3 Katapult ブートファームウェアの書き込み ファームウェアコンパイルFLY-SHT36 v3 Klipper ファームウェアのコンパイル

その他のRP2040製品(FLY-SB2040、FLY-MMUなど)については、対応する製品の書き込み章を参照してください。

Loading...