14.1.1.5. 부트로더 복구

일반적인 펌웨어 플래시는 부트로더를 건드리지 않으므로 중단된 펌웨어 업데이트는 거의 항상 복구할 수 있습니다. 펌웨어 플래싱하기 의 동일한 플래시 명령을 다시 실행하거나(dfu-util -w 는 장치를 기다립니다), 카메라가 아직 부트로더 상태에 있는 동안 Load Custom Firmware 를 다시 실행하면 됩니다. 이 페이지는 부트로더 자체 가 손상되어 카메라가 재설정 시 더 이상 DFU 장치로 인식되지 않는 더 드문 경우를 다룹니다.

부트로더는 펌웨어 및 파일시스템과 별도의 플래시 영역에 저장되며, 모든 OpenMV 브랜드 카메라에는 복구를 위한 하드웨어 경로가 있으므로 카메라를 영구적으로 복구 불가능한 상태로 만들기는 어렵습니다. Arduino 보드만이 유일한 예외입니다. 이들의 부트로더는 고정되어 있어 사용자가 복구할 수 없습니다.

OpenMV IDE는 이러한 모든 복구 절차를 자동화하며, 진행 과정에서 필요한 하드웨어 단계(점퍼, 스위치, 버튼)를 안내합니다. 아래 섹션에서는 직접 복구를 실행하고자 할 때를 위해 각 카메라 제품군에 대해 IDE가 수행하는 작업을 설명합니다.

14.1.1.5.1. STM32 카메라 (BOOT–RST 점퍼)

STM32 OpenMV 카메라(M4, M7, H7, H7 Plus, Pure Thermal)의 경우:

  1. 카메라를 분리합니다.

  2. BOOT 핀과 RST 핀 사이를 점퍼 와이어로 연결합니다.

  3. 다시 연결합니다. 이제 카메라는 손상된 펌웨어와 무관하게 ST 시스템 DFU 장치(0483:df11)로 인식됩니다.

  4. 부트로더만 다시 플래시합니다. OpenMV IDE의 Load Custom Firmwarebootloader.bin 을 사용하거나, 다음을 실행합니다:

    dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.bin
    
  5. 점퍼를 제거하고 다시 연결합니다.

  6. 펌웨어를 정상적으로 플래시합니다(펌웨어 플래싱하기 참조).

14.1.1.5.2. OpenMV Cam N6 (BOOT–VCC 점퍼)

  1. 카메라를 분리합니다.

  2. BOOT 핀과 VCC 핀 사이를 점퍼 와이어로 연결합니다.

  3. 다시 연결합니다. 이제 카메라는 손상된 부트로더와 무관하게 ST 시스템 DFU 장치(0483:df11)로 인식됩니다.

  4. bootloader.bin 과 함께 제공되는 플래시 레이아웃 디스크립터를 사용하여 STM32CubeProgrammer(OpenMV SDK에 포함됨)로 다시 플래시합니다. 이는 1단계 부트로더, 외부 플래시 로더, 부트로더를 다시 씁니다:

    STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsv
    
  5. 점퍼를 제거하고 다시 연결합니다.

  6. 펌웨어를 정상적으로 플래시합니다(펌웨어 플래싱하기 참조).

14.1.1.5.3. OpenMV Cam RT1062

RT1062 보안 부트로더를 재생성하려면 점퍼로 칩의 ROM 직렬 다운로드(SDP) 모드로 진입한 다음, RAM 플래시로더를 스테이징하고, 플래시 구성 블록, SBL, 펌웨어를 다시 써야 합니다. 수동 절차는 다음과 같습니다:

  1. 카메라를 분리하고 SBL 핀과 3.3V 핀을 점퍼로 연결한 후 다시 연결합니다. 칩이 SDP ROM 모드(0x1FC9:0x0135)로 인식됩니다.

  2. RAM 플래시로더를 스테이징하고 시작합니다:

    sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin
    sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
    
  3. 이제 카메라가 플래시로더(0x15A2:0x0073)로 응답합니다. 외부 플래시를 구성하고, 플래시 구성 블록을 쓴 다음, SBL을 씁니다:

    blhost -u 0x15A2,0x0073 -- fill-memory 0x2000 4 0xC0000008 word
    blhost -u 0x15A2,0x0073 -- configure-memory 9 0x2000
    blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60000000 0x1000
    blhost -u 0x15A2,0x0073 -- fill-memory 0x2000 4 0xF000000F word
    blhost -u 0x15A2,0x0073 -- configure-memory 9 0x2000
    blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60001000 <sbl_size>
    blhost -u 0x15A2,0x0073 -- write-memory 0x60001000 blhost_flash_loader.bin
    
  4. 펌웨어를 쓰고 칩이 외부 플래시에서 새 SBL로 부팅하도록 부트 소스 퓨즈를 설정합니다:

    blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60040000 <firmware_size>
    blhost -u 0x15A2,0x0073 -- write-memory 0x60040000 firmware.bin
    blhost -u 0x15A2,0x0073 -- efuse-program-once 0x06 00000010
    blhost -u 0x15A2,0x0073 -- reset
    
  5. 점퍼를 제거하고 카메라의 전원을 재투입합니다.

경고

efuse-program-once 0x06 00000010 은 장치가 외부 플래시에서 부팅하도록 설정하는 일회성, 되돌릴 수 없는 퓨즈 쓰기입니다. 이것이 RT1062 부트로더 복구를 수동으로 직접 실행하기보다는 OpenMV IDE가 수행하도록 맡겨야 하는 또 다른 이유입니다.

14.1.1.5.4. OpenMV AE3

AE3의 보안 부트로더는 USB DFU로 복원되지 않습니다. 이 부트로더는 시리얼 ISP 연결을 통해 Alif Semiconductor’s SE Tools(OpenMV IDE에 포함됨)로 칩의 MRAM에 다시 기록됩니다. 이는 대화형이며 복구 전용 절차로 – 일상적인 플래싱 방법이 아니며 – 직접 수행하기에는 오류가 발생하기 쉽습니다. 이 페이지의 모든 작업 중에서 이것은 OpenMV IDE에 맡겨야 하는 작업입니다.

연결. SE Tools는 디버그 어댑터의 직렬 ISP 포트, 즉 FTDI 0403:6015 또는 CH340 1A86:55D3 인터페이스와 J-Link를 함께 통해 AE3와 통신합니다. 복구하려면 장치를 복구 모드 로 전환해야 합니다. 보드의 복구 스위치를 활성화하십시오.

SE Tools. OpenMV IDE는 이러한 Alif 실행 파일을 번들로 제공합니다. 이들은 첫 연결 시 maintenance 가 생성하는 두 개의 구성 파일(isp_config_data.cfgglobal-cfg.db)을 공유합니다:

도구

용도

maintenance

Secure Enclave를 조회하고(maintenance -opt sesbanner 는 그 버전을 읽음) 장치를 복구 모드로 전환합니다.

updateSystemPackage

Secure Enclave 시스템 패키지가 펌웨어가 요구하는 버전보다 오래되었을 때 이를 업데이트합니다.

app-gen-toc

목차(TOC) 이미지를 생성합니다(애플리케이션 전용 쓰기에 사용).

app-write-mram

이미지를 MRAM에 씁니다. 부트로더를 복구하는 단계입니다.

절차:

  1. maintenance 로 AE3에 연결합니다. 직렬 포트와 장치 유형을 묻고, 다른 도구를 위한 isp_config_data.cfgglobal-cfg.db 를 생성합니다.

  2. Secure Enclave 시스템 패키지가 오래되었으면 updateSystemPackage 가 이를 업데이트합니다. 메시지가 표시되면 전원을 재투입하십시오.

  3. app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000" 는 부트로더와 TOC를 MRAM에 씁니다.

  4. AE3가 37C5:96E3 DFU 장치로 다시 인식됩니다. OpenMV AE3: dfu-util 의 일반적인 4-이미지 플래시를 실행하여 애플리케이션을 로드합니다.

  5. 카메라의 전원을 재투입하고 복구 스위치를 다시 끕니다.

참고

OpenMV IDE는 이 정상 경로보다 훨씬 더 많은 것을 처리합니다. 손상된 Secure Enclave 펌웨어, 불량 부트로더, 그 외의 실패 상태는 각각 고유한 복구 단계를 필요로 하며, 진행 과정에서 많은 것이 잘못될 수 있습니다. 위의 수동 단계로 카메라가 복구되지 않으면 OpenMV IDE를 사용하여 복구하십시오.