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

CANファームウェアのコンパイル

書き込み前の確認事項

現在のモードと操作手順の確認

  • 重要:ツールボードが現在 Klipper-CANモード である場合、ファームウェアをコンパイルした後、コマンドで直接書き込むことができます。このコマンドは自動的に Katapult にリセットして書き込みを完了します。
  • 出荷時状態:ボードには CANモードKatapultファームウェアがプリインストールされており、速度は 1M です。
  • 状態確認(LED確認):基板上の LED が点滅している場合(下図参照)、Katapult モードであり、書き込みが可能です。
    Loading...
  • モード異常:LED点滅しない 場合、ファームウェアが Katapult ではないことを示します。以下のリンクの手順に従って再書き込みを行う必要があります。 Katapult ファームウェアを書き込む

ディップスイッチの設定と物理接続

  1. ディップスイッチ設定:現在の状態に関わらず、まず基板上のディップスイッチを CAN モード に設定し、120Ω スイッチをオンにしてください(下図参照)。

    Loading...
  2. デバイス接続:CANケーブルを使用して、ツールボードを UTOC またはブリッジファームウェアが書き込まれた メインボード に接続します。配線は下図を参照してください。

    Loading...
  3. 重要確認(ターミネータ抵抗): 完全に電源を切った 状態で、テスターを使用して CAN_HCAN_L ピン間の抵抗を測定してください。

    デバイス操作説明
    ツールボード120Ω と表示されたジャンパピンを挿入します。
    メインボードメインボードに接続する場合、同様に 120Ω ジャンパピンを挿入してください。
    UTOCモジュール抵抗が内蔵されています。

    確認方法:

    1. 完全に電源を切った状態を保ちます。
    2. テスターを使用して、ツールボードのCANポートの CAN-HとCAN-L 間の抵抗を測定します。
    3. 結果の判断:
      • 約60Ω:正常です。両端の抵抗が正しく接続されています。
      • 約140Ω:CAN-HとCAN-Lが逆接続されている可能性があります。
      • 約120Ω:120Ω が接続されていないか、断線しています。
      • 約40Ω:余分な抵抗が接続されている可能性があります。中間ノードを確認してください。

コンパイルを開始

ファームウェアコンパイル簡易ガイド

注意事項

  • ネットワーク: 上位機(Raspberry Piなど)がネットワークに接続されていることを確認してください。
  • ログイン方法: SSH を使用してネットワーク経由でログインし、シリアルポートは無効にしてください。
  • 入力方法: キーボードを英数半角モードに設定してください。

SSHログインとユーザー切り替え

MobaXterm、PuTTYなどのツールを使用してSSHで上位機にログインします。

ユーザー切り替え:

  • 通常システム(Raspberry Pi公式システムなど)
    root の使用は禁止されています。一般ユーザーに切り替えてください:
    su <ユーザー名>
  • FLY上位機(FlyOS-FASTシステム)
    root ユーザーでのみログイン可能です(パスワード: mellow)。

ファームウェアコンパイル操作ガイド

Klipperファームウェア設定画面ではキーボード操作のみサポートされており、マウスは使用できません。

キー機能
↑ / ↓カーソルを上下に移動し、メニュー項目を選択
Enter / スペース選択を確定、オプションをチェック、またはサブメニューに移動
ESC前のメニューに戻る
Q設定画面を終了
Y終了時に保存の確認があれば Y を押して設定を保存

ファームウェアのコンパイルを開始する

以下に、ファームウェアのコンパイル方法を説明します:

  • SSH接続後、以下のコマンドを入力してEnterキーを押してください:

    cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig
  • ここで、rm -rf ~/klipper/.config && rm -rf ~/klipper/outは以前のコンパイルデータとファームウェアを削除します

  • make menuconfigはファームウェアをコンパイルするコマンドで、実行後は以下の画面が表示されるはずです

    Loading...
  • Enable extra low-level configuration optionsを選択し、Enterキーを押してください

    Loading...
  • Micro-controller Architectureメニューに移動し、Raspberry Pi RP2040/RP235xを選択してEnterキーを押してください

    Loading...
  • Bootloader offsetを選択し、16KiB bootloaderを選択してください

    Loading...
  • Communication interfaceを選択し、CAN busを選択してください

    Loading...
  • (4) CAN RX gpio numberを選択し、4を削除して1を入力してください

  • (5) CAN TX gpio numberを選択し、5を削除して0を入力してください

    Loading...
  • マイクロコントローラ起動時に設定するGPIOピンを選択し、入力:
    !gpio5
    注意

    英文入力モードで入力してください

    !gpio5
    Loading...
    • 上図と照らし合わせて確認し、一致していることを確認してから次に進んでください
  • Qキーを押すと、Save configurationが表示されます。この状態でYキーを押してください
Loading...
  • これで設定が保存され、コマンドラインインターフェースに戻るはずです
  • 以下のコマンドを入力してコンパイルを開始してください。時間がかかります
make -j4
Loading...
  • 最後に以下の内容が出力されれば、コンパイルは成功です
  • Klipperのバージョンによっては、out/klipper.binが表示されれば成功を意味します
    Linking out/klipper.elf
    Creating bin file out/klipper.bin

IDを検索して書き込み

CANBus UUIDのクエリ

操作前の注意事項
  • 非印刷状態でIDクエリとファームウェア書き込み操作を実行することを推奨します。印刷プロセスへの干渉を避けるためです。
  • 同一のメインボード/ツールボードにおいて、Katapult (CANBoot) ファームウェアとKlipperファームウェアは同一のCAN IDを使用します。
前提条件

以下の条件を満たしていることを確認してください。満たされていない場合、CAN IDを正常に検索できない可能性があります。

  1. ホストコンピュータのCANネットワークが正しく構成されている
  2. ツールボードのCAN通信速度がホストコンピュータと完全に一致している (速度が一致しないと通信できません)
  3. lsusb コマンドを実行した後、1d50:606f デバイス (USB-CANアダプター) が表示される

検索コマンド (システムに応じて選択)

  • 通常のホストコンピュータ用検索コマンド
    ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
  • FLYホストコンピュータ用検索コマンド
    python3 ~/klipper/scripts/canbus_query.py can0

検索結果の説明

ケース1: Klipperファームウェアが書き込まれたメインボード/ツールボード

  • 表示内容: 1つのCAN IDが表示され、Application: Klipper と表示されます。
  • 説明: デバイスはKlipperファームウェアで動作しており、直接使用できます。このIDはメインボードのIDである可能性も、ツールボードのIDである可能性もあります。
  • 識別方法: ツールボードのCAN接続ケーブルを外してから再検索します。そのIDが消えた場合はツールボードのID、まだ残っている場合はメインボードのIDです。
Loading...

ケース2: メインボード + 書き込み待ちツールボード

  • 表示内容: 2つのCAN IDが表示されます。
  • 説明: メインボードはKlipperファームウェアで動作しており、ツールボードはCanBootファームウェアで動作しており、書き込みを待っています。
Loading...

ケース3: UTOC + 書き込み待ちツールボード

  • 表示内容: UTOC自体はIDを表示せず、ツールボードのIDのみを表示します。
  • 説明: UTOCはブリッジとして機能するのみで、ツールボードがCanBootモードにあることが必要です。
Loading...

ケース4: IDが表示されない

  • 表示内容: 何のIDも表示されません。
  • 考えられる原因:
    1. CANバスがKlipperによって占有されている
    2. ホストコンピュータのCAN0速度設定が間違っている
    3. 物理的な配線に異常がある
    4. デバイスがCanBootモードに入っていない
Loading...

重要ポイント
  • 書き込み待機状態: ツールボードがCanBootモードにあると、Application: CanBoot と表示され、ファームウェアLEDが点滅します。この状態でファームウェア書き込みが可能です。
  • ID占有時の処理: デバイスがKlipperファームウェアで動作しており、そのIDが設定ファイルに既に記述されている場合、そのIDは表示されません (Klipperによって占有されています)。再表示させるには、設定ファイルでそのIDをコメントアウトし、完全に電源を切って再起動する必要があります。
トラブルシューティング

UUIDをクエリできない場合は、以下を参照してください: CAN問題トラブルシューティングガイド

ファームウェア書き込み

書き込みコマンド

  1. 以下のコマンドの 241696050c56 を、実際にクエリしたUUIDに置き換えてください。
  2. 注意: -u パラメータの後にはスペースが必要です。
python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56

書き込み成功の確認

CAN Flash Success というメッセージが表示されれば、書き込み成功です:

Loading...

ファームウェア更新

更新方法

ファームウェアを更新する必要がある場合は、以下の手順を実行します:

  1. ファームウェアを再コンパイルする
  2. デバイスのCAN IDをクエリできること (またはKlipperがデバイスに接続されていること) を確認する
  3. 同じ書き込みコマンドを実行する
python3 ~/klipper/lib/canboot/flash_can.py -u <MCU ID>

更新成功例

Loading...

ファームウェアの起動確認

  • ファームウェアが正常に起動するとLEDが点灯します。
    Loading...
Loading...