2. 开发环境搭建
STM32N6 的 Neural-ART 部署不是单一工具能完成的任务,而是一条由多个工具接力构成的链路:STM32CubeMX 负责引脚、时钟与外设的图形化配置并生成初始化代码;STM32CubeIDE 承担工程编译、调试与固件下载;STM32CubeProgrammer 负责把固件、外部 Flash 内容或 AI 模型数据写入芯片;X-CUBE-AI 把训练好的神经网络模型转换成可在 STM32 上运行的 C 代码;Neural-ART 则是 STM32N6 内部专用的 NPU 硬件加速单元,其编译器与运行时由 ST 的 Neural-ART 工具链(通常随 STM32Cube.AI 的 STM32N6 支持包或 ST Edge AI Core 提供)负责把模型映射到 NPU 上执行。这五者之间存在明确的版本依赖关系,装错版本往往表现为“模型能转换但编译报错”“固件能下载但 NPU 不启动”这类难以定位的问题,因此本节的重点不是“把软件装上”,而是“装对版本并让它们互相认识”。
一、先理清工具链的职责与依赖方向
在动手安装前,先建立一张依赖关系图,理解谁调用谁、谁依赖谁的版本。下图给出本节的核心结构:左侧是模型侧工具,右侧是工程与烧录侧工具,中间通过 STM32CubeMX 生成的工程和 X-CUBE-AI 生成的网络代码衔接,最终由 Neural-ART 编译器把模型落到 NPU 上。
图中三条关键依赖需要特别记住:第一,STM32CubeMX 必须安装与 STM32N6 对应的固件包(如 STM32Cube MCU Package for STM32N6),否则器件列表中找不到 N6 型号;第二,X-CUBE-AI 的版本必须与 CubeMX 版本匹配,ST 官方在每个 CubeMX 版本的 Release Note 中会注明兼容的 X-CUBE-AI 版本;第三,Neural-ART 编译器随 STM32N6 支持包提供,其版本由固件包决定,不能单独升级。
二、推荐安装顺序与版本匹配原则
安装顺序建议遵循“先底层后上层、先工程后模型”的原则,避免因依赖缺失导致安装失败:
- 安装 STM32CubeIDE:从 ST 官网下载对应操作系统的安装包(Windows/Linux/macOS)。安装时勾选“STM32CubeMX”集成选项,这样 IDE 内可直接调用 CubeMX。安装完成后在 Help → About 中确认版本号,例如 1.16.x。
- 安装 STM32CubeMX 独立版(可选但推荐):虽然 CubeIDE 已集成 CubeMX,但独立版在配置复杂工程时更灵活。注意独立版版本应与 CubeIDE 内置版本一致或更高,避免 .ioc 文件打开时提示版本不兼容。
- 安装 STM32N6 固件包:在 CubeMX 中通过 Help → Manage embedded software packages 下载 STM32Cube MCU Package for STM32N6。该包内含 HAL 驱动、Neural-ART 运行时库和示例工程,是后续所有工作的基础。
- 安装 X-CUBE-AI:在 CubeMX 的 Additional Software 中勾选 X-CUBE-AI,或在 CubeIDE 中通过 Help → Manage embedded software packages 安装。安装后需在 CubeMX 中启用 AI 中间件,才能看到模型导入界面。
- 安装 STM32CubeProgrammer:独立安装,用于烧录固件和外部 Flash。安装后需将 ST-LINK 驱动更新到最新,否则可能无法识别 N6 的调试接口。
三、版本不匹配的典型症状与排查
版本问题往往不会在安装时报错,而是在使用中暴露。下表列出常见症状与对应原因,便于快速定位。
| 症状 | 可能原因 | 排查方法 |
|---|---|---|
| CubeMX 器件列表中找不到 STM32N6 | 未安装 STM32N6 固件包,或固件包版本过旧 | Help → Manage embedded software packages 检查是否已安装 N6 包 |
| X-CUBE-AI 导入模型后无 Neural-ART 选项 | X-CUBE-AI 版本低于 N6 支持要求 | 查看 X-CUBE-AI Release Note,确认支持 STM32N6 的最低版本 |
| 编译时报 Neural-ART 运行时库缺失 | 固件包中未包含 NPU 运行时,或路径未加入工程 | 检查固件包 Middlewares/ST/AI 目录下是否有 Neural-ART 相关库 |
| CubeProgrammer 无法连接 N6 目标板 | ST-LINK 驱动过旧,或调试接口配置错误 | 更新 ST-LINK 驱动,确认 SWD 引脚与复位模式设置 |
| 模型转换成功但运行结果异常 | 量化参数与 NPU 算子不匹配,或版本间数据布局差异 | 用 X-CUBE-AI 的验证功能对比 PC 端与目标端输出 |
四、安装后的验证清单
安装完成后不要急于导入模型,先做一轮最小验证,确认工具链各环节都能正常工作。建议按以下顺序执行:
- 打开 CubeIDE,新建一个 STM32N6 空工程,确认能正常编译并生成 .elf 文件。
- 用 CubeProgrammer 连接目标板,读取芯片 ID,确认能识别 STM32N6 型号。
- 在 CubeMX 中打开该工程的 .ioc,确认 X-CUBE-AI 中间件可勾选,且 Neural-ART 选项可见。
- 导入一个极小的示例模型(如 1 层全连接网络),执行分析,确认能生成 network.c 且无报错。
- 将生成的代码加入工程,编译通过后下载到目标板,用调试器观察 NPU 是否被调用。
五、一个可复用的版本记录表
由于工具链版本组合较多,建议在项目开始时记录一份版本清单,便于团队协作和问题回溯。以下是一个可直接填写的示例:
项目名称:STM32N6_NeuralART_Demo
记录日期:2025-XX-XX
工具名称 版本号 安装路径/备注
STM32CubeIDE 1.16.0 C:\ST\STM32CubeIDE_1.16.0
STM32CubeMX 6.12.0 集成于 CubeIDE
STM32CubeProgrammer 2.17.0 C:\Program Files\STMicroelectronics
STM32N6 固件包 V1.0.0 CubeMX 内下载
X-CUBE-AI 9.1.0 CubeMX Additional Software
Neural-ART 运行时 随固件包 V1.0.0 Middlewares/ST/AI/NeuralART
ST-LINK 驱动 V3.1.0 ST 官网下载