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. STM32CubeProgrammer(OpenMV SDK に含まれます)を使い、bootloader.bin に同梱されているフラッシュレイアウト記述子を指定して再書き込みします。これにより、第 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 の 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 が初回接続時に作成する 2 つの設定ファイル(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 を使って復旧してください。