目 录CONTENT

文章目录

使用Arduino开发板给3D打印机主控芯片刷入bootloader

成培培
2026-01-22 / 0 评论 / 0 点赞 / 7 阅读 / 0 字

前情提要:创想三维3D打印机Ender-3S升级Klipper固件
之前我想给我的打印机更新Klipper固件,结果因为出厂的主控芯片不带Bootloader,导致我没发串口线刷固件,经过一番折腾还是决定买块Arduino Nano开发板来解决Bootloader的问题,正常其实应该买个USBasp下载器,不过买个开发板我以后还能玩,顺便学习下Arduino也好。

给开发板刷ArduinoISP

之前本来准备折腾stm32刷入ArduinoISP的,见这篇博文:Arduino环境下开发STM32
虽然可能行不通,不过Arduino环境还是搭建起来了,接着这里开始刷就简单了,我这个开发板type-c接口是支持串口的,所以直接用A to C线把它和电脑连起来就好了,然后打开ArduinoIDE选择示例程序:
https://www.chengpei.top/upload/ArduinoISP_program.png
弹出了新的窗口,工具里选择开发板和端口,就可以直接点击左上角的验证和上传把代码烧录到你的开发板上了,成功后这块开发板就变成了一个ISP下载器,可以代替USBasp了

硬件接线

电脑和开发板已经通过串口连接了,剩下的就是开发板和打印机主板连接了,其实就是ISP的6根线:

Arduino Nano 引脚 打印机主板 ISP 引脚
D11 MOSI
D12 MISO
D13 SCK
D10 RESET
GND GND
5V VCC(可选,不推荐)

VCC不推荐大概是怕供电不稳吧,但是前提是主板有单独供电,信号这边共地即可
这里差点踩坑,本来以为开发板的ISP接口和打印机主板的ISP接口一一对应连接即可,其实是错误的!上表前3个引脚开发板上跟ISP引脚确实对应,但是D10和开发板的RESET并不对应,所以主板ISP的RESET引脚必须拉线和开发板的D10引脚连起来

原厂固件备份

所有线接好后,刷入bootloader前第一步我准备把原厂固件备份一下,因为刷bootloader时原厂固件就没了

# 先测试一下线路是否正常
avrdude -c arduino \
  -P /dev/ttyUSB0 \
  -b 19200 \
  -p m1284p \
  -v
  
# 读取并保存 Fuse 位
avrdude -c arduino -P /dev/ttyUSB0 -b 19200 -p m1284p \
-U lfuse:r:lfuse.hex:h \
-U hfuse:r:hfuse.hex:h \
-U efuse:r:efuse.hex:h

# 完整备份 EEPROM
avrdude -c arduino -P /dev/ttyUSB0 -b 19200 -p m1284p \
-U eeprom:r:eeprom.bin:r

# 尝试读取 Flash
avrdude -c arduino -P /dev/ttyUSB0 -b 19200 -p m1284p \
-U flash:r:flash.bin:r

如果读取Flash失败了,大概是原厂主板锁死了 Flash 读取,那也只能放弃了,不过后续也可以通过编译Marlin固件还原,参考这篇博文:创想三维Ender-3S打印机Marlin固件编译
后续想还原用一下命令:

avrdude -c arduino -p m1284p \
-U flash:w:flash.bin:r \
-U eeprom:w:eeprom.bin:r \
-U lfuse:w:0xFF:m \
-U hfuse:w:0xD6:m \
-U efuse:w:0xFD:m

获取optiboot_atmega1284p.hex刷入

备份好后就准备正式给打印机刷入bootloader了,首先要找到bootloader,由于打印机主控是ATmega1284P,Arduino官网并没有直接支持这个芯片,得着第三方开源项目Sanguino来获取这个芯片的相关程序
github地址:https://github.com/Lauszus/Sanguino
从他的描述页面找到板卡管理器地址:
https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json
添加到ArduinoIDE设置的其他开发板管理器地址里,就跟之前添加STM32的一样,添加好后在开发板管理器里搜索Sanguino并安装,工具里就可以选择这个开发板以及打印机对应的主控芯片型号了,再选好端口,以及编程器:Arduino as ISP,就可以点击烧录引导程序来开始刷入bootloader了

刷入Klipper

bootloader成功刷入后,就可以接着我这边的klipper下位机安装的步骤进行下去了:
Klipper安装-下位机安装

不过我还没开始搞,开发板还在路上,先记笔记后续更新结果。。。

0

评论区