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

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

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

  • Требуется ПК с установленным и запущенным сервисом klipper Подключение через SSH по сети

  • Убедитесь, что устройство правильно подключено к ПК

  • Важно: используйте обычный ПК, например, Raspberry Pi или FLY-пай. Если вы используете модифицированный ПК (например, Wi-Fi адаптер, Redmi и т.д.), то из-за большого количества проблем мы не сможем предоставить вам техническую поддержку

    заметка
  • Для переключения с пользователя ROOT на обычного пользователя введите следующую команду

  • Не используйте пользователя ROOT

  • Для пользователя fly просто введите: su fly. Для других пользователей замените <ваше имя пользователя> на имя пользователя вашего ПК!

su <имя пользователя вашего ПК>

:::

подсказывать
  • 请确保上位机可以正常联网
  • 固件编译前需要使用SSH通过网络登录上位机
  • 请不要使用串口工具登录上位机

Klipper固件编译和配置页面操作说明

подсказывать

请确保键盘输入法为半角模式,即英文模式

  1. 键盘上键,下键,用于上下移动光标来选中菜单项
  2. 确认键Enter 或 空格键Space,用于勾选菜单或进入子菜单
  3. 退出键ESC,用于返回上一级菜单
  4. Q键,用于退出Klipper固件配置页面
  5. Y键,在退出Klipper固件配置页面时,如果有提示,则点击Y键保存配置文件
заметка

如果配置页面选项比较少,请先勾选[ ] Enable extra low-level configuration options,用于显示部分隐藏选项

Вот как скомпилировать прошивку:

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

    cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig
  • Где rm -rf ~/klipper/.config && rm -rf ~/klipper/out — это удаление предыдущих данных компиляции и прошивки, а make menuconfig — это команда для компиляции прошивки. После выполнения команды должно появиться следующее окно:

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

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

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

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

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

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

  • Выберите GPIO pins для установки при старте микроконтроллера, введите: !gpio18
заметка

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

  • Сравните с приведённым изображением, убедитесь, что всё совпадает, и продолжайте далее

  • Нажмите Q, появится Сохранить конфигурацию, затем нажмите Y

  • Теперь должна быть сохранена конфигурация и вы вернулись к командной строке

  • Введите make -j4 для начала компиляции, процесс займёт некоторое время

  • В конце вывода следующего содержимого — компиляция успешно завершена

    Linking out/klipper.elf
    Creating hex file out/klipper.bin

Настройка верхнего уровня

заметка

Если ваш верхний уровень — это FLY, выполнение шагов «Настройка верхнего уровня» не требуется

заметка

Если ваш верхний уровень — это не FLY, выполните следующие шаги

Проверка поддержки CAN на верхнем уровне

  • Для FLY верхнего уровня это действие не требуется
  • Если ваша система — Ubuntu, необходима Конфигурация CAN0 для Ubuntu, эта документация пока не обновлена
  • Введите следующую команду для проверки поддержки CAN в системе
sudo modprobe can && echo "Ваш ядро поддерживает CAN" || echo "Ваше ядро не поддерживает CAN"
  • После ввода команды, если ваше ядро поддерживает CAN, будет показано: Ваш ядро поддерживает CAN; если нет, будет показано: Ваше ядро не поддерживает CAN.
подсказывать

Если выводится Ваш ядро поддерживает CAN, можно перейти к следующему шагу настройки CAN0. Если выводится Ваше ядро не поддерживает CAN, пожалуйста, измените операционную систему или устройство верхнего уровня!

Настройка CAN0

  • Этот командный блок перезаписывает существующую конфигурацию CAN0, после выполнения требуется перезагрузка системы
  • Выберите один из вариантов в зависимости от实际情况 (По умолчанию Klipper использует скорость CAN 1М, рекомендуется использовать скорость 1М)
заметка

Для скорости 1М введите следующую команду

sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig $IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 1000000
pre-up ip link set can0 txqueuelen 1024
EOF
заметка

Для скорости 500К введите следующую команду

sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 500000
up ifconfig $IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 500000
pre-up ip link set can0 txqueuelen 1024
EOF
  • Перезагрузите устройство
sudo reboot

Поиск устройства

  • Убедитесь, что ПК может нормально подключаться к сети Интернет, и убедитесь, что периферийное устройство подключено к ПК с помощью кабеля, поддерживающего передачу данных.
  • После подключения к ПК через SSH введите команду lsusb и нажмите Enter. Если появляется информация, заключенная в круглые скобки на изображении ниже, можно переходить к следующему шагу.
    • Если никакой информации не выводится, это проблема системы ПК, и мы бессильны. Вам нужно заменить систему, которая работает корректно, или заменить ПК.
    • Если появляется сообщение об отсутствии команды lsusb, выполните эту команду для установки:
      sudo apt-get install usbutils
  • 1d50:606f принадлежит устройству, которое вам предстоит использовать. «OpenMoko, Inc. Geschwister Schneider CAN adapter» после этого кода имеет определенную справочную ценность, но не является критерием для принятия решения.
    • Некоторые ПК могут отображать информацию неполностью или вообще не отображать ее из-за системных проблем.
    • Если при вводе команды lsusb устройство видно, но не отображается 1d50:606f, попробуйте заменить кабель, а также подключить материнскую плату к другим USB портам ПК.
  • Если вы ранее выполнили вышеописанные шаги и успешно записали прошивку Klipper, а материнская плата работает нормально, и вам нужно только обновить прошивку Klipper, обратитесь к разделу «Обновление прошивки» в правом меню этой страницы.
Важные замечания

Продолжение возможно только при наличии 1d50:606f.

Запись прошивки

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

Схема подключения интерфейса KF

Схема подключения интерфейса XT30

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

::::предупреждение

  • Рекомендуется не выполнять поиск ID и прошивку固件 во время печати
  • CAN-программное обеспечение для платы Katapult и Klipper с одинаковыми ID на одной материнской плате полностью совпадают

::::

::::предупреждение

  • Убедитесь, что CAN-сеть верхнего уровня уже настроена
  • При наличии 1d50:606f после выполнения команды lsusb можно использовать следующую команду для поиска ID CAN
  • Скорость CAN для инструментальной платы должна совпадать с верхним уровнем, иначе ID найти и записать невозможно

::::

  • Для запроса UUID CANBus выполните следующую команду:

    ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
    • После ввода появится одно из следующих состояний (ниже представлены примеры):

      • Первый случай: материнская плата с прошивкой моста показывает один ID и выводит сообщение Application: Klipper
      • Второй случай: материнская плата с прошивкой моста вместе с инструментальной платой, требующей записи, показывает два ID
      • Третий случай: использование UTOC вместе с инструментальной платой, требующей записи
      • Примечание: UTOC не показывает ID
      • Четвертый случай: отсутствие ID, обычно связано с занятостью Klipper, неправильной скоростью CAN0 на верхнем уровне или аномалиями подключения
    • Обычно инструментальная плата в режиме CANBOOT выведет Application: CanBoot, и соответствующий индикатор прошивки будет мигать. В этом случае необходимо записать прошивку Klipper, иначе подключение невозможно!!!

    • Примечание: если у вас уже установлена прошивка Klipper и ID добавлено в конфигурацию, ID не будет показан и будет занят Klipper. Необходимо временно отключить соответствующий ID и полностью выключить и перезагрузить материнскую плату.

::::предупреждение

  • Если UUID не найден, см. документацию ниже
  • Сборник проблем CAN

::::

  • Прошивка прошивки

    • Замените 241696050c56 в следующей команде на найденный UUID (обратите внимание на пробел после -u)

      python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56
    • При успешной записи появится CAN Flash Success

  • Для обновления прошивки достаточно скомпилировать новую прошивку и повторно выполнить команду записи, но убедитесь, что ID можно найти или Klipper уже подключен

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

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

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