14.1. 固件开发¶
这些页面面向固件开发者——也就是想要修改运行在 OpenMV Cam 上的 C 代码,而不只是编写 MicroPython 脚本的人。它们涵盖了整个流程:搭建编辑器、安装构建工具链、为每块受支持的开发板编译固件、将你的构建刷写到摄像头上,并使用 J-Link 探针在真实硬件上调试它,以及在 VS Code 中进行单步源码级调试。
学完之后,你应该能够从一台干净的机器开始,构建固件,将其放到摄像头上,在 C 源码中设置断点,并对处理器进行单步执行。
备注
OpenMV 固件是 MicroPython 的一个分支,添加了 OpenMV 机器视觉库、驱动以及开发板移植。源码位于 github.com/openmv/openmv。你在脚本中使用的 Python image / ml / csi 模块就是这个仓库中的 C 代码。
14.1.1. 构建是如何工作的¶
在开始之前,有两件事值得理解,因为它们解释了下面的每一条说明:
构建由 SDK 驱动。 你不需要自己安装 ARM 编译器、CMake、Python 或 ST 工具。仓库固定了一个确切的 OpenMV SDK 版本(
SDK_VERSION文件——撰写本文时为1.6.0),而make sdk会下载该 SDK 并将其解包到~/openmv-sdk-<version>/。随后构建会将 SDK 的gcc、llvm、cmake、python以及 ST 工具目录添加到PATH的前面。这意味着每个人都使用完全相同的工具链进行构建,且主机端的设置极为简单。没有原生的 Windows 构建。 工具链和构建脚本仅面向 Linux(x86-64)和 macOS(arm64)。在 Windows 上你需要在 WSL(Windows Subsystem for Linux)内构建,它是一个真正的 Linux 环境——因此一旦安装了 WSL,Windows 用户就完全按照 Linux 说明操作。基于 Docker 的构建和 Linux 虚拟机也是可选方案。
在任何受支持的系统上,高层次的流程始终是:
安装一个编辑器(VS Code)。
获取一个类 Linux 的 shell(原生 Linux、macOS,或 Windows 上的 WSL)。
克隆仓库及其子模块。
make sdk—— 一次性安装工具链。make -C lib/micropython/mpy-cross—— 构建字节码编译器。make TARGET=<board>—— 构建固件。刷写它(OpenMV IDE 或
dfu-util)。可选地,接上 J-Link 并进行调试。
下面的页面会按顺序逐步介绍每一步。