본문으로 건너뛰기

CAN 펌웨어 컴파일

플래시 전 주의사항

현재 모드와 작업 경로 확인

  • 중요 안내: 도구 보드가 현재 Klipper-CAN 모드인 경우, 펌웨어 컴파일 후 명령어를 통해 직접 플래시할 수 있습니다. 명령어가 자동으로 Katapult로 재설정하여 플래시를 완료합니다.
  • 출고 상태: 보드에는 CAN 모드Katapult 펌웨어가 미리 플래시되어 있으며, 속도는 1M입니다.
  • 상태 확인(LED 확인): 보드의 LED가 깜빡이는 경우(아래 그림 참조), Katapult 모드에 있음을 나타내며 플래시가 가능합니다.
    Loading...
  • 모드 이상: LED가 깜빡이지 않는 경우, 펌웨어가 Katapult가 아님을 의미합니다. 먼저 아래 링크 안내에 따라 재플래시해야 합니다: Katapult 펌웨어 플래시하기

DIP 스위치 설정 및 물리적 연결

  1. DIP 스위치 설정: 현재 상태와 관계없이, 보드의 DIP 스위치를 CAN 모드로 설정하고 120Ω 스위치를 켜십시오(아래 그림 참조).

    Loading...
  2. 장치 연결: CAN 케이블을 사용하여 도구 보드를 UTOC 또는 이미 브리지 펌웨어가 플래시된 메인보드에 연결하십시오. 배선은 아래 그림을 참조하십시오:

    Loading...
  3. 중요 점검(종단 저항): 완전히 전원이 차단된 상태에서, 멀티미터를 사용하여 CAN_HCAN_L 핀 사이의 저항을 측정하십시오.

    장치작업 설명
    도구 보드120Ω이라고 표시된 점퍼 캡을 찾아 끼우십시오.
    메인보드메인보드에 연결하는 경우, 마찬가지로 120Ω 점퍼 캡을 끼우십시오.
    UTOC 모듈내장 저항이 있습니다.

    점검 방법:

    1. 완전히 전원이 차단된 상태를 유지하십시오.
    2. 멀티미터를 사용하여 도구 보드 CAN 포트의 CAN-H와 CAN-L 사이의 저항을 측정하십시오.
    3. 결과 판단:
      • 약 60Ω: 정상입니다. 양단 저항이 올바르게 연결되었습니다.
      • 약 140Ω: CAN-H와 CAN-L이 반대로 연결되었을 수 있습니다.
      • 약 120Ω: 120Ω이 설치되지 않았거나 선이 끊어졌습니다.
      • 약 90Ω: 120Ω이 하나만 설치되었습니다.
      • 약 40Ω: 불필요한 저항이 있을 수 있습니다. 중간 노드를 확인하십시오.

컴파일 시작

펌웨어 컴파일 주의사항 및 작업 가이드

주의사항

📌 중요 전제 조건
  1. 네트워크 연결: 상위 컴퓨터(라즈베리 파이 등)가 네트워크에 연결되어 있는지 확인하세요.
  2. 접근 방식: 반드시 SSH를 통해 네트워크로 상위 컴퓨터에 로그인해야 하며, 시리얼 도구 사용은 금지됩니다.
  3. 사용자 권한: 상위 컴퓨터 시스템 유형에 따라 올바른 사용자 계정으로 작업하세요.
  4. 입력기: 키보드 입력기가 반각 모드(영문 모드) 인지 확인하세요.

SSH 로그인 및 사용자 전환

SSH로 상위 컴퓨터 로그인

SSH 도구(MobaXterm, PuTTY 등)를 사용하여 네트워크를 통해 상위 컴퓨터에 로그인하세요: SSH 연결 상세 튜토리얼 보기

시스템 유형에 따른 사용자 전환

적용 시스템:

  • 라즈베리 파이 공식 시스템
  • FLY 파이 Armbian 시스템
  • Klipper가 설치된 기타 시스템

사용자 권한 요구사항:

  • root 사용자 사용 금지
  • 반드시 일반 사용자로 전환하여 작업해야 함

전환 명령어:

  • 기타 시스템 (<username>을 사용자 이름으로 변경)

    su <username>
💡 팁

일반 사용자는 일반적으로 필요한 컴파일 권한을 가지고 있으며, root 사용자를 사용하면 권한 문제가 발생할 수 있습니다.


펌웨어 컴파일 설명

1. 키보드 작업 가이드

  • Klipper 펌웨어 구성 페이지에서는 다음 단축키만 사용할 수 있습니다:
  • 마우스를 직접 사용하여 작업할 수 없습니다!
기능 설명
↑ ↓ 방향키커서를 위아래로 이동하여 메뉴 항목 선택
Enter 또는 Space선택 확인/메뉴 항목 체크 또는 하위 메뉴 진입
ESC이전 단계 메뉴로 돌아가기
QKlipper 펌웨어 구성 페이지 종료
Y종료 시 프롬프트가 있으면 Y 키를 눌러 구성 저장

숨겨진 옵션 표시

⚠️ 숨겨진 옵션 표시

구성 페이지 옵션이 적다면 먼저 다음을 체크하세요:

[ ] Enable extra low-level configuration options

이 옵션은 일부 숨겨진 구성 옵션을 표시하는 데 사용됩니다.

펌웨어 컴파일 시작하기

아래는 펌웨어를 컴파일하는 방법을 설명합니다:

  • SSH에 연결한 후 아래 명령어를 입력하고 엔터를 누릅니다:

    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를 선택하고 엔터를 누릅니다.

    Loading...
  • Micro-controller Architecture 메뉴로 들어가 Raspberry Pi RP2040/RP235x를 선택하고 엔터를 누릅니다.

    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...

123

  • 마이크로 컨트롤러 시작 시 설정할 GPIO 핀 선택, 입력:
    !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 검색 및 플래시

장치 검색

  • 이제 상위 컴퓨터에 정상적으로 로그인한 상태라면 lsusb 명령어를 입력하여 장치를 검색할 수 있습니다. 다음과 같은 경우 중 하나가 발생할 수 있습니다.
    • lsusb 입력 시 ls 명령어를 찾을 수 없다는 메시지가 나오면, 아래 명령어를 입력하여 설치할 수 있습니다.
      sudo apt-get install usbutils
    • lsusb 입력 후 아무 반응이 없는 경우, 이는 시스템 문제로 해결이 불가능하므로 다른 정상적인 시스템으로 교체해야 합니다.
    • 아래 사진과 같은 정보가 나타납니다. 참고용이므로, 1d50:606f가 표시되는지만 확인하시면 됩니다.
      Loading...
  • 1d50:606f는 이번에 사용할 장치입니다.
  • 여러 개의 1d50:606f가 나타난다면, 하나를 제외하고는 제거해야 합니다. 그렇지 않으면 향후 플래싱 및 펌웨어 연결에 영향을 줄 수 있습니다. 예를 들어 FLY MINI PAD의 경우, 외부 CAN 브리지 장치가 아닌 내장된 UTOC를 사용하는 것이 좋습니다.
  • 만약 나타나지 않았다면, 케이블 연결 상태와 펌웨어가 올바르게 작성되었는지 스스로 확인하십시오.
참고 사항

1d50:606f가 나타날 경우에만 CAN ID 검색을 진행해야 합니다.

CANBus UUID 조회

작업 전 확인사항
  • 비인쇄 상태에서 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는 메인보드 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. 호스트 시스템의 CAN0 속도 설정 오류
    3. 물리적 배선 이상
    4. 장치가 CanBoot 모드로 진입하지 않음
Loading...

중요 안내
  • 플래시 대기 상태: 툴보드가 CanBoot 모드에 있을 때 Application: CanBoot가 표시되고 펌웨어 LED가 깜박이며, 이때 펌웨어 플래싱을 수행할 수 있습니다.
  • 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...

펌웨어 시작 확인

  • 펌웨어가 정상적으로 시작되면 LED가 켜집니다.
    Loading...
Loading...