2. 开发环境搭建:STM32CubeMX 安装与配置、STM32CubeIDE 安装、X-CUBE-AI 扩展包安装、TFLite Micro 源码获取与编译
说实话,做嵌入式AI开发,最怕的不是算法难,而是环境搭不起来。我见过太多人卡在第一步,工具链没配好,连个LED都点不亮,更别说跑模型了。
这一章,咱们就把开发环境彻底搞定。我会把每个工具的安装要点、版本选择、避坑经验都讲清楚。你跟着一步步来,保证能跑通。
2.1 工具链全景图
先看看我们要装哪些东西,它们之间是什么关系。我画了张图,你一看就明白。
2.2 STM32CubeMX 安装与配置
CubeMX 是 ST 官方出品的硬件配置工具。说白了,它就是帮你生成初始化代码的。你点点鼠标,选好外设、时钟、引脚,它就能给你生成一套完整的 HAL 库工程。
2.2.1 下载与安装
- 去 ST 官网搜 "STM32CubeMX",下载最新版本(目前是 6.x)。
- 安装时选好路径,我习惯放 D 盘,别放 C 盘,你懂的。
- 安装完成后,第一次启动会提示更新固件包。别急,先跳过。
2.2.2 配置要点
打开 CubeMX,新建工程,选好芯片型号。这里有几个关键配置项:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| HAL 库版本 | 最新稳定版 | 别用 beta 版,坑多 |
| 时钟源 | HSE(外部晶振) | 内部振荡器精度不够 |
| 调试接口 | SWD(4线) | JTAG 占引脚太多 |
| 堆栈大小 | Heap: 0x2000, Stack: 0x1000 | 跑 AI 模型时堆要够大 |
2.3 STM32CubeIDE 安装
CubeIDE 是 ST 基于 Eclipse 定制的 IDE。它集成了编辑器、编译器、调试器,一条龙服务。我个人觉得比 Keil 好用,关键是免费。
2.3.1 安装步骤
- 同样去 ST 官网下载 "STM32CubeIDE",选对应操作系统版本。
- 安装时注意:它会自带 GCC 编译器,不用额外装。
- 第一次启动会提示设置工作空间路径。我建议和 CubeMX 工程放一起,方便管理。
2.3.2 与 CubeMX 联动
CubeMX 生成的工程可以直接用 CubeIDE 打开。具体操作:
- 在 CubeMX 中点击 "Project" → "Generate Code"。
- 生成完成后,用 CubeIDE 打开工程文件夹下的 .project 文件。
- 或者直接在 CubeMX 里点 "Open Project",它会自动调用 CubeIDE。
2.4 X-CUBE-AI 扩展包安装
X-CUBE-AI 是 ST 的 AI 工具包。它的作用是把训练好的模型(比如 TensorFlow、Keras、ONNX)转换成能在 STM32 上跑的 C 代码。
2.4.1 安装方式
有两种方式:
- 通过 CubeMX 安装: 在 CubeMX 的 "Software Packs" 里搜索 "X-CUBE-AI",点击安装。
- 手动下载: 去 ST 官网下载安装包,解压后放到 CubeMX 的扩展包目录。
2.4.2 验证安装
安装完成后,在 CubeMX 的 "Pinout & Configuration" 标签页里,应该能看到 "Software Packs" 下多了一个 "X-CUBE-AI" 选项。点进去,能看到模型导入界面。
2.5 TFLite Micro 源码获取与编译
TFLite Micro 是 TensorFlow 的微控制器版本。它专门为资源受限的 MCU 设计,内存占用极小。咱们要把它移植到 STM32 上。
2.5.1 获取源码
推荐用 Git 克隆官方仓库:
git clone https://github.com/tensorflow/tflite-micro.git
cd tflite-micro
git checkout main # 或者指定某个 release 版本
2.5.2 编译测试
TFLite Micro 自带 Makefile 构建系统。咱们先编译一个测试用例,验证环境是否正常:
make -f tensorflow/lite/micro/tools/make/Makefile \
TARGET=linux \
test_hello_world_test
编译成功后,运行测试:
./tensorflow/lite/micro/tools/make/gen/linux_x86_64/bin/hello_world_test
如果看到 "Hello World!" 输出,说明编译环境没问题。
2.5.3 交叉编译到 ARM
咱们的目标是 STM32,所以要用 ARM GCC 交叉编译:
make -f tensorflow/lite/micro/tools/make/Makefile \
TARGET= cortex_m_generic \
TARGET_ARCH=cortex-m4 \
OPTIMIZED_KERNEL_DIR=cmsis_nn \
test_hello_world_test
| 参数 | 说明 | 常用值 |
|---|---|---|
| TARGET | 目标平台 | cortex_m_generic |
| TARGET_ARCH | 内核架构 | cortex-m4 / cortex-m7 |
| OPTIMIZED_KERNEL_DIR | 优化内核 | cmsis_nn(推荐) |
OPTIMIZED_KERNEL_DIR=cmsis_nn 后,推理速度能提升 3-5 倍。这是 ARM 官方的 CMSIS-NN 库,专门为 Cortex-M 优化的。
2.5.4 集成到 CubeIDE 工程
编译完成后,把生成的库文件和头文件复制到 CubeIDE 工程中:
- 在 CubeIDE 工程里新建一个 "Middlewares" 文件夹。
- 把 TFLite Micro 的
tensorflow目录复制进去。 - 在工程设置里添加头文件路径和库路径。
- 在链接器设置里添加
-l:libtflm.a。
tensorflow/lite/micro 目录下的文件。我见过有人把整个 TensorFlow 都拷进去,编译直接报内存不足。
2.6 环境验证
所有工具装完后,咱们跑一个简单的验证流程:
- 用 CubeMX 新建一个工程,配置好时钟和串口。
- 在 CubeIDE 中打开工程,添加 TFLite Micro 库。
- 写一个简单的推理代码,比如加载一个预训练好的模型,输入一个数据,看输出是否正确。
- 编译、烧录、运行。
嗯,到这里,开发环境就全部搭好了。你可能会觉得步骤有点多,但相信我,一次配好,后面能省很多事。我当年第一次配的时候,折腾了两天,踩了无数坑。现在把这些经验写出来,就是希望你别走弯路。