CAN 펌웨어 컴파일
플래시 전 주의사항
현재 모드 및 작업 경로 확인
- 중요 사항: 툴 보드가 현재 Klipper-CAN 모드인 경우, 펌웨어 컴파일 후 명령어를 통해 직접 플래시할 수 있습니다. 명령어는 자동으로 보드를
Katapult모드로 재설정하고 플래시를 완료합니다. - 출고 상태: 보드에는 CAN 모드의
Katapult펌웨어가 사전 플래시되어 있으며, 속도는 1M입니다. - 상태 확인(LED 확인): 보드의 LED가 깜빡이면(아래 그림 참조), 현재
Katapult모드에 있으며 플래시가 가능합니다.Loading... - 모드 이상: LED가 깜빡이지 않으면 펌웨어가
Katapult가 아닙니다. 아래 링크 안내에 따라 다시 플래시해야 합니다: 여기를 클릭하여 Katapult 펌웨어 플래시
딥 스위치 설정 및 물리적 연결
-
딥 스위치 설정: 현재 상태와 관계없이 먼저 보드의 딥 스위치를 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에 연결한 후 다음 명령어를 입력하고
Enter키를 누릅니다:cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig여기서
rm -rf ~/klipper/.config && rm -rf ~/klipper/out은 이전 컴파일 구성과 펌웨어를 삭제하는 데 사용됩니다;make menuconfig는 Klipper 펌웨어 구성 인터페이스를 여는 데 사용됩니다. -
아래 순서대로 항목별로 설정하며, 각 항목을 완료한 후 다음 항목을 진행합니다.
1启用 Enable extra low-level configuration options(Top)Klipper Firmware Configuration2Micro-controller Architecture 选择 Raspberry Pi RP2040/RP235x(Top)Klipper Firmware Configuration3Processor model 选择 rp2040(Top)Klipper Firmware Configuration4Bootloader offset 选择 16KiB bootloader(Top)Klipper Firmware Configuration5Communication Interface 选择 CAN bus(Top)Klipper Firmware Configuration6CAN RX gpio number 设置为 1(Top)Klipper Firmware Configuration7CAN TX gpio number 设置为 0(Top)Klipper Firmware Configuration8CAN bus speed 设置为 1000000(Top)Klipper Firmware Configuration9启用 Optimize stepper code for 'step on both edges'(Top)Klipper Firmware Configuration10GPIO pins to set at micro-controller startup 设置为 !gpio5(Top)Klipper Firmware Configuration11GPIO state at micro-controller startup 选择 Not set此项是 FLYOS-Klipper 功能。通常保持
Not set;如需设置全部 GPIO 的启动状态,请先阅读 GPIO 启动状态使用说明。(Top)Klipper Firmware Configuration12按 Q 键退出配置界面(Top)Klipper Firmware Configuration13出现 Save configuration 时按 Y 保存配置QuitSave configuration?(Y)es(N)o(C)ancel -
위의 마지막 두 단계를 완료한 후
Q를 눌러 구성 인터페이스를 종료하고,Y를 눌러 구성을 저장합니다. -
명령줄로 돌아간 후 다음 명령어를 입력하고
Enter키를 눌러 컴파일을 시작합니다:make -j4root@flyos-11e5f8 ~/klipper # make -j4Compiling out/src/../lib/can2040/can2040.oCompiling out/src/generic/canserial.oCompiling out/src/generic/canbus.oCompiling out/src/../lib/fast-hash/fasthash.oCompiling out/src/rp2040/hard_pwm.oCompiling out/src/rp2040/spi.oCompiling out/src/rp2040/i2c.oPreprocessing out/src/rp2040/rpxxxx_link.ldBuilding out/compile_time_request.oVersion: XXXXLinking out/klipper.elfCreating bin file out/klipper.bin终端末尾出现
Linking out/klipper.elf和Creating bin file out/klipper.bin,即表示编译成功。 实际编译时,部分 Compiling 行和 Version 会随 Klipper 与系统版本变化。
ID 검색 및 플래시
CANBus UUID 조회
- 비출력 상태에서 ID 조회 및 펌웨어 플래싱 작업을 수행하여 인쇄 과정에 간섭이 없도록 권장합니다.
- 동일 메인보드/툴보드의 Katapult(CANBoot) 펌웨어와 Klipper 펌웨어는 동일한 CAN ID를 사용합니다.
다음 조건이 충족되지 않으면 CAN ID를 정상적으로 검색할 수 없습니다.
- 호스트 PC의 CAN 네트워크가 올바르게 구성되어 있어야 함
- 툴보드의 CAN 속도가 호스트 PC와 완전히 일치해야 함(속도가 일치하지 않으면 통신 불가)
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가 그대로 있으면 메인보드에 속한 것입니다.
상황 2: 메인보드 + 플래싱 대기 중인 툴보드
- 표시 효과: 두 개의 CAN ID가 표시됨
- 설명: 메인보드는 Klipper 펌웨어를 실행 중이고, 툴보드는 CanBoot 펌웨어를 실행 중이며 플래싱을 기다리고 있습니다.
상황 3: UTOC + 플래싱 대기 중인 툴보드
- 표시 효과: UTOC 자체는 ID를 표시하지 않음, 툴보드의 ID만 표시됨
- 설명: UTOC는 브리지 역할만 하며, 툴보드가 CanBoot 모드에 있는지 확인해야 합니다.
상황 4: ID 미표시
- 표시 효과: 어떤 ID도 표시되지 않음
- 가능한 원인:
- CAN 버스가 Klipper에 의해 점유됨
- 호스트 PC의 CAN0 속도 설정 오류
- 물리적 배선 이상
- 장치가 CanBoot 모드로 진입하지 않음
- 플래싱 대기 상태: 툴보드가 CanBoot 모드일 때
Application: CanBoot가 표시되고 펌웨어 LED가 깜빡이며, 이때 펌웨어 플래싱이 가능합니다. - ID 점유 처리: 장치가 이미 Klipper 펌웨어를 실행 중이고 ID가 설정 파일에 입력되어 있으면 ID가 표시되지 않습니다(Klipper에 점유됨). 다시 표시하려면 설정에서 해당 ID를 비활성화하고 완전히 전원을 차단한 후 재부팅해야 합니다.
UUID를 조회할 수 없는 경우 다음을 참조하십시오: CAN 문제 해결 가이드
펌웨어 플래싱
플래싱 명령어
- 아래 명령어의
241696050c56를 실제 조회한 UUID로 바꾸십시오 - 참고:
-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 안내가 나타나면 플래싱 성공입니다:
펌웨어 업데이트
업데이트 방법
펌웨어 업데이트가 필요할 때는 다음만 하면 됩니다:
- 펌웨어 재컴파일
- 장치 CAN ID 조회 가능 여부 확인(또는 Klipper가 장치에 연결되어 있어야 함)
- 동일한 플래싱 명령어 실행
-
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>
업데이트 성공 예시
펌웨어 시작 확인
- 펌웨어가 정상적으로 시작되면 LED가 켜집니다.
Loading...