前情提要:创想三维3D打印机Ender-3S升级Klipper固件
之前我想给我的打印机更新Klipper固件,结果因为出厂的主控芯片不带Bootloader,导致我没发串口线刷固件,经过一番折腾还是决定买块Arduino Nano开发板来解决Bootloader的问题,正常其实应该买个USBasp下载器,不过买个开发板我以后还能玩,顺便学习下Arduino也好。
给开发板刷ArduinoISP
之前本来准备折腾stm32刷入ArduinoISP的,见这篇博文:Arduino环境下开发STM32
虽然可能行不通,不过Arduino环境还是搭建起来了,接着这里开始刷就简单了,我这个开发板type-c接口是支持串口的,所以直接用A to C线把它和电脑连起来就好了,然后打开ArduinoIDE选择示例程序:

弹出了新的窗口,工具里选择开发板和端口,就可以直接点击左上角的验证和上传把代码烧录到你的开发板上了,成功后这块开发板就变成了一个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安装-下位机安装
不过我还没开始搞,开发板还在路上,先记笔记后续更新结果。。。
评论区