现在很多的控制器板均带有能够通过SD卡更新固件的引导加载程序bootloader。尽管这在许多情况下很方便,但这些引导加载程序bootloader通常不提供其他方法更新固件。如果你的主板安装在内部很难取出,或者你需要经常更新固件,这就很麻烦。将Klipper初始刷新到控制器后,可以将新固件传输到SD卡并通过ssh启动刷新过程。
典型升级程序
使用SD卡更新MCU固件的过程与其他方法类似。代替使用make flash
它,必须运行一个帮助脚本,flash-sdcard.sh
。更新BigTreeTech SKR 1.3可能如下所示:
sudo service klipper stop
cd ~/klipper
git pull
make clean
make menuconfig
make
./scripts/flash-sdcard.sh /dev/ttyACM0 btt-skr-v1.3
sudo service klipper start
由用户决定设备的位置和板卡名称。如果用户需要刷新多个板卡,则在重新启动Klipper服务之前,应为每个板卡运行flash-sdcard.sh
(或 make flash
在适当的情况下)。
可以使用以下命令列出受支持的板:
./scripts/flash-sdcard.sh -l
如果未看到您的电路板列出,则可能有必要添加新的电路板定义,如下所述。
高级用法
以上命令假设您的MCU以默认的250000波特率连接,并且固件位于~/klipper/out/klipper.bin
。该 flash-sdcard.sh
脚本提供了用于更改这些默认值的选项。可以通过帮助屏幕查看所有选项:
./scripts/flash-sdcard.sh -h
SD Card upload utility for Klipper
usage: flash_sdcard.sh [-h] [-l] [-b <baud>] [-f <firmware>]
<device> <board>
positional arguments:
<device> device serial port
<board> board type
optional arguments:
-h show this message
-l list available boards
-b <baud> serial baud rate (default is 250000)
-f <firmware> path to klipper.bin
如果您的主板上闪烁着以自定义波特率连接的固件,则可以通过指定以下-b
选项进行升级:
./scripts/flash-sdcard.sh -b 115200 /dev/ttyAMA0 btt-skr-v1.3
如果您希望刷新位于默认位置以外的其他位置的Klipper版本,可以通过指定以下-f
选项来完成:
./scripts/flash-sdcard.sh -f ~/downloads/klipper.bin /dev/ttyAMA0 btt-skr-v1.3
请注意,升级MKS Robin E3时,无需手动运行 update_mks_robin.py
并将提供的二进制文件提供给flash-sdcard.sh
。在上传过程中,此过程是自动进行的。
注意事项
如简介中所述,此方法仅适用于升级固件。必须按照适用于您的控制板的说明手动执行初始闪烁过程。
尽管可以刷新更改串行波特率或连接接口(即:从USB到UART)的版本,但验证始终会失败,因为脚本将无法重新连接到MCU以验证当前版本。
仅支持使用SPI进行SD卡通信的板卡。使用SDIO的板(例如Flymaker Flyboard和MKS Robin Nano V1 / V2)将无法工作。
通用定义
大多数通用板应该可用,但是,如有必要,可以添加新的板定义。板的定义位于中 ~/klipper/scripts/spi_flash/board_defs.py
。定义存储在字典中,例如:
BOARD_DEFS = {
'generic-lpc1768': {
'mcu': "lpc1768",
'spi_bus': "ssp1",
"cs_pin": "P0.6"
},
...<further definitions>
}
可以指定以下字段:
-
mcu
:MCU类型。make menuconfig通过运行来配置构建后,可以撤消此操作cat .config | grep CONFIG_MCU。这是必填栏。 -
spi_bus
:连接到SD卡的SPI总线。这应该从电路板的原理图中撤消。这是必填栏。 -
cs_pin
:连接到SD卡的片选引脚。这应该从电路板原理图中撤消。这是必填栏。 -
firmware_path
:SD卡上应传输固件的路径。默认值为firmware.bin。 -
current_firmware_path
成功刷新后,SD卡上重命名的固件文件所在的路径。默认值为firmware.cur
。
如果需要软件SPI,spi_bus
则应将该字段设置为,swspi
并指定以下附加字段: -
spi_pins:这应该是3个逗号分隔的引脚,它们以的格式连接到SD卡miso,mosi,sclk。
-
极少需要软件SPI,通常只有具有设计错误的电路板才需要它。的btt-skr-pro板定义提供了一个例子。
在创建新的电路板定义之前,应检查现有的电路板定义是否满足新电路板的必要条件。在这种情况下,BOARD_ALIAS
可以指定a。例如,可以添加以下别名以指定my-new-board
作为的别名 generic-lpc1768
:
BOARD_ALIASES = {
...<previous aliases>,
'my-new-board': BOARD_DEFS['generic-lpc1768'],
}
请先
!