Linux上位机开发实践(SoC和MCU的差异)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
soc一般是指跑linux的芯片,而mcu默认是跑rtos的芯片,两者在基本原理方面其实差异不大。只不过,前者由于性能的原因,会被用在性能较高的场景之下,后者则多用于实时应用的场合,本质上两者的差别没有大家想象的那么大。
1、soc+ddr+flash=mcu
mcu可以看成是soc、ddr、flash的一个集合体。mcu的cpu一般是8051,或者是arm,频率不是很高,通常是几十到上百M不等,内部集成了232等低速接口。ddr就是ram,一般几k到上百k,当然soc的内部用mmu管理ddr。flash就是代码存储的地方,一般也是几十到1M不等。这部分集成在一起,就是mcu。
当然现在也有一种mcu是集成在soc里面,这种mcu,当成soc的一个设备节点就可以了。
2、mcu电源要求不高
mcu的电压,大多数情况都是5v转3.3v。soc则要复杂的多,很多时候除了3.3v,可能还需要2.5v、1.8v、1.2v等等,所以为了简便,soc的外围很多时候会集成一个pmic芯片,专门用来负责不同电压的输出。
3、烧入方式稍有差异
mcu目前swd烧入基本是标配,soc的话,则是usb otg烧入为主。mcu就是内部flash启动,soc则是spi nor、spi nand、emmc或者tf卡启动。至于晶振和复位,两者一样。
4、除非特定camera产品,mcu一般低速接口为主
这里的低速接口就是大家一直使用的gpio、232、485、can、spi、i2c、pwm,少部分集成了sdio、usb和eth。有一些mcu是专门用来处理camera数据的,左边从mipi进来之后,经过isp,通过usb uvc协议送出去,这种专门处理camera的mcu芯片也是存在的,很多的usb相机也是这么做的。只不过这种芯片都是专款专用,除了camera,就不能用在其他方面了。与此相比较,soc则是聚集了很多高速的接口,这些接口都是以差分总线的形式存在。
5、mcu价格普遍不高
大多数mcu的价格都是在10块钱以下,2-3块钱的mcu也是不稀奇,甚至是1块钱、几毛钱。当然,很多高端的mcu还是不便宜的,比如m7的mcu。soc的价格则相对贵一点,大部分都是10块钱以上,哪怕是f1c100s这样内部集成32m ddr的soc,价格也在1.5个美金,大约10块钱左右。
当然要想soc运行起来,外部还要一个nandflash,这相当于成本上又多了几块钱。
6、mcu可以实现soc的大多数功能
一般soc可以做的,mcu都可以做。比如传感器数据的处理、普通接口的处理、屏幕显示、网络通信、文件系统、usb通信等等,这部分mcu都可以完成。所以,mcu能做的工作事实上,要比大家认为的多得多。
7、图像数据是mcu、soc应用的分水岭
对于低速数据,mcu和soc差异不大,但是高速总线部分,两者就慢慢拉开差距。比如复杂的soc,一般默认集成了isp,可以对图像数据进行编码、解码的处理,除此之外,soc通常还会集成npu,实现图像ai处理,这些都是目前为止soc才有的功能。
图象处理是生产、生活中很大的一个应用,从最基础的显示、截图和录制,到rtsp低时延访问,再到工业相机、内窥镜、ai部分,这块市场其实非常大。mcu虽然也可以做一部分usb camera的工作,不过主力的实现还是通过soc+linux+加速ip来完成的。哪怕是usb camera,用mipi+soc+usb otg实现,效果也会更好,功能也会更全。
有了图像数据,所有的配套都要修改,比如cpu频率要提高,ddr要扩大,flash要增大,算法要硬加速,网络传输也要更快,所以数据量的提高、需求的变化是嵌入式技术发展最本质的原因。
8、实时控制是mcu的拿手好戏
一开始mcu就是被用来进行控制处理的,比如电机的控制周期是6ms、8ms这样,用windows或者linux是没有办法完成的,但是对mcu来说却是很容易做到的事情。所以,只要是涉及到实时处理的部分,哪怕外挂都会外挂一个mcu来处理。
9、mcu非常适合个人来做
从软硬件协同的角度说,mcu非常适合个人来做,本身电路不复杂,而且大部分mcu的应用就是while(1)+中断的形式来进行,就算是需要上位机适配,做一个qt上位机就好了,自己可以把大部分精力放在业务端来进行,养活自己肯定是没有问题的。
相比较而言,soc要复杂一点,首先电路涉及到soc+ddr+nand+pmic,弄好了硬件,接着还得继续搭建uboot/kernel/rootfs的框架,不同的外设还得找不同的驱动,哪怕是一个屏幕,还有spi、iic、rgb、mcu接口、mipi、hdmi、lvds等很多的标准。等到这些都做好了,才能开始业务开发。为了突出业务的竞争力,必须适配厂家的sdk平台,寻找开源代码,这方面自然就没有mcu方便。这一切都做好了之后,才能慢慢去找客户,找市场。相比较而言,mcu的开发要容易一点。
10、用到什么学什么
mcu和soc没有明显的分水岭,不存在谁比谁高级的问题,客户需要什么,我们就做什么。技术再好,卖出去才行。所以大家没必要画地为牢、固步自封,只需要知道两者的区别,在不同的场景下选择哪种方案合适就好。