跳到主要内容

CAN 固件编译

开始编译

  • 需要使用安装好klipper服务的上位机 通过网络连接SSH
  • 并且将设备与上位机连接好
  • 注意:请使用普通的上位机,比如树莓派 FLY派等,如果是魔改上位机因为问题太多这边无法提供太多帮助
注意事项
  • 请不要使用ROOT用户
提示
  • 请确保上位机可以正常联网
  • 固件编译前需要使用SSH通过网络登录上位机
  • 请不要使用串口工具登录上位机

Klipper固件编译配置页面操作说明

提示

请确保键盘输入法为半角模式,即英文模式

  1. 键盘上键,下键,用于上下移动光标来选中菜单项
  2. 确认键Enter 或 空格键Space,用于勾选菜单或进入子菜单
  3. 退出键ESC,用于返回上一级菜单
  4. Q键,用于退出Klipper固件配置页面
  5. Y键,在退出Klipper固件配置页面时,如果有提示,则点击Y键保存配置文件
注意

如果配置页面选项比较少,请先勾选[ ] Enable extra low-level configuration options,用于显示部分隐藏选项

下面介绍如何编译固件:

  • 连接到SSH后输入下面的命令并回车:

    cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig
  • 其中 rm -rf ~/klipper/.config && rm -rf ~/klipper/out是删除之前编译数据与固件make menuconfig是编译固件,执行后应该出现下方界面

  • 选择Enable extra low-level configuration options并且回车

  • 进入菜单Micro-controller Architecture然后选择Raspberry Pi RP2040回车

  • 选择Bootloader offset,选择:16KiB bootloader

  • 选择Communication interface,选择:CAN bus

  • 选择(4) CAN RX gpio number,删除4输入1

  • 选择(5) CAN RX gpio number,删除5输入0

  • 选择GPIO pins to set at micro-controller startup,输入:!gpio5 请注意!是大写
  • Q 键,出现 Save configuration,这时再按 Y
  • 现在应该保存了配置并且退出到了命令行界面
  • 输入 make -j4 开始编译,时间有点长
  • 最后输出下面的内容则编译成功

    Linking out/klipper.elf
    Creating hex file out/klipper.bin

搜索设备

  • 请确保上位机可以正常联网
  • 请确保下位机连接上位机的数据线具有数据传输功能
  • SSH连接连接到上位机后输入lsusb并且回车,将可能出现下面三种情况
    • 显示已经识别到的USBS设备
    • 提示没有ls指令,可以执行此命令安装
      sudo apt-get install usbutils
    • 没有报错,没有其他信息(系统问题需要更换系统)
  • 输入lsusb后什么反应都没有,这是系统问题这边无能为力,你需要更换确定正常的系统
  • 如果出现下方图片中圈起来的信息,就可以进行下一步
  • 1d50:606f 属于本次你要用到的设备。后面的提示你不需要管,因为系统问题可能会导致他显示不全或者干脆不显示
  • 如果有两个1d50:606f,你需要确定为什么有两个,并且需要排除其中一个后重启系统
  • 两个1d50:606f会影响后续烧录与固件连接,如FLY MINI PAD则建议只使用板载UTOC不要其他CAN桥接设备
  • 如果没有1d50:606f,请自行检查数据线是否接好,固件有没有刷对。
注意事项

1d50:606f时候才能进行下一步

烧录固件

  • 烧录固件前使用XT30数据线将工具板连接到UTOC或者刷了桥接固件的主板,下方是参考接线图
  • 请注意拨码是否拨到对应地方
  • 请确保CAN H与CAN L在断电情况下使用万用表测量阻值在60Ω左右,如果是120Ω则需要把120Ω拨码打开,如果是40Ω左右需要将拨码关闭
提示
  • 找ID与刷固件都建议不要在打印过程中进行
  • 同一个主板或者工具板Katapult的CAN固件与Klipper的CAN固件他们ID完全一致
注意
  • 请确保上位机的can网络已经配置
  • lsusb后有1d50:606f时候才能使用下方命令搜索CAN ID
  • 工具版CAN速率要与上位机一致否则无法找到ID并且烧录
  • 执行下面的命令查询CANBus UUID:

    ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
    • 输入后会根据你机器出现以下几种情况,下方是参考

      • 第一种:刷了桥接固件的主板,出现一个ID并且提示Application: Klipper
      • 第二种:刷了桥接固件的主板并且搭配需要烧录固件的工具板,出现两个ID
      • 第三种:使用UTOC搭配需要烧录的工具板
      • 提示:UTOC是没有ID显示出来的
      • 第四种:没有ID提示,一般情况是被klipper占用,上位机CAN0速率不正确,接线异常
    • 正常情况下需要烧录的工具板处于CANBOOT情况下则会提示Application: CanBoot并且对应的固件灯会闪烁。这个时候你需要烧录Klipper固件,否则无法连接!!!

    • 提示:如果是Klipper固件并且已经将ID填入配置里面后,ID将不会显示并且被Klipper占用,你需要屏蔽对应ID后彻底给主板断电重启一次。

    注意
    • 如果没有查询的UUID,请看下方文档
    • CAN问题合集
  • 固件烧录

    • 将下面命令中的241696050c56替换为查找uuid中查找到的uuid,请注意-u后面有空格

      python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56
    • 如下图,出现CAN Flash Success则烧录成功

  • 如果需要更新固件只需要编译好固件后重新执行烧录指令就可以更新固件,但是请保证能找到ID或者Klipper已经连接上

    python3 ~/klipper/lib/canboot/flash_can.py -u  <MCU ID>

确认固件是否启动

  • 如果固件正常启动LED会亮起来