通过SSH更新Klipper固件导入主板

现在很多的控制器板均带有能够通过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'],
}
0
封面图
  • 评论1

    请先

    没有账号? 注册  忘记密码?

    社交账号快速登录