3. 硬件平台准备:STM32开发板选型与调试器配置
做嵌入式AI部署,说白了就是让模型在真实的芯片上跑起来。选对开发板,是第一步。我个人习惯是,先看芯片的算力和内存够不够,再看调试工具顺不顺手。今天咱们就以NUCLEO-F746ZG为例,把硬件平台这摊事捋清楚。
3.1 为什么选NUCLEO-F746ZG?
你可能要问:市面上那么多STM32板子,为什么偏偏挑这块?我刚开始做AI部署时也踩过坑——选了个Flash只有256KB的板子,模型刚转完就塞不进去。后来学乖了,选型时先看这几个硬指标:
| 参数 | NUCLEO-F746ZG | 我的评价 |
|---|---|---|
| 主控芯片 | STM32F746ZGT6 | Cortex-M7内核,带FPU和DSP指令集 |
| 主频 | 216 MHz | 跑轻量级CNN够用 |
| Flash | 1 MB | 能装下不少模型权重 |
| SRAM | 320 KB | 做中间变量缓存,勉强够用 |
| 板载ST-LINK | V2-1 | 调试、烧录、虚拟串口全包了 |
| Arduino兼容接口 | 有 | 方便接传感器扩展板 |
我的经验:如果你只是入门验证AI模型,NUCLEO系列性价比最高。我见过有人一上来就买Discovery Kit,结果大部分外设根本没用上。先拿NUCLEO跑通流程,再考虑升级。
3.2 板载外设介绍
NUCLEO-F746ZG这块板子,外设不算多,但够用。咱们重点看几个跟AI部署相关的:
- 用户按键(B1):蓝色按钮,接在PC13上。我习惯用它做推理触发——按一下,跑一次模型。
- 用户LED(LD1/LD2/LD3):三色LED,分别指示USB通信、电源和用户状态。调试时用来显示推理结果,很直观。
- ST-LINK虚拟串口:通过USB连接到PC,打印日志和模型输出。我调试模型精度时全靠它。
- Arduino Uno V3扩展接口:可以插传感器扩展板。比如接个摄像头模块,做实时图像识别。
- 以太网接口(RJ45):板载以太网PHY,适合做边缘端数据上传。
小技巧:虚拟串口的波特率默认是115200。我建议你在CubeMX里直接配好,省得后面改代码。
3.3 调试器(ST-LINK)配置
ST-LINK是ST官方调试器,NUCLEO板直接集成在板上。你插上USB线,电脑就能识别。但这里有几个坑,我当年都踩过。
3.3.1 驱动安装
Windows系统下,ST-LINK驱动通常自动安装。如果没识别,去ST官网下载ST-LINK USB driver。我建议直接用STM32CubeProgrammer自带的驱动包,省事。
3.3.2 固件升级
ST-LINK的固件偶尔需要更新。你打开STM32CubeProgrammer,点Firmware Update,它会自动检测版本。我曾经因为固件太旧,调试时断断续续,折腾了一下午才发现是这问题。
警告:升级固件时,不要拔USB线。变砖了只能换板子,别问我怎么知道的。
3.3.3 调试接口配置
在CubeMX里配置调试接口时,注意选对模式:
// 在Pinout & Configuration界面
// 选择:System Core -> SYS -> Debug
// 可选模式:
// - Serial Wire: 只用SWDIO和SWCLK两根线
// - JTAG: 5根线,占用更多引脚
// 我一般选Serial Wire,省引脚
选完后,CubeMX会自动分配引脚。你检查一下PA13(SWDIO)和PA14(SWCLK)有没有被其他外设占用。我遇到过把SWDIO复用成GPIO的情况,结果程序烧进去就再也连不上了——只能按住复位键擦除Flash。
3.4 硬件连接与验证
板子拿到手,先别急着写代码。按这个步骤验证一下硬件是否正常:
- 用USB线连接NUCLEO板到电脑,板载绿色LED(LD3)应该常亮。
- 打开设备管理器,查看端口(COM和LPT)下是否有STMicroelectronics Virtual COM Port。
- 打开STM32CubeProgrammer,点击Connect,如果能读到芯片信息,说明ST-LINK工作正常。
- 按一下蓝色用户按键(B1),观察蓝色LED(LD1)是否闪烁——出厂预装程序有这个功能。
避坑指南:我曾经拿到一块新板子,怎么都连不上ST-LINK。后来发现是USB线的问题——有些线只能充电,不能传数据。换根好点的线就好了。
3.5 硬件平台知识体系
下面这张图,帮你把本章的核心逻辑串起来:
3.6 开发环境快速验证
硬件准备好后,我习惯先跑一个点灯程序,确认整个链路通不通。你打开STM32CubeIDE,新建一个NUCLEO-F746ZG项目,在main.c里写:
// 简单点灯测试
HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin);
HAL_Delay(500);
编译、下载。如果蓝色LED以0.5秒间隔闪烁,说明硬件平台准备完毕,可以进入下一步了。
个人习惯:我每次拿到新板子,都会先跑这个点灯程序。不是为了炫技,而是确认调试器、编译器、烧录链路全部正常。后面模型部署出问题时,至少能排除硬件环境的问题。