CAN 固件编译
烧录前须知
确认当前模式与操作路径
- 重要说明:如果工具板当前已是 Klipper-CAN 模式.则可在编译固件后.直接通过指令烧录。指令将自动将其重置进入
Katapult并完成烧录。 - 出厂状态:板子预刷 CAN模式的
Katapult固件.速率为 1M。 - 状态判断(看LED):若板载 LED 闪烁(如下图).表明正处于
Katapult模式.可进行烧录。Loading... - 模式异常:若 LED 不闪烁.说明固件非
Katapult.您必须先按下方链接指引重刷: 点此烧录 Katapult 固件
设置拨码与物理连接
-
拨码设置:无论当前状态如何.请先将板载拨码开关设置为 CAN 模式.并且将
120Ω开关打开(如下图所示)。Loading... -
设备连接:使用CAN线.将工具板连接到 UTOC 或已刷好桥接固件的 主板 上。接线请参考下图:
Loading... -
关键检查(终端电阻):在 完全断电 情况下.使用万用表测量 CAN_H 与 CAN_L 引脚间的电阻。
设备 操作说明 工具板 找到并插上标有 120Ω的跳线帽。主板 如连接主板.请同样插上其 120Ω跳线帽。UTOC模块 自带电阻。 如何检查:
- 保持完全断电。
- 使用万用表测量工具板CAN口的 CAN-H与CAN-L 之间的电阻。
- 结果判断:
- 约60Ω:正常.两端电阻已正确连接。
- 约140Ω:可能CAN-H与CAN-L接反了。
- 约120Ω:没有安装
120Ω或者断线。 - 约40Ω:可能有多余的电阻.请检查中间节点。
开始编译
固件编译简明指南
注意事项
- 网络: 确保上位机(树莓派等)已联网
- 登录方式: 必须使用 SSH 通过网络登录,禁用串口
- 输入法: 保持键盘为英文半角模式
SSH登录与用户切换
使用 MobaXterm、PuTTY 等工具 SSH 登录上位机。
切换用户:
- 普通系统(树莓派官方系统等)
禁止使用root,需切换到普通用户:su <用户名> - FLY上位机(FlyOS-FAST系统)
仅支持root用户登录(密码:mellow)
固件编译操作指南
在 Klipper 固件配置界面中仅支持键盘操作,无法使用鼠标。
| 按键 | 功能 |
|---|---|
| ↑ / ↓ | 上下移动光标,选择菜单项 |
| Enter / 空格 | 确认选择、勾选选项或进入子菜单 |
| ESC | 返回上一级菜单 |
| Q | 退出配置界面 |
| Y | 退出时,如有提示则按 Y 保存配置 |
开始固件编译
下面介绍如何编译固件:
-
连接到SSH后输入下面的命令并回车:
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并且回车
Loading... -
进入菜单Micro-controller Architecture然后选择Raspberry Pi RP2040/RP235x回车
Loading... -
选择Bootloader offset,选择:16KiB bootloader
Loading... -
选择Communication interface,选择:CAN bus
Loading... -
选择
(4) CAN RX gpio number,删除4输入1 -
选择
(5) CAN TX gpio number,删除5输入0Loading...
- 选择GPIO pins to set at micro-controller startup,输入:
!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:
- 上位机CAN网络已正确配置
- 工具板CAN速率与上位机完全一致(速率不一致将无法通信)
- 执行
lsusb命令后能看到1d50:606f设备(USB-CAN适配器)
搜索命令(根据系统选择)
- 普通上位机
- Fly-FAST系统
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
python ~/klipper/scripts/canbus_query.py can0
搜索结果说明
情况一:已刷Klipper固件的主板/工具板
- 显示效果:显示一个CAN ID,并提示
Application: Klipper - 说明:设备已运行Klipper固件,可以直接使用。此ID可能是主板ID也有可能是工具板ID。
- 区分方法:断开工具板的CAN连接线后重新搜索。如果该ID消失,则属于工具板;如果该ID仍在,则属于主板。
Loading...
情况二:主板 + 待烧录工具板
- 显示效果:显示两个CAN ID
- 说明:主板运行Klipper固件,工具板运行CanBoot固件,等待烧录。
Loading...
情况三:UTOC + 待烧录工具板
- 显示效果:UTOC本身不显示ID,只显示工具板的ID
- 说明:UTOC仅作为桥接器,需确保工具板处于CanBoot模式。
Loading...
情况四:无ID显示
- 显示效果:无任何ID显示
- 可能原因:
- CAN总线被Klipper占用
- 上位机CAN0速率配置错误
- 物理接线异常
- 设备未进入CanBoot模式
Loading...
重要提示
- 待烧录状态:工具板处于CanBoot模式时会显示
Application: CanBoot且固件灯闪烁,此时可进行固件烧录。 - ID占用处理:如果设备已运行Klipper固件且ID已填入配置文件,ID将不会显示(被Klipper占用)。如需重新显示,需在配置中屏蔽该ID并彻底断电重启。
故障排查
如果无法查询到UUID,请参考: CAN问题排查指南
固件烧录
烧录命令
- 将下方命令中的
241696050c56替换为您实际查询到的UUID - 注意:
-u参数后需有空格
python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56
烧录成功确认
出现 CAN Flash Success 提示即表示烧录成功:
Loading...
固件更新
更新方法
当需要更新固件时,只需:
- 重新编译固件
- 确保能查询到设备CAN ID(或Klipper已连接设备)
- 执行相同的烧录命令
python3 ~/klipper/lib/canboot/flash_can.py -u <MCU ID>
更新成功示例
Loading...
确认固件是否启动
- 如果固件正常启动LED会亮起来
Loading...
Loading...