콘텐츠로 이동

펌웨어 업데이트 (rbln-flash)

rbln-flash는 RBLN NPU의 펌웨어를 업데이트하기 위한 명령줄 유틸리티입니다. 이 도구는 병렬 업데이트를 지원하며 두 가지 업데이트 모드를 제공합니다:

  • CP: 커맨드 프로세서(Command Processor) 펌웨어 업데이트
  • MCU (SMC): 마이크로컨트롤러(SMC) 펌웨어 업데이트

Warning

펌웨어 업데이트는 시스템 작업을 중단시킵니다. 업데이트 전에 모든 워크로드를 중지하십시오. 드라이버 처리 방법은 여기를 참조하십시오.

Note

이 도구가 올바르게 작동하려면 드라이버가 언로드되어 있어야 합니다.

빠른 시작 (Quick Start)

디렉토리에서 CP 펌웨어 업데이트 (모든 장치)

$ sudo systemctl stop rbln_daemon.service
$ sudo modprobe -r rebellions

$ sudo rbln-flash --cp -d /PATH/TO/FIRMWARE_DIR -s all

$ sudo modprobe rebellions
$ sudo systemctl start rbln_daemon.service

주요 개념 및 용어

업데이트 선택 요소

  • 업데이트 모드 (Update mode): CP (--cp) 또는 MCU (SMC) (--mcu).
  • 이미지 소스 (Image source): 단일 펌웨어 이미지 파일 (-f) 또는 펌웨어 디렉토리 (-d).
  • 대상 (Targets) (CP 업데이트): 하나의 PCI BDF (예: -s 01:00.0) 또는 전체 (-s all).

정확한 플래그 구문과 제약 사항(예: "--cp/--mcu 중 하나만 선택")은 명령어 참조를 확인하십시오.

명령어 참조 (Command Reference)

rbln-flash 실행 전

사전 조건 (Preconditions)

rebellions 드라이버가 로드되어 있거나 rbln_daemon이 실행 중인 경우(일반적으로 SDK 패키지가 설치된 경우), 업데이트 전에 서비스를 중지하고 드라이버를 언로드해야 합니다:

$ sudo systemctl stop rbln_daemon.service
$ sudo modprobe -r rebellions

업데이트 후

드라이버를 언로드하고 데몬을 중지했다면, 업데이트 후 시스템을 복구하십시오:

$ sudo modprobe rebellions
$ sudo systemctl start rbln_daemon.service

기본 사용법 (General usage)

$ sudo rbln-flash --cp -f <FILE_PATH> -s <PCI_ADDR | all>
$ sudo rbln-flash --cp -d <DIR_PATH> -s <PCI_ADDR | all>

$ sudo rbln-flash --mcu -f <FILE_PATH> -s <PCI_ADDR | all>
$ sudo rbln-flash --mcu -d <DIR_PATH> -s <PCI_ADDR | all>

옵션 (Options)

옵션 설명 예시
--cp CP(Command Processor) 업데이트 모드를 선택합니다. --cp -f image.gpt
--mcu MCU(SMC) 업데이트 모드를 선택합니다. --mcu -f smc_fw.bin
-d, --dir <DIR_PATH> 업데이트에 사용할 펌웨어 디렉토리입니다. -d /lib/firmware/3.0/
-f, --file <FILE_PATH> 업데이트에 사용할 펌웨어 이미지 파일입니다. -f /lib/firmware/3.0/image.bin
-s, --pci_addr <PCI_BDF \| all> PCI BDF 또는 all로 대상 장치를 지정합니다. 현재 rbln-flash --help는 이 플래그를 CP 업데이트용으로 설명하고 있습니다. -s 01:00.0 / -s all
-l, --logfile <LOG_PATH> 상세 로그를 파일에 기록합니다. 생략하면 로그는 표준 출력(stdout)으로만 출력됩니다. -l update.log

Note

  • --cp 또는 --mcu 중 정확히 하나를 지정해야 합니다.
  • -d 또는 -f 중 정확히 하나를 지정해야 합니다.

디렉토리 모드 바이너리 요구 사항

-d 옵션 사용 시, 디렉토리는 다음과 같은 정확한 이름의 펌웨어 파일들을 포함해야 합니다:

구성 요소 필수 파일명
ATOM-CP atom-cp.binatom-cp-secure.bin
ATOM-SMC atom-smc.bin
REBEL-CP rebel-q-cp.bin
REBEL-SMC rebel-smc.bin

이 도구는 감지된 장치 플랫폼과 업데이트 모드(--cp 또는 --mcu)에 따라 올바른 파일을 자동으로 선택합니다.

반환 코드 (Return codes)

이 도구는 다음 종료 코드를 반환합니다:

값 유형 의미
0 모든 장치가 성공적으로 업데이트되었습니다.
음수 정수 Linux errno 스타일 오류 코드 (예: -EINVAL, -ENODEV).
양수 정수 업데이트에 실패한 장치 수입니다.

스크립트 작성 예제는 CLI 예제 → 종료 코드 처리를 참조하십시오.

CLI 예제

펌웨어 업데이트 워크플로우

요약

단일 펌웨어 이미지 파일을 사용하여 특정 장치의 CP 펌웨어를 업데이트합니다.

명령어

Command
$ sudo rbln-flash --cp -f /PATH/image.bin -s 01:00.0

출력 (예시)

Result summary (example)
=== Firmware Update Results ===
0000:01:00.0 : SUCCESS [O]
0000:02:00.0 : FAILED [X]
0000:03:00.0 : TIMEOUT [...]
=================================

요약

펌웨어 디렉토리를 사용하여 모든 장치의 CP 펌웨어를 업데이트합니다 (다중 장치 시스템에 권장).

명령어

Command
$ sudo rbln-flash --cp -d /PATH/ -s all

출력 (예시)

Result summary (example)
=== Firmware Update Results ===
0000:01:00.0 : SUCCESS [O]
0000:02:00.0 : FAILED [X]
0000:03:00.0 : TIMEOUT [...]
=================================

요약

단일 펌웨어 이미지 파일을 사용하여 특정 장치의 MCU (SMC) 펌웨어를 업데이트합니다.

명령어

Command
$ sudo rbln-flash --mcu -f /PATH/image.bin -s 01:00.0

출력 (예시)

Result summary (example)
=== Firmware Update Results ===
0000:01:00.0 : SUCCESS [O]
0000:02:00.0 : FAILED [X]
0000:03:00.0 : TIMEOUT [...]
=================================

요약

펌웨어 디렉토리를 사용하여 모든 장치의 MCU (SMC) 펌웨어를 업데이트합니다.

명령어

Command
$ sudo rbln-flash --mcu -d /PATH/ -s all

참고

이 예제는 원본 가이드를 따릅니다. 설치된 rbln-flash와 일치하지 않는 경우(지원되는 플래그/필수 인자), rbln-flash --help를 따르십시오.

출력 (예시)

Result summary (example)
=== Firmware Update Results ===
0000:01:00.0 : SUCCESS [O]
0000:02:00.0 : FAILED [X]
0000:03:00.0 : TIMEOUT [...]
=================================

요약

펌웨어를 업데이트하고 상세 로그를 파일에 기록합니다.

명령어

Command
$ sudo rbln-flash --cp -d /PATH/ -s all -l update.log

출력 (예시)

Result summary + logfile (example)
=== Firmware Update Results ===
0000:01:00.0 : SUCCESS [O]
0000:02:00.0 : FAILED [X]
0000:03:00.0 : TIMEOUT [...]
=================================

로그는 update.log에 기록되며 표준 출력(stdout)으로도 출력됩니다.

요약

스크립트/CI에서 rbln-flash 종료 코드를 해석하기 위한 쉘 로직 예제입니다.

명령어

Example
$ sudo rbln-flash --cp -d /PATH -s all
ret=$?

if [ $ret -gt 0 ]; then
  echo "$ret device(s) failed to update."
elif [ $ret -lt 0 ]; then
  echo "Error occurred: $ret"
else
  echo "All devices updated successfully!"
fi

문제 해결 (Troubleshooting)

드라이버를 언로드할 수 없음

  • 데몬 중지: sudo systemctl stop rbln_daemon.service
  • 드라이버 언로드: sudo modprobe -r rebellions
  • 장치를 사용하는 프로세스가 없는지 확인하십시오.

디렉토리 모드 실패

일부 장치 업데이트 실패

  • 반환 코드를 확인하십시오 (명령어 참조 → 반환 코드 참조).
  • --logfile 옵션과 함께 다시 실행하고 로그에서 장치별 오류를 검사하십시오.

참고 사항 (Notes)

  • 이 도구는 선택된 모든 장치에 대해 병렬 펌웨어 업데이트를 수행합니다.
  • 각 장치는 자체 결과인 SUCCESS(성공), FAILED(실패), 또는 TIMEOUT(시간 초과)을 보고합니다.
  • 펌웨어 이미지가 대상 업데이트 모드(--cp 또는 --mcu)와 일치하는지 확인하십시오.
  • 업데이트가 중단되거나 유효하지 않은 이미지를 사용하면 장치 오동작이 발생할 수 있습니다.
  • -l이 지정되면 로그는 파일에 기록됨과 동시에 표준 출력(stdout)에도 표시됩니다. 생략하면 로그는 표준 출력으로만 인쇄됩니다.

참고 (See also)