펌웨어 업데이트(rbln-flash)¶
rbln-flash는 RBLN NPU의 펌웨어를 업데이트하는 명령줄 도구로, 여러 장치를 병렬로 업데이트할 수 있습니다.
두 가지 업데이트 모드를 제공합니다:
- CP 펌웨어 업데이트: CP(Command Processor) 펌웨어를 업데이트합니다.
- MCU(SMC) 펌웨어 업데이트: SMC(System Management Controller) 펌웨어를 업데이트합니다.
Info
업데이트하는 동안 장치를 사용할 수 없습니다. 업데이트 전에 모든 워크로드를 중지하고, rbln-smd를 중지한 뒤 rebellions 드라이버를 언로드해야 합니다. 필요한 명령은 rbln-flash 실행 전에 정리되어 있습니다.
빠른 시작¶
CP 펌웨어 업데이트(디렉터리 모드, 모든 장치)
$ sudo systemctl stop rbln-smd.service
$ sudo modprobe -r rebellions
$ sudo rbln-flash --cp -d <DIR_PATH> -s all
$ sudo modprobe rebellions
$ sudo systemctl start rbln-smd.service
$ rbln-smi -q -qd npu,name,device,fw_ver
모든 장치의 fw_ver 열에 새 펌웨어 버전이 표시되는지 확인합니다.
주요 개념 및 용어¶
업데이트 선택¶
- 업데이트 모드(Update mode): CP(
--cp) 또는 MCU(SMC)(--mcu). - 이미지 소스(Image source): 단일 펌웨어 이미지 파일(
-f) 또는 펌웨어 디렉터리(-d). - 대상(Targets): PCI BDF(bus/device/function)로 지정한 단일 장치(예:
-s 01:00.0) 또는 모든 장치(-s all).
플래그 구문과 제약 사항(예: "--cp와 --mcu 중 하나만 지정")은 명령어 참조에서 확인할 수 있습니다.
명령어 참조¶
rbln-flash 실행 전¶
업데이트 후¶
새 펌웨어는 다음과 같이 적용됩니다:
- Rebel100™:
rbln-flash가 업데이트한 장치를 각각 리셋하고, 정상 부팅을 확인한 뒤SUCCESS를 보고합니다. MCU 업데이트에서는 장치가 새 SMC 펌웨어 버전으로 동작하는지도 확인합니다. - ATOM™:
rebellions드라이버를 다시 로드하면 새 펌웨어가 적용됩니다.
드라이버를 로드하고 rbln-smd를 다시 시작한 뒤 CP 펌웨어 버전을 확인합니다:
$ sudo modprobe rebellions
$ sudo systemctl start rbln-smd.service
$ rbln-smi -q -qd npu,name,device,fw_ver
모든 장치의 fw_ver 열에 새 버전이 표시되는지 확인합니다. rbln-smi는 CP 펌웨어 버전을 보여 주며, SMC 펌웨어 버전은 보여 주지 않습니다.
Note
Rebel100™을 업데이트했거나 RBLN-CA22의 MCU를 업데이트했다면, rbln-flash는 종료하면서 PCI 장치를 다시 스캔하고 이때 rebellions 드라이버가 자동으로 로드될 수 있습니다. CP 업데이트 직후 MCU를 업데이트하는 경우처럼 rbln-flash를 다시 실행하기 전에는 lsmod | grep rebellions로 드라이버가 로드되어 있는지 확인하고, 목록에 있으면 언로드해야 합니다. 언로드하지 않으면 240(-EBUSY)으로 종료합니다.
기본 사용법¶
옵션¶
| 옵션 | 설명 | 예시 |
|---|---|---|
--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_ADDR | all> | 업데이트 대상 장치입니다. lspci에 표시되는 BB:DD.F 형식(예: 01:00.0)으로 지정하거나, all로 모든 장치를 선택합니다. | -s 01:00.0 | -s all |
-l, --logfile <LOG_PATH> | 상세 업데이트 로그를 저장할 파일 경로입니다. 생략하면 로그를 표준 출력(stdout)으로만 출력합니다. | -l update.log |
-h, --help | 도움말을 표시하고 종료합니다. | --help |
--version | 버전 정보를 표시하고 종료합니다. | --version |
Note
--cp와--mcu중 하나만 지정합니다.-d와-f중 하나만 지정합니다.
디렉터리 모드 바이너리 요구 사항¶
-d를 사용하면 디렉터리에 다음 이름 그대로의 펌웨어 파일이 있어야 합니다:
| 구성 요소 | 필수 파일명 |
|---|---|
| ATOM-CP(RBLN-CA25) | atom-cp-secure.bin |
| ATOM-CP(그 밖의 ATOM™ 카드) | atom-cp.bin |
| ATOM-SMC | atom-smc.bin |
| REBEL-CP | rebel-q-cp.bin |
| REBEL-SMC | rebel-smc.bin |
감지한 장치 플랫폼, 카드, 업데이트 모드(--cp 또는 --mcu)에 따라 파일을 선택합니다. 첫 번째로 감지한 장치를 기준으로 파일 하나를 고르고, 이 파일을 모든 대상 장치에 씁니다. RBLN-CA25와 다른 ATOM™ 카드가 함께 있는 호스트에서는 -s <PCI_ADDR>로 카드를 하나씩 지정해 업데이트해야 합니다.
반환 코드¶
다음 종료 코드를 반환합니다:
| 종료 코드 | 의미 |
|---|---|
0 | 모든 장치의 업데이트에 성공했습니다. |
1 ~ 128 | 업데이트에 실패한 장치 수입니다. |
129 ~ 255 | 장치를 업데이트하기 전에 실행을 중단했습니다. 음수 Linux errno 값을 반환하며, 셸에는 256 - errno로 표시됩니다. |
자주 발생하는 오류 종료 코드:
| 종료 코드 | errno | 원인 |
|---|---|---|
255 | -1 | root 권한으로 실행하지 않았거나(-EPERM) 펌웨어 파일이 없습니다. sudo로 실행하고 파일 경로를 확인합니다. |
240 | -EBUSY | rebellions 드라이버가 아직 로드되어 있습니다. 먼저 언로드합니다. |
237 | -ENODEV | 일치하는 장치를 찾지 못했습니다. -s 값을 확인합니다. |
234 | -EINVAL | 옵션 조합 또는 펌웨어 이미지가 유효하지 않습니다. 플래그와 이미지 파일을 확인합니다. |
스크립트 작성 예제는 CLI 예제 → 종료 코드 처리에서 확인할 수 있습니다.
실패 시 펌웨어 로그¶
장치가 FAILED 또는 TIMEOUT을 보고하면 rbln-flash는 장치 측 펌웨어 로그를 현재 작업 디렉터리에 자동으로 저장합니다. 이 로그로 장치별 업데이트 실패 원인을 진단할 수 있습니다.
동작¶
- 결과가
FAILED또는TIMEOUT인 장치의 로그만 저장합니다. - 현재 작업 디렉터리에 저장합니다.
- 같은 이름의 파일이 이미 있으면 덮어씁니다.
Note
fwlog_<BDF>.txt는 -l, --logfile 옵션과 별개입니다. -l은 호스트 측 업데이트 진행 로그를 기록하고, fwlog_<BDF>.txt는 장치 측 펌웨어 진단 로그입니다.
CLI 예제¶
펌웨어 업데이트 워크플로우¶
요약
파일 경로로 특정 장치의 CP 펌웨어를 업데이트합니다.
명령어
출력(예시)
요약
디렉터리 경로로 모든 장치의 CP 펌웨어를 업데이트합니다.
명령어
출력(예시)
==== Firmware Update Results ====
0000:01:00.0 : SUCCESS [O]
0000:02:00.0 : FAILED [X]
0000:03:00.0 : TIMEOUT [...]
=================================
2 device(s) failed to update.
Firmware logs have been saved to fwlog_<BDF>.txt for each failed device.
Please check the firmware logs, reset the device, and retry the update.
요약
파일 경로로 특정 장치의 MCU 펌웨어를 업데이트합니다.
명령어
출력(예시)
요약
디렉터리 경로로 모든 장치의 MCU 펌웨어를 업데이트합니다.
명령어
출력(예시)
==== Firmware Update Results ====
0000:01:00.0 : SUCCESS [O]
0000:02:00.0 : FAILED [X]
0000:03:00.0 : TIMEOUT [...]
=================================
2 device(s) failed to update.
Firmware logs have been saved to fwlog_<BDF>.txt for each failed device.
Please check the firmware logs, reset the device, and retry the update.
요약
펌웨어를 업데이트하고 상세 로그를 파일에 기록합니다.
명령어
출력(예시)
==== Firmware Update Results ====
0000:01:00.0 : SUCCESS [O]
0000:02:00.0 : FAILED [X]
0000:03:00.0 : TIMEOUT [...]
=================================
2 device(s) failed to update.
Firmware logs have been saved to fwlog_<BDF>.txt for each failed device.
Please check the firmware logs, reset the device, and retry the update.
로그를 update.log에 기록하고 표준 출력으로도 출력합니다.
종료 코드 처리¶
스크립트나 CI에서 rbln-flash 종료 코드를 확인하는 예제입니다:
문제 해결¶
드라이버를 언로드할 수 없음¶
- 데몬 중지:
sudo systemctl stop rbln-smd.service - 드라이버 언로드:
sudo modprobe -r rebellions - 모듈이 계속 사용 중이면 무엇이 사용하고 있는지 확인합니다.
lsmod | grep rebellions의Used by열에 사용 카운트가 표시되고,sudo lsof /dev/rbln*는 장치를 열고 있는 프로세스를 보여 줍니다. 해당 프로세스를 중지한 뒤 드라이버를 다시 언로드합니다. - 이전 업데이트 후 드라이버가 자동으로 다시 로드되었다면 다음 실행 전에 언로드합니다(업데이트 후 참조).
디렉터리 모드 실패¶
- 펌웨어 디렉터리에 명령어 참조 → 디렉터리 모드 바이너리 요구 사항에 나열된 필수 파일명이 있는지 확인합니다.
- 의도한 업데이트 모드(
--cp또는--mcu)를 선택했는지 확인합니다.
일부 장치 업데이트 실패¶
- 반환 코드를 확인합니다(명령어 참조 → 반환 코드 참조).
--logfile을 지정해 다시 실행하고 로그에서 장치별 오류를 확인합니다.- 현재 디렉터리에 자동으로 생성된
fwlog_<BDF>.txt파일에서 장치 측 진단 로그를 확인합니다(실패 시 펌웨어 로그 참조). - 로그를 확인한 후 실패한 장치를 리셋하고 업데이트를 다시 시도합니다.
참고 사항¶
- 선택한 모든 장치의 펌웨어를 병렬로 업데이트합니다.
- 각 장치는
SUCCESS,FAILED,TIMEOUT중 하나로 결과를 보고합니다. - 장치가 실패하거나 시간 초과되면 장치별 펌웨어 로그 파일(
fwlog_<BDF>.txt)을 현재 작업 디렉터리에 자동으로 기록합니다. 자세한 내용은 실패 시 펌웨어 로그에서 확인할 수 있습니다. - 펌웨어 이미지가 대상 업데이트 모드(
--cp또는--mcu)와 맞는지 확인해야 합니다. - 업데이트가 중단되거나 유효하지 않은 이미지를 사용하면 장치가 오동작할 수 있습니다. 업데이트가 중단되면 같은
rbln-flash명령을 다시 실행합니다. 그래도 업데이트에 실패하거나 장치가 감지되지 않으면 문의 페이지를 통해 기술 지원에 연락하시기 바랍니다. -l을 지정하면 로그를 파일에 기록하고 표준 출력으로도 출력합니다. 생략하면 표준 출력으로만 출력합니다.
관련 문서¶
rblnBandwidthLatencyTest: 호스트-NPU 및 NPU-NPU 성능 벤치마크rbln-bios: 시스템 검증rbln-smi: 장치 모니터링 및 토폴로지 검사