14.1.1.3. 燒錄韌體¶
當你從 建置韌體 取得 firmware.bin(以及其對應的 romfs<n>.img)後,便可將其燒錄到相機上。建議使用 OpenMV IDE;命令列程序則因相機系列而異,並在頁面底部連結的各系列頁面中分別說明。開機載入程式本身則需另外復原 — 請參閱 還原開機載入程式。
14.1.1.3.1. OpenMV IDE:載入自訂韌體(建議方式)¶
OpenMV IDE 整合了所有燒錄工具(dfu-util、NXP SPSDK 工具、Alif SE 工具、STM32 工具),會在 Windows 上安裝所需的 USB 驅動程式、處理進入開機載入程式的流程,並為連接的相機選擇正確的命令。這是燒錄自訂組建的建議方式。
將相機透過 USB 接上(你不需要點選 Connect)。
Tools -> Load Custom Firmware。
在對話框中,將 Firmware Path 設為你的組建所產生的
build/<TARGET>/bin/firmware.bin。可視需要勾選 Erase internal file system 以清除相機內部的 FAT 檔案系統(關於何時及為何使用,請參閱 清除內部檔案系統)。
可視需要勾選 Reset ROMFS file system 以重新燒錄預設的 ROMFS(若你直接選取了
.img則此選項會停用)。點選 Run。IDE 會將相機重設進入其開機載入程式,顯示確切的燒錄命令與進度列,然後將相機重新啟動到新韌體。等待藍色的自我測試 LED 亮起;接著相機便會正常重新列舉。
另外也有 Tools -> Force enter OpenMV Cam bootloader,可在燒錄前手動將相機置於 DFU 模式。
14.1.1.3.2. Windows:安裝 USB 驅動程式¶
Windows 沒有內建驅動程式可支援相機的 USB DFU、SDP 與 ISP 介面,因此命令列工具(dfu-util、NXP SPSDK 工具、Alif SE 工具)在未綁定 WinUSB 驅動程式之前無法偵測到該裝置。OpenMV IDE 的 Windows 安裝程式會安裝所有這些驅動程式,因此最簡單的做法就是先安裝一次 OpenMV IDE — 之後 IDE 與命令列工具便都能正常運作。這就是為什麼在全新的 Windows 機器上 GUI 燒錄能成功,而單獨使用 dfu-util 卻不行。
如果無法安裝 IDE,請以系統管理員身分從 OpenMV IDE 的 share/qtcreator/drivers/ 目錄執行對應的驅動程式安裝程式:
驅動程式安裝程式 |
其綁定的 USB 裝置 |
|---|---|
|
OpenMV DFU 裝置,以及 RT1062 SPSDK 介面( |
|
Arduino DFU 裝置( |
|
用於 AE3 開機載入程式復原的 FTDI |
|
用於 STM32 開機載入程式復原的 ST |
或者,使用 Zadig 或 pnputil 將 WinUSB 綁定到特定的 VID:PID。若未完成此步驟,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 模式。有三種進入方式:
插入時(任何相機)。 每台相機在通電啟動時,會在韌體開始前的短暫時間內執行其開機載入程式 — 將相機透過 USB 插入,開機載入程式就會短暫地處於監聽狀態。
從 IDE(任何相機)。 在相機已插入的情況下,Tools -> Force enter OpenMV Cam bootloader 會將其重新啟動進入開機載入程式模式。
Arduino 重設按鈕。 在 Arduino 板上,連按兩下重設按鈕即可進入開機載入程式模式。
14.1.1.3.5. 依相機系列進行命令列燒錄¶
下方頁面說明了 OpenMV IDE 針對各相機系列在底層所執行的操作,供你想要自行進行燒錄時參考 — 例如在指令碼中、在 CI 中,或在生產線上。對於日常燒錄,我們建議使用 OpenMV IDE。