1. 课程导学与开发环境搭建
各位同学,欢迎来到《STM32Cube AI图像识别模型移植实战》的第一章。
说实话,做嵌入式AI这几年,我见过太多人卡在环境搭建这一步。工具链装到一半报错,版本对不上,或者跑第一个demo就黑屏。嗯,这很正常。我自己第一次搭X-CUBE-AI时也折腾了大半天,后来才发现是CubeMX版本太老。
所以这一章,咱们先把地基打牢。我会带你走一遍整个生态,把硬件、软件、工具链全部理清楚。你跟着我的步骤来,保证后面30章走得顺。
1.1 STM32Cube AI生态概述
STM32Cube AI,说白了就是ST官方给嵌入式设备做的一套AI部署工具链。它不负责训练模型,只负责把训练好的模型——比如你电脑上用TensorFlow或Keras跑通的图像分类网络——压缩、优化、转换成能在STM32上跑的C代码。
整个生态包含三个核心部分:
- STM32CubeMX:图形化配置工具,用来生成初始化代码和引脚配置。
- X-CUBE-AI:扩展包,负责模型转换、验证和代码生成。
- STM32CubeIDE:集成开发环境,编译、调试、下载一条龙。
你想想看,以前要在MCU上跑AI,得手写卷积、池化、全连接层的C代码,还得自己调内存对齐。现在呢?CubeMX里点几下,X-CUBE-AI自动帮你把模型转成优化后的C函数,直接调用就行。我当年做第一个手势识别项目时,光手写卷积就写了两个星期,还跑不满帧率。现在用这套工具,半天就能搞定。
核心流程:训练模型(PC端) → 模型量化与转换(X-CUBE-AI) → 嵌入式部署(STM32CubeIDE) → 硬件推理(STM32H7)
1.2 硬件平台介绍:STM32H747 Discovery Kit
咱们课程用的板子是STM32H747I-DISCO,也就是Discovery Kit。这块板子什么水平?双核Cortex-M7 + Cortex-M4,主频最高480MHz,2MB Flash,1MB SRAM,还带一个DCMI摄像头接口和TFT-LCD屏幕。
为什么选它做图像识别?
- 算力够:M7核跑480MHz,做卷积推理没问题。
- 内存大:1MB SRAM,能装下中小型CNN模型。
- 外设全:摄像头、屏幕、以太网、USB,做视觉项目不用额外接模块。
- 性价比高:相比NXP的i.MX RT系列,ST的生态更成熟,社区资源多。
我记得有一次项目评审,客户问为什么选H7而不是F4。我说,F4跑一个MobileNetV1要3秒一帧,H7只要200毫秒。客户当场就拍板了。说白了,做图像识别,算力和内存是硬门槛,H7刚好卡在性能和成本的最佳平衡点。
| 参数 | STM32H747 | STM32F429 | STM32L4 |
|---|---|---|---|
| 核心 | M7 + M4 双核 | M4 单核 | M4 单核 |
| 主频 | 480 MHz | 180 MHz | 80 MHz |
| SRAM | 1 MB | 256 KB | 128 KB |
| DCMI | 支持 | 支持 | 不支持 |
| 典型推理时间(MobileNetV1) | ~200 ms | ~3 s | 不支持 |
小提示:如果你手头没有H747 Discovery Kit,用Nucleo-H743ZI2也可以,只是没有板载摄像头和屏幕,需要外接。课程代码兼容H7系列,改一下引脚配置就行。
1.3 软件工具链安装
工具链安装这块,我建议你按顺序来,别跳步。我曾经帮一个学员远程调试,他先装了CubeIDE再装CubeMX,结果版本冲突,折腾了一下午。顺序很重要。
1.3.1 STM32CubeMX
这是第一步。去ST官网下载最新版(目前是6.12.0)。安装时注意:
- 选择安装路径,不要有中文和空格。
- 勾选“Install STM32CubeMX as a standalone application”。
- 安装完成后,打开并更新固件包。H7系列需要下载STM32H7xx固件包,大约500MB。
1.3.2 X-CUBE-AI
X-CUBE-AI是作为CubeMX的扩展包安装的。打开CubeMX,进入Help → Manage embedded software packages,搜索“X-CUBE-AI”,选择最新版本(目前是9.1.0)安装。
安装完成后,你会在CubeMX的Pinout & Configuration界面看到“Software Packs”选项卡,里面多了一个“X-CUBE-AI”。点进去就能配置AI模型了。
注意:X-CUBE-AI 9.1.0 要求 CubeMX 版本不低于 6.11.0。如果装不上,先升级CubeMX。我遇到过有人装了半天报错,最后发现是CubeMX版本太老。
1.3.3 STM32CubeIDE
这是咱们的编译和调试环境。同样去ST官网下载,选择对应操作系统版本。安装时默认选项即可,它会自动配置好GCC工具链和OpenOCD调试器。
安装完成后,建议先导入一个官方示例工程,验证编译链是否正常。我一般用STM32Cube_FW_H7里的UART_TxRx示例,编译通过就说明环境没问题。
1.4 开发环境验证
工具都装好了,怎么知道能不能用?咱们跑一个最简单的验证流程:
- 打开CubeMX,新建一个基于STM32H747I-DISCO的工程。
- 在Pinout界面,随便配置一个GPIO输出(比如PA5,板载LED)。
- 生成代码,用CubeIDE打开。
- 写一个简单的LED闪烁程序,编译、下载到板子。
- 如果LED开始闪烁,恭喜你,环境搭建成功。
这一步看起来简单,但能帮你排除90%的环境问题。我见过有人装完工具链直接跑AI demo,结果编译报错,排查半天发现是CubeMX生成的代码路径有中文。所以,先跑一个最简单的GPIO工程,确认工具链没问题,再往上加AI功能。
验证清单:
- ☐ CubeMX能正常打开并生成代码
- ☐ X-CUBE-AI出现在Software Packs选项卡中
- ☐ CubeIDE能编译并下载程序
- ☐ 板载LED能闪烁
1.5 本章知识体系总览
下面这张图,把咱们这一章的核心逻辑串起来了。你从左上角开始看,顺着箭头走一遍,就能理解整个开发流程是怎么衔接的。
从这张图你能看到,整个流程是单向的:PC端训练 → X-CUBE-AI转换 → CubeMX配置 → CubeIDE编译 → 硬件运行 → 验证。每一步都依赖上一步的结果。所以,环境搭建这一步走稳了,后面就是水到渠成的事。
我的习惯:每次开始一个新项目,我都会先跑一遍这个验证流程。哪怕只是换个板子,也先点个灯再说。这能帮你快速确认工具链和硬件是否正常,避免后面调试时怀疑人生。