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

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

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

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

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

  • Сеть: Убедитесь, что хост-компьютер (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 для установки при запуске микроконтроллера, введите: gpio17
    Loading...
  • Нажмите клавишу Q. Появится окно Save configuration, затем нажмите клавишу Y.
Loading...
  • Теперь конфигурация должна быть сохранена, и вы вернетесь в интерфейс командной строки.
  • Введите следующую команду для начала компиляции. Это займет некоторое время:
make -j4
Loading...
  • Если в конце выводится следующий текст, компиляция прошла успешно.
  • В зависимости от версии Klipper достаточно наличия файла out/klipper.bin для подтверждения успеха.
    Linking out/klipper.elf
    Creating bin file out/klipper.bin

Поиск и подключение проводов

  • Перед прошивкой подключите плату инструментов к UTOC или основной плате с прошитым мостовым ПО с помощью кабеля XT30. Ниже приведена схема подключения для справки.

  • Убедитесь, что переключатели установлены в правильное положение.

    Loading...
  • Убедитесь, что сопротивление между CAN H и CAN L, измеренное мультиметром при отключенном питании, составляет около 60Ω. Если оно равно 120Ω, необходимо установить перемычку 120Ω. Если около 40Ω, перемычку нужно удалить.

    Loading...
  • После подключения платы инструментов к UTOR или основной плате с прошитым USB-мостом CAN с помощью кабеля XT30, на основной плате должен мигать светодиод.

ВНИМАНИЕ
  • Если светодиод не мигает, перепрошейте прошивку katapult: Прошить прошивку katapult
  • Если светодиод не мигает, после прошивки katapult выполните следующий шаг.

Поиск 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
  • Команда поиска для хост-компьютера 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 должен быть пробел.
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...