본문으로 건너뛰기

CAN 펌웨어 컴파일

컴파일 시작

펌웨어 컴파일 간단 가이드

주의사항

  • 네트워크: 상위 컴퓨터(라즈베리파이 등)가 인터넷에 연결되어 있는지 확인하세요.
  • 로그인 방식: 반드시 SSH를 통해 네트워크로 로그인하고, 시리얼 포트는 비활성화하세요.
  • 입력기: 키보드를 영문 반각 모드로 유지하세요.

SSH 로그인 및 사용자 전환

MobaXterm, PuTTY 등의 도구를 사용하여 상위 컴퓨터에 SSH로 로그인하세요.

사용자 전환:

  • 일반 시스템(라즈베리파이 공식 시스템 등)
    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 设置为 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
    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
    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) --->
    (4) CAN RX gpio number
    (5) 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) --->
    (4) CAN RX gpio number
    (5) 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) --->
    (4) CAN RX gpio number
    (5) CAN TX gpio number
    (1000000) CAN bus speed
    [*] Optimize stepper code for 'step on both edges'
    (!gpio13) GPIO pins to set at micro-controller startup
    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'
    (!gpio13) 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'
    (!gpio13) 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 与系统版本变化。

배선

  • 펌웨어를 굽기 전에 XT30 데이터 케이블로 툴 보드를 UTOC 또는 브리지 펌웨어가 설치된 메인보드에 연결하세요. 아래는 참조 배선도입니다.

    Loading...
전원 차단 작업

시작 전에 프린터를 완전히 종료하고 전원 공급을 차단한 후, CAN 노드에 전원을 공급할 수 있는 USB 연결도 분리하십시오. 전원이 켜진 상태에서 배선을 분리하거나 터미널 저항을 조정하거나 단자에 접촉하지 마십시오.

여기서의 "전원 차단 측정"은 CAN 라인을 분리하는 것이 아닙니다. 측정 시에는 CAN 라인과 버스 상의 각 노드가 정상 사용 방식대로 연결된 상태를 유지해야 하며, 그렇지 않으면 측정되는 것은 단일 노드 또는 단일 종단 저항에 불과할 수 있어 전체 CAN 버스를 대표할 수 없습니다.

멀티미터를 저항 모드로 설정하고, CAN-H와 CAN-L 사이의 저항값을 측정하세요:

참고 판독값판단 및 처리
60Ω 정상, 일반적으로 버스 물리 양쪽 끝에 각각 하나씩 있음을 의미합니다. 120Ω 터미널 저항
대략 120Ω 일반적으로 하나의 터미네이션 저항만 유효하므로, 제품 배선도를 따라 다른 물리적 말단의 터미네이션 저항을 활성화하십시오.
40Ω 일반적으로 세 개의 종단 저항이 유효하오니, 제품 배선도를 따라 초과되는 종단 저항을 꺼 주십시오.

위 수치는 참고용일 뿐이며, 멀티미터 정밀도, 테스트 리드 접촉 상태, 배선 상태에 따라 측정 오차가 발생할 수 있습니다. 판단의 핵심은 수치가 어느 범위에 가까운지, 그리고 종단 저항을 조정한 후 수치의 변화 추세입니다. 표의 수치와 완전히 일치할 필요는 없습니다.

Loading...
경고
  • LED 조명이 깜박이지 않으면 Katapult 펌웨어를 다시 플래시하십시오.:Katapult 펌웨어 플래시
  • LED 표시등이 깜박이지 않으면, Katapult 펌웨어를 플래시한 후 다음 단계를 진행하세요.

검색 ID 및 플래시

CANBus UUID 조회

작업 전 유의사항
  • 비출력 상태에서 ID 조회 및 펌웨어 플래싱 작업을 수행하여 인쇄 과정에 간섭이 없도록 권장합니다.
  • 동일 메인보드/툴보드의 Katapult(CANBoot) 펌웨어와 Klipper 펌웨어는 동일한 CAN ID를 사용합니다.
전제 조건

다음 조건이 충족되지 않으면 CAN ID를 정상적으로 검색할 수 없습니다.

  1. 호스트 PC의 CAN 네트워크가 올바르게 구성되어 있어야 함
  2. 툴보드의 CAN 속도가 호스트 PC와 완전히 일치해야 함(속도가 일치하지 않으면 통신 불가)
  3. lsusb 명령 실행 후 1d50:606f 장치(USB-CAN 어댑터)가 보여야 함

검색 명령어(시스템에 따라 선택)

  • 일반 호스트 PC 검색 명령어
    ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
  • FLY 호스트 PC 검색 명령어
    python3 ~/klipper/scripts/canbus_query.py can0

검색 결과 설명

상황 1: Klipper 펌웨어가 이미 플래싱된 메인보드/툴보드

  • 표시 효과: 하나의 CAN ID가 표시되고 Application: Klipper 안내 표시
  • 설명: 장치가 이미 Klipper 펌웨어를 실행 중이며 바로 사용 가능합니다. 이 ID는 메인보드 ID일 수도 있고 툴보드 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. 호스트 PC의 CAN0 속도 설정 오류
    3. 물리적 배선 이상
    4. 장치가 CanBoot 모드로 진입하지 않음
Loading...

중요 안내
  • 플래싱 대기 상태: 툴보드가 CanBoot 모드일 때 Application: CanBoot가 표시되고 펌웨어 LED가 깜빡이며, 이때 펌웨어 플래싱이 가능합니다.
  • ID 점유 처리: 장치가 이미 Klipper 펌웨어를 실행 중이고 ID가 설정 파일에 입력되어 있으면 ID가 표시되지 않습니다(Klipper에 점유됨). 다시 표시하려면 설정에서 해당 ID를 비활성화하고 완전히 전원을 차단한 후 재부팅해야 합니다.
장애 진단

UUID를 조회할 수 없는 경우 다음을 참조하십시오: CAN 문제 해결 가이드

펌웨어 플래싱

플래싱 명령어

  1. 아래 명령어의 241696050c56를 실제 조회한 UUID로 바꾸십시오
  2. 참고: -u 매개변수 뒤에 공백이 있어야 합니다
버전 설명
  • FlyOS-FAST 1.3.8 이상 또는 2026년 4월 9일 이후 Klipper를 업데이트한 시스템은 새 명령어를 사용하십시오:

    python3 ~/klipper/lib/katapult/flashtool.py -u 241696050c56
  • 구버전 시스템(FAST 1.3.8 이전 또는 2026년 4월 9일 이전에 Klipper를 업데이트하지 않은 경우)은 구 명령어를 사용하십시오:

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

플래싱 성공 확인

CAN Flash Success 안내가 나타나면 플래싱 성공입니다:

Loading...

펌웨어 업데이트

업데이트 방법

펌웨어 업데이트가 필요할 때는 다음만 하면 됩니다:

  1. 펌웨어 재컴파일
  2. 장치 CAN ID 조회 가능 여부 확인(또는 Klipper가 장치에 연결되어 있어야 함)
  3. 동일한 플래싱 명령어 실행
버전 설명
  • FlyOS-FAST 1.3.8 이상 또는 2026년 4월 9일 이후 Klipper를 업데이트한 시스템

    python3 ~/klipper/lib/katapult/flashtool.py -u <MCU ID>
  • 구버전 시스템(FAST 1.3.8 이전 또는 2026년 4월 9일 이전에 Klipper를 업데이트하지 않은 경우):

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

업데이트 성공 예시

Loading...

펌웨어가 시작되었는지 확인

  • 펌웨어가 정상적으로 부팅되면 LED가 계속 켜집니다

    Loading...
Loading...