USB桥接CAN固件烧录
开始编译
- 需要使用安装好
klipper
服务的上位机 通过网络连接SSH - 并且将设备与上位机连接好
- 注意:请使用普通的上位机,比如树莓派 FLY派等。如果是魔改上位机(例如WiFi棒子、红米等),这类上位机因问题太多,无法为您提供技术支持
- 请不要使用
ROOT
用户
- 切换用户命令
su fly
- 请确保上位机可以正常联网
- 固件编译前需要使用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然后选择STMicroelectronics STM32回车
-
进入菜单Processor model,选择STM32F072回车
-
选择Bootloader offset,选择:8KiB bootloader
-
选择Communication interface,选择:USB to CAN bus bridge (USB on PA11/PA12)回车
-
选择了USB to CAN bus bridge (USB on PA11/PA12)回车,默认的这个参数不用去改CAN bus interface (CAN bus (on PB8/PB9))--->
-
请对照下图核对,确保与下图一致再进行编译
-
按
Q
键,出现 Save configuration,这时再按Y
键 -
现在应该保存了配置并且退出到了命令行界面
-
输入
make -j4
开始编译,时间有点长 -
最后输出下面的内容则编译成功
Linking out/klipper.elf
Creating hex file out/klipper.bin
确认是否进入烧录模式
- 请确保上位机可以正常联网,并确保下位机连接上位机的数据线具有数据传输功能。
- SSH连接连接到上位机后输入
lsusb
并且回车,如果出现下方图片中圈起来的信息,就可以进行下一步。- 如果没有任何信息反馈,这是上位机的系统问题,这边无能为力,你需要更换确定正常的系统或者更换上位机。
- 提示没有
lsusb
指令,可以执行此命令安装sudo apt-get install usbutils
1d50:6177
属于本次你要用到的设备。OpenMoko, Inc. stm32f072xb
后缀具有一定参考价值,但不作为判断依据。- 部分上位机可能因为系统问题,显示不全或者不显示。
- 如果输入
lsusb
指令能够显示设备,但是没有1d50:6177
,请尝试更换数据线,尝试将主板连接到上位机的其他USB口。
- 如果您的之前执行过上述步骤,并且成功烧录Klipper固件,主板运行正常,只是更新Klipper固件,请直接查看本页面右侧菜单栏中的
固件更新
章节。
必须在查询到1d50:6177
设备之后,才能进行下一步
烧录固件
- 安装烧录插件时需要联网,请确保您的上位机已经正常连接至互联网
- 如果已经安装过则无需再次安装
烧录插件安装
-
安装
pip install pyserial
pip install pyserial
-
如果提示
-bash: pip: command not found
需要执行sudo apt-get install pip
-
如果提示出现下方报错需要执行
pip install pyserial --break-system-packages
开始烧录
-
使用下方指令搜索你的设备ID,应出现下图所示ID(注:图中所示ID仅供参考,每张主板的ID都不相同)
ls /dev/serial/by-id/*
-
烧录固件使用下方代码,请确保已经编译好固件,请注意
=
后面没有空格。请将<你的主板ID>
替换为上一步查询到的IDcd ~/klipper/ && make flash FLASH_DEVICE=<你的主板ID>
-
下方是参考
-
烧录完成参考
固件更新
- USB固件的更新
- 桥接CAN固件的更新
-
使用下方指令搜索你的主板ID,应出现下图所示ID(注:图中所示ID仅供参考,每张主板的ID都不相同)
ls /dev/serial/by-id/*
下图中/dev/serial/by-id/usb-Klipper_stm32f072xb_43002C000951324757373520-if00
为主板的ID
-
更新USB固件需要在编译好最新固件后,输入下方命令更新,请注意
=
后面没有空格。请将<你的主板ID>
替换为上一步查询到的IDcd ~/klipper/ && make flash FLASH_DEVICE=<你的主板ID>
- 更新USB桥接CAN固件,则需要在编译好最新固件之后,输入下方命令重置进去Katapult。(如下图所示,图中的ID仅供参考,请以您配置文件中的id为准)
<你的 CANBUS UUID>
为您printer.cfg配置文件中——主板的CANBUS UUID
~/klippy-env/bin/python3 ~/katapult/scripts/flashtool.py -i can0 -r -u <你的 CANBUS UUID>
- 下图中
f95cee90e1f9
为主板的CANBUS UUID
-
重置进去Katapult后,使用下方指令搜索你的主板ID,应出现下图所示ID(注:图中所示ID仅供参考,每张主板的ID都不相同)
ls /dev/serial/by-id/*
下图中/dev/serial/by-id/usb-Klipper_stm32f072xb_43002C000951324757373520-if00
为主板的ID
-
请确保在新固件编译完成后,再执行烧录。请注意
=
后面没有空格。请将<你的主板ID>
替换为上一步查询到的IDcd ~/klipper/ && make flash FLASH_DEVICE=<你的主板ID>
刷错固件解决方法
- 主板断电,重新上电后快速点击两次主板重置即可
- 或者使用WINDOWS清理固件后重新刷BL