2. 开发环境搭建:工欲善其事,必先利其器

说实话,做AI模型移植,最怕的不是模型本身,而是环境搭到一半卡住了。我见过太多新手在安装环节折腾一整天,最后发现是版本不匹配。这一章,咱们就把这套工具链一次搞定。

2.1 STM32CubeMX 安装

STM32CubeMX 是整个开发流程的起点。它负责生成初始化代码、配置时钟树、管脚映射,以及——最重要的——集成 Cube.AI 扩展包。

版本选择建议:我个人习惯用最新稳定版,但别追最新版。比如 2024 年我推荐 6.11.x 或 6.12.x,太新的版本有时会和扩展包有兼容问题。

安装步骤很简单:

  1. 去 ST 官网下载 STM32CubeMX 安装包(Windows/Linux/Mac 都有)
  2. 双击运行,一路 Next,注意安装路径不要有中文
  3. 安装完成后,首次启动会提示下载固件包,先跳过,咱们后面手动配

小技巧:如果你在公司内网,记得提前配好代理。CubeMX 下载固件包时经常因为网络问题失败。我曾经在客户现场折腾了半小时,最后发现是防火墙拦了。

2.2 STM32Cube.AI 扩展包安装

这是咱们课程的核心。Cube.AI 扩展包负责把训练好的神经网络模型转换成可以在 STM32 上跑的 C 代码。

安装方式有两种:

方式 操作步骤 适用场景
在线安装 CubeMX → Help → Manage embedded software packages → STMicroelectronics → X-CUBE-AI 网络好,省事
离线安装 下载 .pack 文件 → CubeMX → Help → Manage embedded software packages → From Local 内网环境,或需要固定版本

注意版本匹配:Cube.AI 扩展包和 CubeMX 主程序有版本依赖关系。比如 X-CUBE-AI 9.0.0 要求 CubeMX 6.12.0 以上。装之前看一眼 Release Notes,别像我当年一样,装完发现不兼容,又卸了重来。

安装完成后,你可以在 CubeMX 的 "Software Packs" 菜单里看到 X-CUBE-AI 的选项。点进去,能看到支持的运行时版本和模型格式。

2.3 IDE 配置:Keil / IAR / STM32CubeIDE

你选哪个 IDE?我三个都用过,说说我的感受。

IDE 优点 缺点 我推荐谁用
Keil MDK 编译快,调试稳,生态成熟 收费,代码补全弱 老手、量产项目
IAR EWARM 优化强,代码密度小 界面丑,学习曲线陡 对代码大小有极致要求
STM32CubeIDE 免费,和 CubeMX 无缝集成 启动慢,插件偶尔抽风 新手、原型验证

咱们课程以 STM32CubeIDE 为主,因为它免费且和 CubeMX 集成最好。但我会在关键步骤标注 Keil 和 IAR 的差异点。

配置步骤:

  1. 安装 STM32CubeIDE(同样从 ST 官网下载)
  2. 首次启动时,指定工作空间路径
  3. 导入 CubeMX 生成的 .ioc 文件,IDE 会自动识别并生成工程
  4. 在工程属性中,确认编译器路径、调试器配置正确

避坑指南:如果你用 Keil,记得在 CubeMX 的 Project Manager 里把 Toolchain / IDE 选为 MDK-ARM V5,然后点 Generate Code。生成后不要直接双击 .uvprojx,先检查一下芯片型号是否匹配。我曾经因为选了 F767 但实际板子是 F767ZI,结果调试器死活连不上。

2.4 硬件准备:NUCLEO-F767ZI

为什么选这块板子?说白了,三个原因:

  • 性能够用:Cortex-M7,216MHz,带 FPU 和 DSP 指令集,跑轻量级 CNN 没问题
  • 内存够大:512KB SRAM + 2MB Flash,能放下中等规模的模型
  • 调试方便:板载 ST-LINK/V2-1,一根 USB 线就能供电和调试

硬件准备清单:

项目 说明 备注
NUCLEO-F767ZI 开发板 主控 STM32F767ZIT6U 建议买 Rev C 以上版本
USB 数据线 Micro-USB,用于供电和调试 别用充电线,要带数据功能
跳线帽 板载默认配置即可 后续扩展外设时可能需要改
串口工具(可选) USB-TTL 模块,用于打印日志 调试模型输出时很有用

拿到板子后,先做一件事:确认板子能正常工作。插上 USB,看绿色 LED 是否闪烁。如果不亮,别急着怀疑板子坏了——先检查 USB 线是不是只充电不传数据。我遇到过三次这种情况。

2.5 整体工具链关系图

下面这张图,帮你理清各个工具之间的关系:

STM32Cube.AI 开发工具链关系图 模型训练 Keras / PyTorch / ONNX X-CUBE-AI 模型转换 + 优化 STM32CubeMX 外设配置 + 代码生成 IDE Keil / IAR / CubeIDE NUCLEO-F767ZI STM32F767ZIT6U 💡 工作流程说明 1. 在 PC 上训练模型 → 2. 用 X-CUBE-AI 转换为 STM32 可执行代码 3. CubeMX 生成外设初始化代码 → 4. IDE 编译并烧录到 NUCLEO-F767ZI

2.6 验证环境是否搭好

环境搭完,怎么知道一切正常?我习惯跑一个最简单的测试:

  1. 打开 CubeMX,新建一个基于 NUCLEO-F767ZI 的工程
  2. 在 Software Packs 里选择 X-CUBE-AI,添加一个空的 AI 应用
  3. 生成代码,导入 IDE,编译
  4. 烧录到板子,看串口是否打印 "AI Application Started"

如果这一步能跑通,恭喜你,环境搭好了。后面的事,就是往这个框架里塞模型了。

常见问题:编译时报错 "cannot open source file stm32f7xx_hal.h"?别慌,八成是 CubeMX 生成代码时没勾选 HAL 库。回去检查 Project Manager → Project Settings → Firmware Package Name and Version,确保选了正确的固件包。