1. 课程导论与硬件准备:STM32Cube AI生态概述、TFLite Micro简介、硬件平台选型与介绍、开发板开箱与调试器连接
1.1 这门课到底讲什么?
说实话,市面上讲AI部署的课程不少。但大多数要么跑在Linux大系统上,要么用着昂贵的开发板。真正能在STM32这种资源受限的MCU上跑起来的,少之又少。
我做了十年嵌入式,踩过不少坑。有一次客户要求在产品里加一个人脸检测功能,板子已经定死了——STM32F746,没有Linux,没有GPU。当时我翻遍了资料,最后靠TFLite Micro硬生生跑了起来。嗯,从那时起我就意识到:边缘AI的战场,其实就在这些小小的MCU上。
这门课的核心就三件事:
- 怎么把训练好的模型塞进STM32
- 怎么让它跑得快(硬件加速、算子优化)
- 怎么让它跑得稳(内存管理、中断处理、功耗控制)
说白了,就是让AI在单片机上真正落地。
课程定位:面向有STM32基础、想入门边缘AI部署的嵌入式工程师。你需要懂C语言、了解基本的神经网络概念,但不需要会Python训练模型——我会提供预训练模型。
1.2 STM32Cube AI生态——不只是个工具包
STM32Cube AI是ST官方推出的一整套AI部署工具链。我刚开始接触时也觉得它就是个模型转换器,后来才发现它远不止如此。
它的核心组件包括:
| 组件 | 作用 | 我的评价 |
|---|---|---|
| X-CUBE-AI | 模型转换与代码生成 | 最核心,支持Keras/TFLite/ONNX |
| STM32CubeMX | 硬件配置与初始化 | 必用,管脚/时钟/外设全靠它 |
| STM32CubeIDE | 集成开发环境 | 基于Eclipse,调试方便 |
| STM32CubeMonitor | 运行时数据可视化 | 调试神经网络输出时很有用 |
我个人习惯用X-CUBE-AI做模型转换,然后用CubeMX生成初始化代码,最后在CubeIDE里调试。这套流程走顺了,从模型到硬件跑起来,快的话半小时就能搞定。
一个小建议:别一上来就想着自己写推理代码。X-CUBE-AI生成的代码已经做了大量优化,包括内存池管理、算子融合、量化处理。你直接用它生成的API就行,比自己手写靠谱得多。
1.3 TFLite Micro——为MCU量身定做的推理引擎
TFLite Micro是TensorFlow Lite的微控制器版本。它和标准TFLite最大的区别是什么?
- 内存占用极小:核心运行时只要16KB RAM,整个框架可以控制在100KB以内
- 无操作系统依赖:裸机就能跑,不需要Linux或RTOS
- 算子集精简:只保留MCU上能跑的算子,比如CONV_2D、DEPTHWISE_CONV_2D、FULLY_CONNECTED等
- 静态内存分配:所有内存都在初始化时分配好,运行时不会动态申请
为什么选TFLite Micro而不是其他框架?我对比过几个方案:
| 框架 | RAM需求 | Flash需求 | 硬件加速支持 | 社区活跃度 |
|---|---|---|---|---|
| TFLite Micro | ~16KB | ~100KB | CMSIS-NN、STM32 Cube AI | 高 |
| TensorFlow Lite | ~300KB | ~500KB | GPU/NPU | 高 |
| ONNX Runtime | ~1MB | ~2MB | 有限 | 中 |
| CMSIS-NN | ~8KB | ~50KB | 仅ARM Cortex-M | 中 |
你看,TFLite Micro在资源占用和生态支持上取得了很好的平衡。而且它和STM32Cube AI深度集成——X-CUBE-AI可以直接生成TFLite Micro的推理代码。
注意:TFLite Micro不是万能的。它不支持训练,只做推理。而且有些算子(比如LSTM、Attention)在MCU上跑不动,模型设计时就要避开。
1.4 硬件平台选型——为什么是H747和F746?
课程里我选了两块板子:STM32H747和STM32F746。为什么是它们?
先看参数对比:
| 参数 | STM32H747 | STM32F746 |
|---|---|---|
| 内核 | Cortex-M7 + Cortex-M4双核 | Cortex-M7单核 |
| 主频 | 480MHz (M7) / 240MHz (M4) | 216MHz |
| Flash | 2MB | 1MB |
| RAM | 1MB (SRAM) + 64KB (DTCM) | 340KB (SRAM) |
| 硬件加速 | Neural Processing Unit (NPU) | 无专用NPU |
| 典型功耗 | ~500mW (全速) | ~300mW (全速) |
选这两块板子的原因很简单:
- H747代表高端路线——有NPU硬件加速,适合跑实时视频处理、人脸识别这类重负载任务
- F746代表主流路线——没有NPU,全靠CPU+CMSIS-NN软件优化,适合成本敏感型产品
我在项目里用过H747做工业视觉检测,也用过F746做智能门锁。两块板子各有千秋,但都能跑TFLite Micro。
选板建议:如果你是初学者,我建议先用F746上手。它便宜、资料多、社区活跃。等把TFLite Micro的部署流程跑通了,再上H747体验硬件加速的快感。
1.5 开发板开箱与调试器连接
拿到板子后,别急着上电。先检查一下配件:
- 开发板本体(H747 Discovery Kit 或 F746 Nucleo)
- USB Type-C数据线(用于供电和调试)
- 网线(H747 Discovery Kit带以太网口)
- 摄像头模块(H747 Discovery Kit自带)
连接步骤其实很简单:
- 插USB线:把USB线连到开发板的ST-Link USB口(注意不是OTG口)
- 装驱动:Windows会自动识别ST-Link驱动,如果没识别,去ST官网下载ST-Link驱动
- 确认指示灯:板子上电后,红色电源灯常亮,绿色LED闪烁(出厂程序)
- 打开设备管理器:确认出现"STMicroelectronics STLink Virtual COM Port"和"STMicroelectronics STLink Debug"
我记得第一次用H747时,插上USB线发现电脑没反应。折腾了半天,原来是USB线的问题——有些线只能充电不能传数据。所以,一定要用带数据传输功能的USB线。
避坑指南:我曾经遇到过ST-Link固件版本太旧导致无法调试的情况。解决办法是下载STM32CubeProgrammer,用"Firmware Update"功能升级ST-Link固件。这一步建议开箱后先做。
1.6 知识体系总览
下面这张图是我自己整理的课程知识体系,你可以先有个整体印象:
这张图把课程的核心链路讲清楚了:从预训练模型出发,经过X-CUBE-AI转换量化,生成TFLite Micro推理代码,再结合STM32CubeMX的硬件初始化,最后在CubeIDE里编译调试。两条路线——H747走硬件加速,F746走软件优化——最终都落在同一个目标上:让AI在MCU上跑起来。
1.7 本章小结
这一章我们做了几件事:
- 明确了课程目标——在STM32上部署TFLite Micro模型
- 了解了STM32Cube AI生态的组成
- 对比了TFLite Micro和其他推理框架的差异
- 选定了H747和F746两块开发板
- 完成了开箱和调试器连接