CAN 펌웨어 컴파일
플래싱 전 확인사항
현재 모드 및 작업 경로 확인
- 중요 안내: 툴 보드가 현재 Klipper-CAN 모드인 경우, 펌웨어 컴파일 후 명령어를 통해 직접 플래싱할 수 있습니다. 명령어가 자동으로
Katapult모드로 재설정하여 플래싱을 완료합니다. - 출고 상태: 보드에는 CAN 모드의
Katapult펌웨어가 미리 플래싱되어 있으며, 속도는 1M입니다. - 상태 확인(LED 확인): 보드의 LED가 깜빡이는 경우(아래 그림 참조),
Katapult모드에 있음을 의미하며 플래싱이 가능합니다.Loading... - 모드 이상: LED가 깜빡이지 않는 경우, 펌웨어가
Katapult가 아님을 의미합니다. 아래 링크 가이드에 따라 먼저 재플래싱해야 합니다: Katapult 펌웨어 플래싱하기
DIP 스위치 설정 및 물리적 연결
-
DIP 스위치 설정: 현재 상태와 관계없이, 먼저 보드의 DIP 스위치를 CAN 모드로 설정하고,
120Ω스위치를 켜십시오(아래 그림 참조).Loading... -
장치 연결: CAN 케이블을 사용하여 툴 보드를 UTOC 또는 브리지 펌웨어가 이미 플래싱된 메인보드에 연결하십시오. 배선은 아래 그림을 참조하십시오:
Loading... -
중요 점검(종단 저항): 완전히 전원이 차단된 상태에서, 멀티미터를 사용하여 CAN_H와 CAN_L 핀 사이의 저항을 측정하십시오.
장치 작업 설명 툴 보드 120Ω이라고 표시된 점퍼 캡을 찾아 끼우십시오.메인보드 메인보드에 연결하는 경우, 동일하게 120Ω점퍼 캡을 끼우십시오.UTOC 모듈 내장 저항이 있습니다. 점검 방법:
- 완전히 전원이 차단된 상태를 유지하십시오.
- 멀티미터를 사용하여 툴 보드 CAN 포트의 CAN-H와 CAN-L 사이의 저항을 측정하십시오.
- 결과 판단:
- 약 60Ω: 정상입니다. 양단 저항이 올바르게 연결되었습니다.
- 약 140Ω: CAN-H와 CAN-L이 반대로 연결되었을 수 있습니다.
- 약 120Ω:
120Ω저항이 설치되지 않았거나 선이 끊어졌을 수 있습니다. - 약 40Ω: 불필요한 저항이 있을 수 있습니다. 중간 노드를 확인하십시오.
컴파일 시작
펌웨어 컴파일 간단 가이드
주의사항
- 네트워크: 상위 기기(라즈베리 파이 등)가 인터넷에 연결되어 있는지 확인하세요.
- 로그인 방식: 반드시 SSH를 통해 네트워크로 로그인하고, 시리얼 포트는 비활성화하세요.
- 입력기: 키보드를 영문 반각 모드로 유지하세요.
SSH 로그인 및 사용자 전환
MobaXterm, PuTTY 등의 도구를 사용하여 SSH로 상위 기기에 로그인하세요.
사용자 전환:
- 일반 시스템(라즈베리 파이 공식 시스템 등)
root사용을 금지하며, 일반 사용자로 전환해야 합니다:su <사용자명> - FLY 상위 기기(FlyOS-FAST 시스템)
root사용자 로그인만 지원됩니다(비밀번호:mellow)
펌웨어 컴파일 작업 가이드
Klipper 펌웨어 구성 화면에서는 키보드 조작만 지원되며, 마우스를 사용할 수 없습니다.
| 키 | 기능 |
|---|---|
| ↑ / ↓ | 커서를 위아래로 이동하여 메뉴 항목 선택 |
| Enter / 스페이스바 | 선택 확인, 옵션 체크 또는 하위 메뉴 진입 |
| ESC | 이전 메뉴로 돌아가기 |
| Q | 구성 화면 종료 |
| Y | 종료 시, 저장하라는 메시지가 나타나면 Y를 눌러 구성 저장 |
펌웨어 컴파일 시작하기
아래는 펌웨어를 컴파일하는 방법을 설명합니다:
-
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...
- 마이크로 컨트롤러 시작 시 설정할 GPIO 핀 선택, 입력:
!gpio5경고영어 입력 모드에서 입력하세요
!gpio5Loading...- 위 그림과 비교하여 확인하고, 그림과 일치하는지 확인한 후 다음 단계로 진행하세요
Q키를 누르면 Save configuration이 나타나고, 이때Y키를 누릅니다.
- 이제 설정이 저장되고 명령줄 인터페이스로 돌아갑니다.
- 아래 명령어를 입력하여 컴파일을 시작합니다. 시간이 다소 소요됩니다.
make -j4
- 마지막으로 아래 내용이 출력되면 컴파일이 성공한 것입니다.
- Klipper 버전에 따라
out/klipper.bin이 나타나기만 하면 성공으로 간주합니다.Linking out/klipper.elf
Creating bin file out/klipper.bin
ID 검색 및 플래싱
CANBus UUID 조회
- 비인쇄 상태에서 ID 조회 및 펌웨어 플래싱 작업을 수행하는 것이 좋습니다. 인쇄 과정에 간섭을 방지하기 위함입니다.
- 동일한 메인보드/툴보드의 Katapult(CANBoot) 펌웨어와 Klipper 펌웨어는 동일한 CAN ID를 사용합니다.
다음 조건을 충족하는지 확인하세요. 그렇지 않으면 CAN ID를 정상적으로 검색하지 못할 수 있습니다.
- 호스트 시스템 CAN 네트워크가 올바르게 구성됨
- 툴보드 CAN 속도가 호스트 시스템과 완전히 일치함(속도가 다르면 통신 불가)
lsusb명령 실행 후1d50:606f장치(USB-CAN 어댑터)가 표시됨
검색 명령(시스템에 따라 선택)
- 일반 호스트 시스템
- Fly-FAST 시스템
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
python ~/klipper/scripts/canbus_query.py can0
검색 결과 설명
경우 1: Klipper 펌웨어가 플래시된 메인보드/툴보드
- 표시 효과: 하나의 CAN ID가 표시되고
Application: Klipper라는 메시지가 나타남 - 설명: 장치가 Klipper 펌웨어를 실행 중이며, 바로 사용할 수 있습니다. 이 ID는 메인보드 ID일 수도 있고 툴보드 ID일 수도 있습니다.
- 구분 방법: 툴보드의 CAN 연결 케이블을 분리한 후 다시 검색합니다. 해당 ID가 사라지면 툴보드에 속한 것이고, 해당 ID가 여전히 있으면 메인보드에 속한 것입니다.
경우 2: 메인보드 + 플래시 대기 중인 툴보드
- 표시 효과: 두 개의 CAN ID가 표시됨
- 설명: 메인보드는 Klipper 펌웨어를 실행 중이고, 툴보드는 CanBoot 펌웨어를 실행 중이며, 플래시를 기다리고 있습니다.
경우 3: UTOC + 플래시 대기 중인 툴보드
- 표시 효과: UTOC 자체는 ID를 표시하지 않으며, 툴보드의 ID만 표시됨
- 설명: UTOC는 브리지 역할만 하므로, 툴보드가 CanBoot 모드에 있는지 확인해야 합니다.
경우 4: ID가 표시되지 않음
- 표시 효과: 어떠한 ID도 표시되지 않음
- 가능한 원인:
- CAN 버스가 Klipper에 의해 점유됨
- 호스트 시스템 CAN0 속도 설정 오류
- 물리적 배선 이상
- 장치가 CanBoot 모드로 진입하지 않음
- 플래시 대기 상태: 툴보드가 CanBoot 모드에 있을 때
Application: CanBoot가 표시되고 펌웨어 LED가 깜빡입니다. 이때 펌웨어 플래싱을 수행할 수 있습니다. - ID 점유 처리: 장치가 이미 Klipper 펌웨어를 실행 중이고 ID가 구성 파일에 입력된 경우, 해당 ID는 표시되지 않습니다(Klipper에 의해 점유됨). 다시 표시하려면 구성에서 해당 ID를 차단하고 완전히 전원을 껐다가 다시 켜야 합니다.
UUID를 쿼리할 수 없는 경우 다음을 참조하세요: CAN 문제 해결 가이드
펌웨어 플래싱
플래싱 명령
- 아래 명령에서
241696050c56을 실제로 조회한 UUID로 교체하세요. - 주의:
-u매개변수 뒤에는 공백이 있어야 합니다.
python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56
플래싱 성공 확인
CAN Flash Success 메시지가 나타나면 플래싱이 성공한 것입니다:
펌웨어 업데이트
업데이트 방법
펌웨어를 업데이트해야 할 때는 다음을 수행하면 됩니다:
- 펌웨어를 다시 컴파일합니다.
- 장치 CAN ID를 쿼리할 수 있는지(또는 Klipper가 장치에 연결되어 있는지) 확인합니다.
- 동일한 플래싱 명령을 실행합니다.
python3 ~/klipper/lib/canboot/flash_can.py -u <MCU ID>
업데이트 성공 예시
펌웨어 정상 작동 확인
- 펌웨어가 정상적으로 시작되면 LED가 켜집니다.
Loading...