14.1.1.3. ファームウェアのフラッシュ

ファームウェアのビルドfirmware.bin(およびその romfs<n>.img)を入手したら、それをカメラに書き込みます。OpenMV IDE を使う方法が推奨です。コマンドラインでの手順はカメラのファミリーごとに異なり、ページ下部のリンク先にファミリー別に記載されています。ブートローダー自体は別途復元します。ブートローダーの復元 を参照してください。

14.1.1.3.2. Windows: USB ドライバーのインストール

Windows にはカメラの USB DFU、SDP、ISP インターフェース用の組み込みドライバーがないため、WinUSB ドライバーがバインドされるまでコマンドラインツール(dfu-util、NXP SPSDK ツール、Alif SE Tools)はデバイスを検出できません。OpenMV IDE の Windows インストーラーはこれらのドライバーをすべてインストールするため、最も簡単な方法は OpenMV IDE を一度インストールすることです。これにより、IDE とコマンドラインツールの両方が動作するようになります。これが、まっさらな Windows マシンで GUI によるフラッシュが成功する一方で、単体の dfu-util が動作しない理由です。

IDE のインストールが選択肢にない場合は、OpenMV IDE の share/qtcreator/drivers/ ディレクトリから該当するドライバーインストーラーを管理者として実行してください。

ドライバーインストーラー

バインドする USB デバイス

openmv\openmv.cmd

OpenMV DFU デバイス、および RT1062 SPSDK インターフェース(0x1FC9:0x0135 SDP ROM と 0x15A2:0x0073 フラッシュローダー)

arduino\arduino.cmd

Arduino DFU デバイス(2341:03xx

ftdi\ftdi.cmd

AE3 ブートローダー復旧に使用する FTDI 0403:6015 アダプター

DFU_Driver\STM32Bootloader.bat

STM32 ブートローダー復旧に使用する ST 0483:df11 システム DFU デバイス

あるいは、Zadig または pnputil を使って特定の VID:PID に WinUSB をバインドします。これがないと Windows ではコマンドラインによるフラッシュはまったく動作しません。Linux と macOS ではドライバーのインストールは不要です(Linux には udev ルールのみが必要です)。

14.1.1.3.3. SWD 経由のフラッシュ(make deploy

デバッグプローブがすでにカメラに配線されている場合(デバッグ時のように)、最速の編集・ビルド・フラッシュのサイクルでは USB DFU をバイパスし、SWD 経由でチップを直接プログラムします。STM32 カメラの場合:

make -j$(nproc) TARGET=<TARGET> deploy

これは、接続されたプローブを介して STM32_Programmer_CLI(SDK 付属)でビルドしたてのファームウェアをフラッシュします。ブートローダーへの移行、USB の再列挙、ケーブルの差し替えはありません。ビルドして deploy を実行すれば、カメラは新しいコードで再起動します。これはファームウェアの活発な開発中に推奨されるワークフローです。プローブなしでフラッシュする場合や、他者にファームウェアを配布する場合は DFU または OpenMV IDE を使用してください。

14.1.1.3.4. ブートローダー / DFU モードへの移行

フラッシュにはカメラをブートローダー / DFU モードにする必要があります。移行する方法は 3 つあります。

  • 接続時(任意のカメラ)。 すべてのカメラは、電源投入時にファームウェアが起動する前の短い間、ブートローダーを実行します。カメラを USB に接続すれば、ブートローダーが短時間待ち受けます。

  • IDE から(任意のカメラ)。 カメラを接続した状態で Tools -> Force enter OpenMV Cam bootloader を実行すると、ブートローダーモードで再起動します。

  • Arduino のリセットボタン。 Arduino ボードでは、リセットボタンをダブルクリックするとブートローダーモードに入ります。

14.1.1.3.5. カメラファミリー別のコマンドラインフラッシュ

以下のページは、各カメラファミリーについて OpenMV IDE が内部で行っている処理を示しており、フラッシュを自分で実行したい場合(スクリプト内、CI、または生産ラインで)に役立ちます。日常的なフラッシュには OpenMV IDE を推奨します。