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

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

Перед прошивкой

Подтверждение текущего режима и пути операций

  • Важное примечание: Если плата инструментов уже находится в режиме Klipper-CAN, после компиляции прошивки её можно прошить напрямую с помощью команды. Команда автоматически переведёт её в режим Katapult и завершит прошивку.
  • Заводское состояние: Плата предварительно прошита прошивкой Katapult в режиме CAN со скоростью 1M.
  • Определение состояния (по светодиоду): Если встроенный светодиод мигает (как показано ниже), это означает, что плата находится в режиме Katapult и готова к прошивке.
    Loading...
  • Аномалия режима: Если светодиод не мигает, это означает, что прошивка не является Katapult. Сначала необходимо перепрошить её, следуя инструкциям по ссылке ниже: Нажмите здесь, чтобы прошить прошивку Katapult

Настройка переключателей и физическое подключение

  1. Настройка переключателей: Независимо от текущего состояния, сначала установите встроенные DIP-переключатели в режим CAN и включите переключатель 120Ω (как показано ниже).

    Loading...
  2. Подключение устройства: Используйте CAN-кабель для подключения платы инструментов к UTOC или основной плате, на которую уже прошит мостовой код. Подключение см. на рисунке ниже:

    Loading...
  3. Ключевая проверка (терминальный резистор): При полностью отключенном питании измерьте сопротивление между выводами CAN_H и CAN_L с помощью мультиметра.

    УстройствоИнструкции по эксплуатации
    Плата инструментовНайдите и установите перемычку с маркировкой 120Ω.
    Основная платаЕсли подключена к основной плате, также установите её перемычку 120Ω.
    Модуль UTOCИмеет встроенный резистор.

    Как проверить:

    1. Убедитесь, что питание полностью отключено.
    2. Измерьте сопротивление между CAN-H и CAN-L CAN-порта платы инструментов с помощью мультиметра.
    3. Интерпретация результатов:
      • Около 60Ω: Нормально. Терминальные резисторы на обоих концах правильно подключены.
      • Около 140Ω: Возможно, CAN-H и CAN-L перепутаны.
      • Около 120Ω: Перемычка 120Ω не установлена или есть обрыв цепи.
      • Около 40Ω: Возможно, присутствует лишний резистор. Проверьте промежуточные узлы.

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

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

Важные моменты

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

Вход по SSH и смена пользователя

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

Смена пользователя:

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

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

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

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

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

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

  • После подключения по SSH введите следующую команду и нажмите Enter:

    cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig
  • Команда rm -rf ~/klipper/.config && rm -rf ~/klipper/out удаляет предыдущие данные компиляции и прошивку

  • make menuconfig запускает компиляцию прошивки. После выполнения должно появиться следующее окно:

    Loading...
  • Выберите Enable extra low-level configuration options и нажмите Enter

    Loading...
  • Перейдите в меню Micro-controller Architecture и выберите Raspberry Pi RP2040/RP235x, затем нажмите Enter

    Loading...
  • Выберите Bootloader offset, выберите: 16KiB bootloader

    Loading...
  • Выберите Communication interface, выберите: CAN bus

    Loading...
  • Выберите (4) CAN RX gpio number, удалите 4 и введите 1

  • Выберите (5) CAN TX gpio number, удалите 5 и введите 0

    Loading...
  • Выберите GPIO pins to set at micro-controller startup, введите:
    !gpio5
    заметка

    Пожалуйста, вводите в состоянии английской раскладки клавиатуры

    !gpio5
    Loading...
    • Пожалуйста, сверьтесь с изображением выше, убедитесь, что всё совпадает, прежде чем переходить к следующему шагу
  • Нажмите клавишу Q, появится Save configuration, затем нажмите клавишу Y
Loading...
  • Теперь конфигурация должна быть сохранена, и вы вернетесь в интерфейс командной строки
  • Введите следующую команду для начала компиляции. Это займет некоторое время.
make -j4
Loading...
  • Если в конце выводится следующее содержимое, компиляция прошла успешно
  • В зависимости от версии Klipper, успехом считается появление out/klipper.bin
    Linking out/klipper.elf
    Creating bin file out/klipper.bin

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

Запрос UUID CANBus

Перед началом работы
  • Рекомендуется выполнять операции запроса 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

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

Случай 1: Плата/плата инструмента с уже прошитым Klipper

  • Отображение: Показывает один CAN ID с пометкой Application: Klipper
  • Объяснение: Устройство работает на прошивке Klipper и готово к использованию. Этот ID может принадлежать как основной плате, так и плате инструмента.
  • Как определить: Отсоедините CAN-кабель от платы инструмента и выполните поиск снова. Если ID исчез — это 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 должен быть пробел.
python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56

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

Сообщение CAN Flash Success указывает на успешную прошивку:

Loading...

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

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

При необходимости обновить прошивку просто:

  1. Пересоберите прошивку.
  2. Убедитесь, что можно запросить CAN ID устройства (или что Klipper подключен к устройству).
  3. Выполните ту же команду прошивки.
python3 ~/klipper/lib/canboot/flash_can.py -u <MCU ID>

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

Loading...

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

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