升级固件
视频教程5 - 升级固件:OpenMV升级固件 | 星瞳科技
视频教程41 - 新DFU烧录固件:新DFU烧录固件 | 星瞳科技
OpenMV项目是一直更新的,用户可以升级固件来保持更新。
每次更新,都会修复bug,增加新的功能。
有两种方式升级固件,一种是IDE自带的功能,使用bootloader升级固件,我们称之为常规升级。另一种是dfu升级,使用STM芯片的升级固件功能。
请优先使用常规升级,如果是用不了,或者是新的芯片,可以使用DFU烧录程序。
常规升级
OpenMV的IDE有更新固件的功能,非常好用,优先使用这个(Windows,MacOS,Ubuntu通用)。
如果你的固件不是最新版本的话,在IDE下方会有[out of data - click here to upgrade],如上图。点击这里,会弹出一个对话框:是否升级到最新固件?
选择OK
如果想擦除文件系统,选择Yes,如果想保留文件,选择No。
这个过程大概会持续1分钟,OpenMV的灯会闪。
最后会提示:升级成功。
然后,OpenMV就升级到最新版了。
DFUSE升级(废弃)
请优先使用常规升级。DFUSE软件的兼容性不好。
DFU模式,是STM芯片特有的bootloader,这种升级方式,适用于没有烧录过固件的OpenMV,或者烧写固件错误的OpenMV。
dfu升级不需要调试器,只需要一根杜邦线和USB线。
第一步,安装软件
在OpenMV的IDE就集成了这个烧录软件:DFUSE
双击打开。
第二步,下载最新固件
同样,在IDE中就集成了最新的固件。
第三步,进入DFU模式
用杜邦线连接Boot引脚和RST引脚。
就进入了DFU模式,设备管理器会出现一个DFU设备。
如果没有自动安装驱动,可以在DfuSe软件的安装路径中找到驱动文件,安装即可。
第四步,烧录固件
打开软件,点击Choose选择openmv.dfu(不要选择左侧的Choose)。
请注意区分OpenMV2与OpenMV3的固件。如果你是OpenMV3 M7的板子,请选择OpenMV3的固件;如果是OpenMV2 M4的板子,请选择OpenMV2的固件。
这样就上传成功啦。 拔下杜邦线,然后重新插上USB线,运行IDE试试吧!
MacOS DFU升级
MacOS也是可以常规升级的,请优先使用常规升级。
DFU模式,是STM芯片特有的bootloader,这种升级方式,适用于没有烧录过固件的OpenMV,或者烧写固件错误的OpenMV。
Linux和Mac OS下没有找到GUI的程序,只有命令行的。
安装软件:
brew install dfu-util
固件下载
官方固件下载: Releases · openmv/openmv · GitHub
中国服务器下载:http://openmv.cc/downloads/
并把固件解压到当前目录:
ls
openmv.dfu
进入DFU模式
先检查一下:
>> sudo dfu-util -l
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Deducing device DFU version from functional descriptor length
Found Runtime: [05ac:828f] ver=0131, devnum=4, cfg=1, intf=3, path="20-3", alt=0, name="UNKNOWN", serial="UNKNOWN"
Found DFU: [0483:df11] ver=2200, devnum=27, cfg=1, intf=0, path="20-2", alt=3, name="@Device Feature/0xFFFF0000/01*004 e", serial="348633623235"
Found DFU: [0483:df11] ver=2200, devnum=27, cfg=1, intf=0, path="20-2", alt=2, name="@OTP Memory /0x1FFF7800/01*512 e,01*016 e", serial="348633623235"
Found DFU: [0483:df11] ver=2200, devnum=27, cfg=1, intf=0, path="20-2", alt=1, name="@Option Bytes /0x1FFFC000/01*016 e/0x1FFEC000/01*016 e", serial="348633623235"
Found DFU: [0483:df11] ver=2200, devnum=27, cfg=1, intf=0, path="20-2", alt=0, name="@Internal Flash /0x08000000/04*016Kg,01*064Kg,07*128Kg,04*016Kg,01*064Kg,07*128Kg", serial="348633623235"
Copy
说明已经进入dfu模式了。
烧录固件
sudo dfu-util --alt 0 -D openmv.dfu
如果正常的话,会显示:
image for alternate setting 0, (2 elements, total size = 1008036)
parsing element 1, address = 0x08000000, size = 65536
Download [=========================] 100% 65536 bytes
Download done.
parsing element 2, address = 0x08010000, size = 942484
Download [=========================] 100% 942484 bytes
Download done.
done parsing DfuSe file
Copy
这样就成功升级完固件了
参考资料:Create new page · openmv/openmv Wiki · GitHub
编译固件
参考:Home · openmv/openmv Wiki · GitHub
注意
OpenMV正常使用时不需要编译固件,只需要通过IDE连接OpenMV板,然后运行Python代码。
如果你对OpenMV的固件源码感兴趣,想深入了解,可以编译固件。
获取Ubuntu
你可以安装双系统,安装虚拟机,或者使用win10下的bash on windows。
现在假设你已经有了Ubuntu。
安装必须使用的软件
sudo apt-get remove gcc-arm-none-eabi
sudo apt-get autoremove
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded
sudo apt-get install libc6-i386
sudo apt-get install git
sudo apt-get install make
Copy
获取项目代码
GitHub在国内因为网络问题,很容易出现子项目下载错误,导致编译失败。为了避免问题,可以直接从星瞳的下载地址下载全部代码:
下载V4.2.1:https://dl.singtown.com/openmv/openmv_v4.2.1.zip
下载后解压出 openmv_v4.2.1
文件夹
编译
cd openmv_v4.2.1
make -j$(nproc) -C src/micropython/mpy-cross
make -j$(nproc) TARGET=OPENMV4 -C src
Copy
代码会编译出OpenMV Cam H7的固件。 如果需要编译其他板子,通过更改TATGET参数:
TARGET=OPENMV3 # 编译 OpenMV Cam M7 固件
TARGET=OPENMV4 # 编译 OpenMV Cam H7 固件 (default)
TARGET=OPENMV4P # 编译 OpenMV Cam H7 Plus 固件
Copy
固件文件
固件会在 src/build/bin
目录中生成:
bootloader.bin - Bootloader Binary Image (not directly used)
bootloader.dfu - Bootloader DFU Image (not directly used)
bootloader.elf - Bootloader ELF Image (used to generate the BIN/DFU Files)
firmware.bin - Firmware Binary Image (Used by Tools->Run Bootloader in OpenMV IDE)
firmware.dfu - Firmware DFU Image (not directly used)
firmware.elf - Firmware ELF Image (used to generate the BIN/DFU Files)
openmv.bin - Combined Bootloader+Firmware Binary Image (not directly used)
openmv.dfu - Combined Bootloader+Firmware DFU Image (Used by Tools->Run Bootloader in OpenMV IDE)
uvc.bin - Alternative UVC Binary Image (not directly used)
uvc.dfu - Alternative UVC DFU Image (not directly used)
uvc.elf - Alternative UVC ELF Image (used to generate the BIN/DFU Files)
Copy
烧录固件
参考视频:
OpenMV视频教程05-升级固件:OpenMV升级固件 | 星瞳科技
正版授权
OpenMV是一个开放的项目,所有的文件都是开源的。但是同时也会有一些麻烦,和Arduino类似,有一些人自行制作OpenMV的PCB板,然后以廉价的方式出售,这样的行为损害了项目的利益和发展。
- 减少生产数量,会影响OpenMV的成本控制
- 减少盈利,会影响OpenMV的软件开发
- 粗制滥造的板子会带来一些问题,会困扰开发者
所以,对于不是在官方购买的板子,OpenMV的IDE会采取一定的措施。
每当连接的时候,会提示3个对话框,建议你在OpenMV购买License。
License
购买过License后,会发送一个邮件,将一串字符密钥发送给你。
可以填入密钥,然后软件会将这个密钥和你的板子绑定到一起。
一个密钥只能对应一个OpenMV。