Перейти к основному содержанию

Компиляция прошивки CAN

Начало компиляции

Краткое руководство по компиляции прошивки

Примечания

  • Сеть: Убедитесь, что хост-компьютер (Raspberry Pi и т.п.) подключен к сети.
  • Способ входа: Необходимо входить через SSH по сети, последовательный порт отключен.
  • Раскладка клавиатуры: Держите клавиатуру в английском полуширинном режиме

Вход по SSH и переключение пользователей

Используйте MobaXterm, PuTTY и другие инструменты для входа по SSH на хост-компьютер.

Переключение пользователя:

  • Обычная система (официальная система Raspberry Pi и т.п.)
    Запрещено использовать root, необходимо переключиться на обычного пользователя:
    su <имя_пользователя>
  • FLY хост-компьютер (система FlyOS-FAST)
    Поддерживается только вход от пользователя root (пароль: mellow)

Руководство по компиляции прошивки

В интерфейсе конфигурации прошивки Klipper поддерживается только управление с клавиатуры, мышь использовать нельзя.

КлавишаФункция
↑ / ↓Перемещение курсора вверх/вниз, выбор пункта меню
Enter / ПробелПодтверждение выбора, отметка опции или вход в подменю
ESCВозврат в предыдущее меню
QВыход из интерфейса конфигурации
YПри выходе, если есть подсказка, нажмите Y для сохранения конфигурации

Начало компиляции прошивки

Ниже описано, как компилировать прошивку:

  1. Подключитесь по SSH, введите следующую команду и нажмите Enter:

    cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig

    Здесь rm -rf ~/klipper/.config && rm -rf ~/klipper/out используется для очистки предыдущей конфигурации компиляции и прошивки; make menuconfig используется для открытия интерфейса конфигурации прошивки Klipper.

  2. Настройте параметры по порядку, следуя приведенному ниже списку, переходя к следующему пункту только после завершения предыдущего.

    1启用 Enable extra low-level configuration options
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    2Micro-controller Architecture 选择 Raspberry Pi RP2040/RP235x
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    3Processor model 选择 rp2040
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    4Bootloader offset 选择 16KiB bootloader
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    5Communication Interface 选择 CAN bus
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    6CAN RX gpio number 设置为 4
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    7CAN TX gpio number 设置为 5
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    8CAN bus speed 设置为 1000000
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    9启用 Optimize stepper code for 'step on both edges'
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    10GPIO pins to set at micro-controller startup 设置为 gpio24
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    11GPIO state at micro-controller startup 选择 Not set

    此项是 FLYOS-Klipper 功能。通常保持 Not set;如需设置全部 GPIO 的启动状态,请先阅读 GPIO 启动状态使用说明

    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    12Q 键退出配置界面
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (CAN bus) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (gpio24) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    13出现 Save configuration 时按 Y 保存配置
    Quit
    Save configuration?
    (Y)es(N)o(C)ancel
  3. После завершения двух последних шагов выше нажмите Q для выхода из интерфейса конфигурации, затем нажмите Y для сохранения настроек.

  4. Вернувшись в командную строку, введите следующую команду и нажмите Enter, чтобы начать компиляцию:

    make -j4
    root@flyos-11e5f8 ~/klipper # make -j4
    Compiling out/src/../lib/can2040/can2040.o
    Compiling out/src/generic/canserial.o
    Compiling out/src/generic/canbus.o
    Compiling out/src/../lib/fast-hash/fasthash.o
    Compiling out/src/rp2040/hard_pwm.o
    Compiling out/src/rp2040/spi.o
    Compiling out/src/rp2040/i2c.o
    Preprocessing out/src/rp2040/rpxxxx_link.ld
    Building out/compile_time_request.o
    Version: XXXX
    Linking out/klipper.elf
    Creating bin file out/klipper.bin

    终端末尾出现 Linking out/klipper.elf Creating bin file out/klipper.bin,即表示编译成功。 实际编译时,部分 Compiling 行和 Version 会随 Klipper 与系统版本变化。

Подключение

  • Перед прошивкой подключите инструментальную плату к UTOC или материнской плате с мостовой прошивкой с помощью кабеля XT30. Ниже приведена схема подключения для справки.
    Loading...
  • Убедитесь, что при выключенном питании сопротивление между CAN H и CAN L, измеренное мультиметром, составляет около 60 Ом. Если оно равно 120 Ом, необходимо установить перемычку 120 Ом; если около 40 Ом, перемычку нужно удалить.
    Loading...
  • После подключения инструментальной платы к UTOC или материнской плате с мостовой прошивкой с помощью кабеля XT30 на материнской плате начнет мигать светодиод.
Внимание
  • Если светодиод не мигает, перепрошейте прошивку Katapult: Прошить прошивку Katapult
  • Если светодиод не мигает, после прошивки Katapult выполните следующий шаг.

Поиск ID и прошивка

Запрос UUID CAN-шины

Перед операцией
  • Рекомендуется выполнять запрос ID и прошивку вне режима печати, чтобы избежать помех процессу печати.
  • Прошивка Katapult (CANBoot) и прошивка Klipper для одной и той же платы/инструментальной платы используют одинаковый CAN ID.
Предварительные условия

Убедитесь, что выполнены следующие условия, иначе поиск CAN ID может быть невозможен:

  1. Сеть CAN на верхнем компьютере правильно настроена
  2. Скорость CAN инструментальной платы полностью совпадает со скоростью верхнего компьютера (при несовпадении скоростей связь невозможна)
  3. После выполнения команды lsusb должно отображаться устройство 1d50:606f (USB-CAN адаптер)

Команда поиска (выбор в зависимости от системы)

  • Команда поиска для обычного верхнего компьютера
    ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
  • Команда поиска для FLY верхнего компьютера
    python3 ~/klipper/scripts/canbus_query.py can0

Пояснение результатов поиска

Случай 1: Плата/инструментальная плата с прошивкой Klipper

  • Отображение: Отображается один CAN ID с указанием Application: Klipper
  • Пояснение: Устройство работает под управлением прошивки Klipper, можно использовать напрямую. Этот ID может принадлежать как основной плате, так и инструментальной плате.
  • Способ различения: Отключите CAN-кабель инструментальной платы и выполните поиск снова. Если этот ID исчезнет, он принадлежит инструментальной плате; если ID останется, он принадлежит основной плате.
Loading...

Случай 2: Основная плата + инструментальная плата, ожидающая прошивки

  • Отображение: Отображаются два CAN ID
  • Пояснение: Основная плата работает под управлением прошивки Klipper, инструментальная плата работает под управлением прошивки CanBoot, ожидает прошивки.
Loading...

Случай 3: UTOC + инструментальная плата, ожидающая прошивки

  • Отображение: Сам UTOC не отображает ID, отображается только ID инструментальной платы
  • Пояснение: UTOC выступает только в качестве моста, необходимо убедиться, что инструментальная плата находится в режиме CanBoot.
Loading...

Случай 4: ID не отображается

  • Отображение: Никакие ID не отображаются
  • Возможные причины:
    1. Шина CAN занята Klipper
    2. Ошибка конфигурации скорости CAN0 на верхнем компьютере
    3. Неисправность физического подключения
    4. Устройство не вошло в режим CanBoot
Loading...

Важное примечание
  • Состояние ожидания прошивки: Если инструментальная плата находится в режиме CanBoot, будет отображаться Application: CanBoot, а светодиод прошивки будет мигать. В этом состоянии можно выполнять прошивку.
  • Обработка занятости ID: Если устройство уже работает под управлением прошивки Klipper и ID указан в конфигурационном файле, ID не будет отображаться (занят Klipper). Для повторного отображения необходимо заблокировать этот ID в конфигурации и выполнить полное отключение и перезапуск.
Устранение неисправностей

Если не удается найти UUID, обратитесь к: Руководство по устранению неисправностей CAN

Прошивка

Команда прошивки

  1. Замените 241696050c56 в команде ниже на фактически найденный UUID
  2. Примечание: После параметра -u должен быть пробел
Информация о версии
  • FlyOS-FAST 1.3.8 и выше или системы, обновлявшие Klipper после 9 апреля 2026 года, используйте новую команду:

    python3 ~/klipper/lib/katapult/flashtool.py -u 241696050c56
  • Старые версии системы (FAST до 1.3.8 или Klipper не обновлялся до 9 апреля 2026 года), используйте старую команду:

    python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56

Подтверждение успешной прошивки

Появление сообщения CAN Flash Success означает успешную прошивку:

Loading...

Обновление прошивки

Метод обновления

Для обновления прошивки необходимо:

  1. Перекомпилировать прошивку
  2. Убедиться, что CAN ID устройства доступен для запроса (или Klipper подключен к устройству)
  3. Выполнить ту же команду прошивки
Информация о версии
  • FlyOS-FAST 1.3.8 и выше или системы, обновлявшие Klipper после 9 апреля 2026 года:

    python3 ~/klipper/lib/katapult/flashtool.py -u <MCU ID>
  • Старые версии системы (FAST до 1.3.8 или Klipper не обновлялся до 9 апреля 2026 года):

    python3 ~/klipper/lib/canboot/flash_can.py -u <MCU ID>

Пример успешного обновления

Loading...

Проверка запуска прошивки

  • Если прошивка запущена нормально, светодиод загорится.
    Loading...
Loading...