
074、STM32Cube.AI的硬件加速:STM32MP1与STM32N6一、从一次诡异的推理延迟抖动说起去年做工业视觉项目,在STM32MP157上部署了一个轻量级MobileNetV2,跑分类任务。板子跑起来后,大部分时间推理稳定在12ms左右,但每隔几十帧就会突然跳到35ms,偶尔还冲到50ms。一开始以为是DMA传输问题,查了三天,最后发现是Cortex-A7和Cortex-M4之间的NPU资源争抢——Cube.AI生成的代码默认把卷积层全扔给了M4侧的NPU,但A7侧的中断处理偶尔会抢占M4的带宽。这个坑让我意识到:STM32MP1的异构架构不是“把模型丢进去就能跑”那么简单。而后来拿到STM32N6的样片时,发现它的硬件加速设计思路完全不同——更像是在芯片层面把“AI加速”做成了外设,而不是协处理器。二、STM32MP1:异构架构下的加速陷阱与正确姿势2.1 硬件加速的“三块地”STM32MP1的AI加速能力来自三个层次:Cortex-A7(主核):跑Linux,负责模型加载、预处理、后处理。Cube.AI在这里生成的是纯软件推理代码,用NEON指令集加速,但别指望它跑大模型——实测MobileNetV2在A7上单帧要80ms,基本不可用。Cortex-M4(协核):跑裸机或FreeRTOS,Cube.AI会在这里