2. MCU与TinyML基础

在MCU上运行TinyML推理,第一步不是写模型,而是理解“模型要落在什么硬件上”。MCU(微控制器)与手机、服务器最大的不同,是它把CPU、Flash、SRAM、外设和中断系统集成在一颗芯片里,资源以KB计、功耗以mW计、实时性以微秒计。只有把MCU的架构、内存层次和外设接口看清楚,才能判断一个模型能否部署、推理延迟是否可接受、数据从哪里来又往哪里去。

一、常见MCU架构:从内核到总线

当前TinyML主流MCU内核分为三类:ARM Cortex-M系列、RISC-V以及部分厂商自研内核。Cortex-M又按能力分层:M0/M0+面向极低功耗与低成本,通常无FPU、无DSP扩展;M3/M4增加DSP指令与可选FPU,适合定点卷积与MFCC;M7/M55主频更高,带Cache、TCM与更强DSP,可承载稍大的神经网络。RISC-V则以开放指令集和可扩展性见长,部分型号集成向量扩展,适合定制化推理加速。

架构上,MCU通常由内核、总线矩阵、存储控制器和外设四部分组成。内核通过AHB/APB总线访问Flash、SRAM与外设;DMA可在不占用CPU的情况下搬运ADC采样或SPI数据。对TinyML而言,关键不是主频数字,而是“数据搬运路径是否顺畅”:如果每次推理都要CPU逐字节搬运,延迟和功耗都会显著上升。

MCU 内部架构与 TinyML 推理数据流 CPU 内核 Cortex-M / RISC-V DSP · FPU · 中断 CMSIS-NN 算子 内存层次 Flash:模型权重 SRAM:激活/张量 TCM / Cache:热点 外设接口 ADC / I2S / SPI I2C / UART / GPIO DMA 搬运通道 总线矩阵 AHB / APB:内核、存储与外设之间的数据通道 传感器采样 麦克风 / IMU / 电流 预处理 滤波 / 分帧 / 归一化 TinyML 推理 TFLite Micro 解释器 输出动作 告警 / 控制 推理链路:采样 → 预处理 → 模型推理 → 输出,全程受 SRAM 与 Flash 容量约束

二、内存层次:模型能不能放下的关键

MCU的内存通常分为Flash与SRAM两级。Flash存放程序与模型权重,容量从64KB到2MB不等;SRAM存放运行时张量、栈和堆,容量常见为20KB到512KB。TinyML模型部署时,权重常驻Flash,激活值在SRAM中反复读写,因此SRAM往往比Flash更早成为瓶颈。

以关键词唤醒为例,一个约30KB的DS-CNN模型,权重可放入Flash,但推理时中间张量可能占用数十KB SRAM。若SRAM不足,就需要采用分块计算、原地复用或降低输入分辨率。部分MCU提供TCM(紧耦合内存)与Cache,把热点数据放在TCM可显著降低访问延迟;但Cache行为不确定,实时推理中需谨慎评估最坏执行时间。

判断模型能否部署的快速估算:模型权重 < Flash 的 60%,峰值激活内存 < SRAM 的 70%,并预留至少 4KB 栈空间给中断与运行时。

三、外设接口:数据从物理世界进入模型

TinyML的输入来自传感器,外设接口决定了采样质量与数据吞吐。常见接口包括:ADC用于模拟电压采样,I2S用于数字麦克风,SPI/I2C用于IMU、温湿度与气压传感器,UART用于调试与通信,GPIO用于触发与状态指示。DMA则让外设在后台搬运数据,CPU只在缓冲区满时被中断唤醒,从而降低功耗。

实际工程中,采样率、位宽与缓冲区大小需要与模型输入严格对齐。例如语音模型要求16kHz、16bit、单声道,若I2S配置为48kHz,就必须在预处理阶段重采样,否则模型输入分布偏移,准确率会明显下降。

// 典型音频采样与推理循环(伪代码)
i2s_config: 16000 Hz, 16 bit, mono
dma_buffer: 2 x 512 samples
while (1) {
    wait_for_dma_half_or_full();
    preprocess(dma_buffer, mfcc_out);
    interpreter->Invoke();   // TFLite Micro 推理
    if (output[1] > 0.8) trigger_action();
}

四、典型应用场景与产业价值

TinyML在MCU上的典型场景包括:关键词唤醒与语音命令、振动异常检测、电机电流故障诊断、可穿戴心率与步态识别、智能家居手势与存在检测、工业预测性维护等。这些场景的共同点是:数据敏感、要求低延迟、现场供电受限、网络不稳定或不允许上云。

应用场景 典型传感器 模型规模 核心价值
关键词唤醒 数字麦克风 / I2S 20–80KB 隐私不出设备、毫秒级响应
振动异常检测 MEMS 加速度计 / SPI 5–30KB 提前发现轴承磨损,减少停机
电机故障诊断 电流采样 / ADC 10–50KB 边缘实时保护,降低维护成本
可穿戴健康监测 PPG / IMU 10–40KB 低功耗连续监测,提升续航

产业价值体现在三个层面:第一,把推理放在端侧,减少数据上传,降低带宽与云端算力成本;第二,满足隐私与合规要求,原始数据不出设备;第三,实现低延迟闭环控制,在工业与汽车场景中直接产生安全与效率收益。对开发者而言,掌握MCU架构、内存层次与外设接口,是让TinyML模型真正落地的前提。

常见误区:只看主频选型,忽视SRAM与DMA能力;把模型在PC上跑通就直接部署,未评估峰值内存与最坏延迟;采样率与模型输入不匹配,导致现场准确率大幅下降。建议在选型阶段就用真实模型做一次内存与延迟预算。