在嵌入式设备上部署深度学习模型已成为边缘计算的热门方向。本文将以STM32F429开发板(使用的是野火的STM32F429挑战者开发板)为例,结合STM32CubeMX和X-Cube-AI工具包,详细讲解如何将训练好的神经网络模型部署到嵌入式MCU上,并实现实时推理。本文内容涵盖环境搭建、模型转换、工程配置、代码优化及验证全流程,适合嵌入式开发者与AI爱好者参考。
目 录
一、环境准备
1.硬件准备
-
- STM32F429开发板(如野火挑战者系列)。
- USB转串口模块或数据线(用于调试输出)。
- 传感器或输入设备(如摄像头、麦克风,根据模型需求选择)。
2.软件准备
-
- STM32CubeMX(建议版本≥6.8.1)。
- X-Cube-AI扩展包(下载方式后面有教程)。
- IDE:Keil MDK、STM32CubeIDE(本文以Keil为例)。
- 模型训练框架:PyTorch、TensorFlow或Keras(以ONNX或TFLite格式导出模型)。
3.STM32CUBE_AI安装教程
1.安装好STM32_CUBEMX,这里不再赘述,可以参考其他博客。
2.点击INSTALL
3.按照下图所示选择对应的版本下载,我使用的是9.0.0版本
4.等待下载完成即可
二、创建工程
5.点击ACCESS TO MCCU SELECTOR
6.选择芯片,根据自己所使用的芯片选择。
7.按照下图所示选择
8.按照下图所示的方式上传自己的模型
9.选择文件后的结果如下图所示
里面所使用的模型文件:
10.点击Start Project
11.配置RCC、SYS、USART1
12.选择中间件
13.如图根据自己的要求选择,这里我按照下图选择
14.上一步选好后点击 OK 再次点击X_CUBE-AI会弹出弹窗,选择 NO
15.点击NO之后进入下图所示界面,按照下图进行选择
16.按照下图选择串口1
17.按照下图操作
18.
19 .开始加载
20.加载完成
21.
-1 注!!!!!!! 如果你的电脑账户是中文,或者你上传的模型的路径是中文,那么大概率会报以下错误。
22. 解决方式我最后的解决方式是使用电脑上的另外一个英文名字的账户,重新安装了前面讲述的步骤,并且将模型文件都放在了英文路径下,就可以了。
- 2 如果显示字节的问题,直接搜索,会有对应的博客解答。
23.如果没问题,继续以下步骤。
24.点击OK,配置时钟树,根据自己使用的开发板进行配置
25.输入工程名称,选择相关设置
26.勾选下图所示的选项后点击生成工程
三、编译下载工程
1.使用KEIL打开建立好的工程
2.点击编译,成功如下所示 0错误 0警告
3.如果报以下的错误
4.点击上方的魔术棒,进入Linker后点击Edit
5.这是正确的内容6.这是错误的内容,内存区域冲突了
7.修改为以下的内容即可,直接使用全部的RAM(256KB - F429挑战者)
8.修改后再次编译即可通过,然后将HEX文件下载到开发板中,根据自己的开发版选择对应的下载方式,我这里是使用的是配套的DAP下载
四、验证模型
9.下载完成后,使用USB转串口或者数据线连接开发板的串口1到到电脑上,使用STM32CUBEMX打开刚才的CUBEMX配置文件,回到下图的界面。
10.按照下图操作
11.如果如下图所示即为验证成功
12.如果显示无法连接串口的话,将开发板和电脑的接口都断开,开发板复位,然后再将串口和电脑连接,重新进行上述操作即可。
五、总结
1.该方式适合模型较小的情况,第一次尝试的话直接使用我上传的模型比较好,我下载的是官方的模型。
2.如果要部署超过开发板本身FLASH 和 RAM的模型:
- 压缩模型到适合的大小
- 开发板外接FLASH和RAM
- 动态使用空间(推理速度会变慢)
3.该博客只是带着走一遍完整的过程,其中有些配置及设置需要自行查看官方文档介绍或者b站视频学习。
---------------------------------- -----------该博客为原创,不允许抄袭 ----------------------------------------------
该篇博客当中如有问题,请在评论区留言。