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 |
|
|
M55-HE |
|
|
完整燒錄會寫入這四個映像,僅在最後一次傳輸時加上 --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 檔案系統會在下次開機時自行重新格式化。