CAN 固件编译
开始编译
- 需要使用安装好
klipper
服务的上位机 通过网络连接SSH - 并且将设备与上位机连接好
- 注意:请使用普通的上位机,比如树莓派 FLY派等,如果是魔改上位机因为问题太多这边无法提供太多帮助
- 请不要使用
ROOT
用户
- 请确保上位机可以正常联网
- 固件编译前需要使用SSH通过网络登录上位机
- 请不要使用串口工具登录上位机
Klipper固件编译配置页面操作说明
请确保键盘输入法为半角模式,即英文模式
- 键盘上键
↑
,下键↓
,用于上下移动光标来选中菜单项 - 确认键
Enter
或 空格键Space
,用于勾选菜单或进入子菜单 - 退出键
ESC
,用于返回上一级菜单 Q
键,用于退出Klipper固件配置页面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,输入:gpio17
-
按
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速率不正确,接线异常
- 第一种:刷了桥接固件的主板,出现一个ID并且提示
-
正常情况下需要烧录的工具板处于CANBOOT情况下则会提示
Application: CanBoot
并且对应的固件灯会闪烁。这个时候你需要烧录Klipper固件,否则无法连接!!! -
提示:如果是Klipper固件并且已经将ID填入配置里面后,ID将不会显示并且被Klipper占用,你需要屏蔽对应ID后彻底给主板断电重启一次。
warning- 如果没有查询的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会亮起来