第2章 嵌入式系统基础回顾:MCU与MPU的区别、常见嵌入式架构、RTOS与裸机开发的选择
各位同学,咱们今天聊点实在的。做嵌入式AI融合开发,你得先搞清楚你手里的家伙事儿到底是什么。我见过太多人把MCU当MPU用,结果跑不动模型;也有人拿MPU当MCU用,功耗和成本都炸了。嗯,咱们先把这些基础概念捋清楚。
2.1 MCU与MPU:到底差在哪?
说白了,MCU(微控制器)和MPU(微处理器)的区别,就像自行车和汽车的区别。都能跑,但设计思路完全不同。
| 对比维度 | MCU(微控制器) | MPU(微处理器) |
|---|---|---|
| 核心架构 | CPU + RAM + Flash 集成在单芯片 | 仅CPU核心,外设需外挂 |
| 典型代表 | STM32(Cortex-M)、ESP32 | 树莓派(Cortex-A)、i.MX |
| 运行频率 | 几十MHz ~ 几百MHz | 几百MHz ~ 几GHz |
| 内存大小 | 几KB ~ 几MB | 几百MB ~ 几GB |
| 功耗 | 毫瓦级,可电池供电 | 瓦级,通常需要散热 |
| 实时性 | 硬实时,中断响应快 | 软实时,依赖操作系统调度 |
| AI部署难度 | 需量化、剪枝,跑轻量模型 | 可跑完整模型,甚至训练 |
核心判断标准:如果你需要跑一个超过1MB的AI模型,别犹豫,上MPU。如果模型在几百KB以内,MCU完全够用,而且成本低、功耗低。
我在项目中遇到过一件事:有个客户非要在STM32F4上跑一个MobileNet,模型量化到8bit后还有2.3MB。结果Flash只有1MB,根本塞不下。最后只能换芯片,白白浪费了两周时间。所以,选型前先算好账。
2.2 常见嵌入式架构:ARM Cortex-M/A 与 RISC-V
现在嵌入式世界基本是ARM的天下,但RISC-V正在崛起。咱们一个一个说。
2.2.1 ARM Cortex-M 系列
这是MCU的主力军。从M0到M7,性能跨度很大。
- Cortex-M0/M0+:超低功耗,适合传感器节点、简单控制。跑不了AI,但可以做数据采集。
- Cortex-M3/M4:带DSP指令,可以做简单的信号处理。我早期用M4做过一个语音关键词识别,效果还行。
- Cortex-M7:性能天花板,带双精度浮点。可以跑一些轻量级CNN模型,比如TinyML。
2.2.2 ARM Cortex-A 系列
这是MPU的主力军。跑Linux的,性能强,功耗高。
- Cortex-A7/A53:低功耗应用处理器,树莓派、全志芯片常用。
- Cortex-A72/A76:高性能,可以跑完整的深度学习框架,比如TensorFlow、PyTorch。
我的个人习惯:做AI边缘计算,如果预算允许,我优先选Cortex-A系列。因为生态成熟,库多,踩坑少。但如果是量产产品,成本敏感,我会考虑RISC-V。
2.2.3 RISC-V 架构
开源、灵活、免费。这是它的三大优势。但生态还在建设中。
- 优点:没有授权费,可以自定义指令集,适合特定场景优化。
- 缺点:工具链不成熟,第三方库少,遇到问题只能自己啃。
我曾经试过在RISC-V上移植一个TinyML模型,结果发现没有现成的CMSIS-NN库,只能手写汇编优化。嗯,那段时间挺痛苦的。但如果你有团队有精力,RISC-V的潜力很大。
2.3 RTOS与裸机开发:怎么选?
这个问题我经常被问到。你想想看,如果你的程序就一个while循环,点个灯、读个传感器,裸机完全够用。但一旦涉及到多任务、定时器、通信协议栈,裸机就会让你痛不欲生。
2.3.1 裸机开发
- 优点:代码简单、无调度开销、资源占用极低。
- 缺点:所有逻辑自己写轮询,任务多了容易乱。
- 适用场景:单任务、简单控制、超低功耗设备。
避坑指南:我曾经在一个项目中用裸机做数据采集+蓝牙传输,结果蓝牙协议栈的轮询把主循环卡死了,数据采集丢包严重。后来换成FreeRTOS,用两个任务分开处理,问题迎刃而解。
2.3.2 RTOS(实时操作系统)
- 优点:任务调度、信号量、消息队列、定时器,开发效率高。
- 缺点:有调度开销(通常几微秒到几十微秒),占用RAM/Flash。
- 适用场景:多任务、有通信需求、需要实时响应的系统。
常见的RTOS有:FreeRTOS(最流行)、RT-Thread(国产,中文文档好)、Zephyr(支持AI扩展)。我个人习惯用FreeRTOS,因为生态好,遇到问题网上随便一搜就有答案。
2.3.3 结合AI场景的选择建议
| AI应用场景 | 推荐方案 | 理由 |
|---|---|---|
| 传感器数据采集 + 简单推理 | 裸机 + 定时器中断 | 资源紧张,裸机更高效 |
| 语音唤醒 + 网络通信 | RTOS(FreeRTOS) | 多任务管理方便 |
| 摄像头图像识别 | RTOS 或 Linux | 数据量大,需要复杂调度 |
| 边缘服务器推理 | Linux + 多线程 | MPU平台,RTOS不够用 |
我的建议:如果你刚开始做嵌入式AI,先从RTOS入手。因为裸机开发虽然简单,但后期扩展性差。RTOS的学习曲线并不陡,花一周时间就能上手。而且,很多AI推理框架(比如TensorFlow Lite Micro)都支持RTOS,省心不少。
好了,这一章的内容就到这里。记住一句话:选型决定成败。MCU还是MPU,ARM还是RISC-V,裸机还是RTOS,没有绝对的好坏,只有合不合适。下一章咱们开始真正动手,搭建开发环境。