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

Компиляция фирвэра 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
    2Micro-controller Architecture 选择 Raspberry Pi RP2040/RP235x
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    3Processor model 选择 rp2040
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    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) --->
    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) --->
    6CAN RX gpio number 设置为 1
    (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) --->
    (1) CAN RX gpio number
    7CAN TX gpio number 设置为 0
    (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) --->
    (1) CAN RX gpio number
    (0) CAN TX gpio number
    8CAN bus speed 默认使用 1M(1000000),无需修改

    默认 CAN 速率为 1M,对应值 1000000,使用 1M 时无需修改。

    • 1M:1000000
    • 500K:500000
    • 250K:250000

    请根据上位机的 CAN 网络速率选择;上位机、主板与同一总线上的所有 CAN 设备必须使用相同速率。

    (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) --->
    (1) CAN RX gpio number
    (0) CAN TX gpio number
    (1000000) CAN bus speed
    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) --->
    (1) CAN RX gpio number
    (0) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    10GPIO pins to set at micro-controller startup 设置为以下内容
    Loading...
    (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) --->
    (1) CAN RX gpio number
    (0) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (!gpio18) GPIO pins to set at micro-controller startup
    11按 Q 键退出配置界面
    (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) --->
    (1) CAN RX gpio number
    (0) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (!gpio18) GPIO pins to set at micro-controller startup
    12出现 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 与系统版本变化。

Загрузка фирвэра​

  • Перед загрузкой фирвэра подключите плату-инструмент с помощью кабеля XT30 к UTOC или к материнской плате с загруженным мостовым фирвэром; ниже приведена схема подключения.
  • Обратите внимание на то, правильно ли установлены переключатели.

Схема интерфейса KF​

Loading...
Отключение электроэнергии

Перед началом полностью выключите принтер и отключите его от источника питания, а также отсоедините USB-подключения, которые могут подавать питание на узлы CAN. Не вставляйте и не извлекайте жгуты проводов, не регулируйте терминальные резисторы и не прикасайтесь к клеммам при включённом питании.

Здесь «измерение при отключённом питании» не означает отключение CAN-линии. При измерении следует сохранять подключение CAN-линии и всех узлов на шине в соответствии с нормальным режимом эксплуатации, иначе измерение может показать только отдельный узел или отдельный терминальный резистор, что не отражает всю CAN-шину.

Установите мультиметр в режим измерения сопротивления и измерьте сопротивление между CAN-H и CAN-L:

Эталонные показанияОценка и обработка
≈ 60ΩНормально, обычно означает, что на каждом из двух физических концов шины установлен один 120Ω оконечный резистор
≈ 120ΩОбычно действует только один оконечный резистор; включите оконечный резистор на другом физическом конце в соответствии со схемой подключения изделия
≈ 40ΩОбычно активны три оконечных резистора; отключите лишние оконечные резисторы согласно схеме подключения изделия

Вышеуказанные значения приведены только для справки: точность мультиметра, контакт щупов и состояние жгута проводов могут вызывать погрешности измерений. Основное внимание следует уделять тому, к какому диапазону близко показание, а также тенденции изменения показаний после регулировки оконечного резистора; точное совпадение с табличными значениями не требуется.

Loading...

Запрос 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...

Проверка запуска фирвэра​

  • Если фирвэр запущен корректно, загорится LED.
    Loading...
Loading...