14.1.1.3.5.4. Arduino 板子

基于 STM32 的 Arduino 板子(Portenta H7、Giga、Nicla Vision)通过 Arduino DFU 引导加载程序,使用 dfu-util 配合 绝对闪存地址 进行烧录。两款 Nano 板子使用它们各自的工具。

14.1.1.3.5.4.1. STM32 Arduino 板子:dfu-util

要进入引导加载程序,请双击复位按钮(或以 1200 波特率打开板子的串口 —— 即 Arduino 的 "touch" 复位)。

板子

DFU VID:PID

固件命令

ROMFS 命令

Arduino Portenta H7

2341:035b

-a 0 -s 0x08040000

-a 1 -s 0x90B00000:leave

Arduino Giga

2341:0366

-a 0 -s 0x08040000

-a 1 -s 0x90B00000:leave

Arduino Nicla Vision

2341:035f

-a 0 -s 0x08040000

-a 1 -s 0x90B00000:leave

烧录应用程序(以 Nicla Vision 为例)::

dfu-util -w -d ,2341:035f -a 0 -s 0x08040000 -D firmware.bin

Wi-Fi 和蓝牙需要两个随 OpenMV IDE 一同提供、位于 share/qtcreator/firmware/CYW4343/ 中的额外二进制块:

组件

闪存地址

文件

Wi-Fi 固件

0x90F00000

cyw4343_7_45_98_102.bin

蓝牙固件

0x90FC0000

cyw4343_btfw.bin

将两者都烧录到外部闪存的 alt 上,并在最后一次传输时加上 :leave(以 Nicla Vision 为例)::

dfu-util -w -d ,2341:035f -a 1 -s 0x90F00000 -D cyw4343_7_45_98_102.bin
dfu-util -w -d ,2341:035f -a 1 -s 0x90FC0000:leave -D cyw4343_btfw.bin

14.1.1.3.5.4.2. Arduino Nano 33 BLE Sense:bossac

Nano 33 BLE Sense(nRF52840)不使用 dfu-util。要进入引导加载程序,请双击 RESET 按钮;板子会枚举为 nRF52840 DFU 设备(2341:805a)。用 bossac 烧录它,将应用程序写入闪存偏移 0x16000 —— 即工厂 SoftDevice 和引导加载程序之上,二者永不被写入::

bossac -e -w -v -R --offset=0x16000 firmware.bin

14.1.1.3.5.4.3. Arduino Nano RP2040 Connect:picotool

要进入引导加载程序,请在连接 USB 的同时按住 BOOTSEL 按钮;板子会挂载一个名为 RPI-RP2 的 USB 大容量存储驱动器。烧录它的方式有两种:将一个 .uf2 文件复制到该驱动器上,或使用 picotool::

picotool load -x firmware.uf2

警告

Arduino 板子的引导加载程序是工厂锁定的,用户 无法 恢复 —— 只有应用程序区域才会被写入。损坏的 Arduino 引导加载程序必须用 Arduino 自己的工具来恢复。恢复引导加载程序 中的引导加载程序恢复流程仅适用于 OpenMV 品牌的摄像头。

参见

要擦除摄像头的内部 FAT 文件系统 —— 当一个有问题的 main.py 或损坏的文件系统导致摄像头无法启动时的修复方法 —— 请参见 擦除内部文件系统