005、嵌入式系统基础:MCU、MPU与SoC的区别
005 嵌入式系统基础:MCU、MPU与SoC的区别
上周帮一个做智能家居的团队排查问题,他们用STM32F4驱动一块LCD屏,发现刷屏速度死活上不去。我一看代码,好家伙,他们直接在main循环里用GPIO模拟8080时序,CPU全速跑在72MHz,刷一帧要200多毫秒。我说你们这板子上不是有FSMC接口吗?对方一脸懵:“FSMC是啥?我们以为MCU就是单片机,跑个裸机就完了。”
这个场景我见过太多次了。很多从纯软件转过来的朋友,一上来就把“嵌入式”等同于“单片机”,把“单片机”等同于“MCU”。等遇到需要跑Linux、需要处理复杂外设的场景,就开始在选型上翻车。今天这篇笔记,咱们就把MCU、MPU、SoC这三个概念掰扯清楚,顺便聊聊实际选型时那些容易踩的坑。
从一次选型翻车说起
去年有个做边缘AI的朋友找我,说他们用树莓派做产品原型,跑TensorFlow Lite推理,效果不错。结果量产时发现树莓派成本太高,想换成国产芯片。他们找了一颗号称“AI MCU”的芯片,主频400MHz,带硬件NPU,价格才十几块。兴冲冲画了板子,结果发现:这芯片没有MMU,跑不了Linux,只能跑RTOS。他们之前用Python写的推理代码全得用C重写,而且内存只有512KB,模型量化后还是塞不下。
这就是典型的把MPU和MCU搞混了。树莓派的BCM2711是MPU,带MMU,能跑完整的Linux。而那颗“AI MCU”本质还是MCU,只是加了硬件加速器。两者虽然都是“处理器”,但软件生态和开发范式完全不同。
