14.1.1.3.5.2. OpenMV AE3: dfu-util¶
OpenMV AE3 は openmv_dfu ブートローダー(アプリケーション VID:PID 37C5:16E3、DFU VID:PID 37C5:96E3)を使用しますが、デュアルコアデバイスです。高性能(HP)コアと高効率(HE)コアの Cortex-M55 を搭載した Alif Ensemble です。ブートローダーに入るには、カメラを接続するだけです。電源投入時に短時間待ち受け、-w を指定すると dfu-util がデバイスの出現を待ちます。各コアは独自のファームウェアイメージを実行し、独自の読み取り専用 ROMFS を持つため、完全なフラッシュは 4 つのイメージになります。
コア |
ファームウェアコマンド |
ROMFS コマンド |
|---|---|---|
M55-HP |
|
|
M55-HE |
|
|
完全なフラッシュは 4 つのイメージを書き込み、--reset は最後の転送でのみ指定します:
dfu-util -w -d ,37C5:96E3 -a 1 -D firmware_M55_HP.bin
dfu-util -w -d ,37C5:96E3 -a 2 -D firmware_M55_HE.bin
dfu-util -w -d ,37C5:96E3 -a 3 -D romfs1.img
dfu-util -w -d ,37C5:96E3 -a 6 --reset -D romfs0.img
片方のコアのファームウェアのみを置き換えるには、そのコアの alt(HP は -a 1、HE は -a 2)だけをフラッシュします。片方のコアの ROMFS を置き換えるには、そのコアの ROMFS alt(HP / romfs0 は -a 6、HE / romfs1 は -a 3)をフラッシュします。
14.1.1.3.5.2.1. Everspin MRAM の初期化¶
OpenMV AE3 の特別なビルドでは、標準の外部フラッシュ(内部 FAT ファイルシステムと HP コアの ROMFS を保持)を Everspin MRAM チップに置き換えています。このセクションはそれらのビルドにのみ適用されます。一度も初期化されていない、または設定レジスタが破損した Everspin パーツは書き込みに応答しないため、チップが再初期化されるまでこれらの alt への DFU 転送は失敗します。
ブートローダーはこれをもう 1 つの DFU alt として公開します。-a 7 にキーファイルをダウンロードすると、初期化シーケンス(JESD リセット、設定レジスタの初期化、ロック解除、2 回の全チップ消去)がトリガーされます。ダウンロード自体は何も保存しません。パーティションはファイルが期待される 16 バイトのキーで始まることを確認し、ブートローダーセッションごとに最大 1 回シーケンスを実行します。
ファームウェアリポジトリの tools/flash_recovery_key.py でキーファイルを生成し(4 KB の key.bin を書き出します)、それからダウンロードします:
python tools/flash_recovery_key.py
dfu-util -w -d ,37C5:96E3 -a 7 -D key.bin
その後チップは空になります。HP コアの ROMFS を再フラッシュし(-a 6 -D romfs0.img)、内部 FAT ファイルシステムは次回の起動時に自動的に再フォーマットされます。
参考
カメラの内部 FAT ファイルシステムを消去するには(不正な main.py や破損したファイルシステムでカメラが起動しなくなった場合の修正方法)、内部ファイルシステムの消去 を参照してください。
カメラのブートローダー自体を復元するには、ブートローダーの復元 を参照してください。