14.1.1.3.5.2. OpenMV AE3:dfu-util

OpenMV AE3 使用 openmv_dfu 開機載入程式(應用程式 VID:PID 37C5:16E3,DFU VID:PID 37C5:96E3),但它是一款雙核心裝置:一顆 Alif Ensemble,具有一個高效能(HP)與一個高效率(HE)的 Cortex-M55 核心。要進入開機載入程式,只需將相機插入即可:它會在通電時短暫監聽,而 -w 會讓 dfu-util 等待其出現。每個核心執行自己的韌體映像並擁有自己的唯讀 ROMFS,因此一次完整燒錄共有四個映像:

核心

韌體命令

ROMFS 命令

M55-HP

-a 1 -D firmware_M55_HP.bin

-a 6 -D romfs0.img

M55-HE

-a 2 -D firmware_M55_HE.bin

-a 3 -D romfs1.img

完整燒錄會寫入這四個映像,僅在最後一次傳輸時加上 --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 傳輸會失敗,直到該晶片重新初始化為止。

開機載入程式將此功能以額外一個 DFU alt 的形式呈現:將一個金鑰檔案下載到 -a 7 會觸發初始化序列(一次 JESD 重設、組態暫存器初始化、解除鎖定,以及兩次完整的晶片抹除作業)。下載本身不會儲存任何內容 — 該分割區會檢查檔案是否以預期的 16 位元組金鑰開頭,並執行此序列,每個開機載入程式工作階段至多執行一次。

使用韌體儲存庫中的 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 或損毀的檔案系統導致相機無法開機時的解決方法 — 請參閱 清除內部檔案系統

若要復原相機的開機載入程式本身,請參閱 還原開機載入程式