MCU和SOC二者有何区别?

控制/MCU

1878人已加入

描述

今天师弟又拿到个offer,mcu验证,问我怎么样,我只能说,二者确实有区别,但是公司也很重要,尽量选个稳定的,能让你安全度过第一个合同期~

结论:

单片机

(以上这是一个典型的soc包括进去的东西)

 

(这是常见的soc,一般很多外面都有一个壳子,这个就是个壳子,东西都在里面,就是上图的那些东西,等于一个完整的单片机,当然也可以增或者减少)

单片机

注意邮票孔不是直接接在Pcb板子上的,而是中间有一层金属板注意邮票孔不是直接接在Pcb板子上的,而是中间有一层金属板

 

(中间这个金属板,就是为了把这个soc壳子里的东西,搞成一个相对独立的模块,并且隔开和接在pcb上的普通的外设,引脚等这些屌丝设备的关系,防止电磁干扰,让soc独立成一个安全,完备的独立指挥部)

所以结论:

芯片--就是IC,集成电路板。就是连线做成了板子,就是线。等于城市的交通的地皮+道路。

MCU--由三大件和其他的外部接口组成,就是微型计算机。等于城市的行政区,功能完备。

SOC--MCU的爹,很多MCU组成,MCU在SOC上充当控制器,留出引脚和SOC主体进行沟通。相当于城市的市级或者省级,反正比区级高,又是区的集合。

比SOC更大的系统也有,比如在汽车上,前面的仪表和大屏是IMX8,后面通讯的模块是IMX6,那么这IMX6和8都算是儿子系统。

MCU=单片机,是一块集成电路芯片,是个完整的计算机。里面有负责处理指令的cpu(也可以是dsp或者gpu),负责跑程序的ram和负责存数据的rom,这几个必须的部分。这样一来它就已经是一个微型计算机了,因为第一台单片机就是这3大件组成的,只是那时候是4位处理器现在市面上都8位为主。然后的话,它这个微型计算机会根据情况搭载上一些周边接口,像内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口。

单片机

在这里插入图片描述

其中,mcu中的8位处理器的8051,16位的AVR单片机,32位的STM单片机。

MCU里面也是可以有控制器的,比如如图内部集成了处理器和各类模块,比如USB控制器、UART控制器、内存、Flash等等。只需要外接少量的器件,就可以搭建一个电子系统。

从MCU开始就是可以用汇编和C来编程的。

芯片的话通常都不能编程,因为芯片不是计算机。它就是一块集成电路板子而已

比如说,MCU的定义是芯片级计算机,意思就是,MCU上面处理器,ROM,RAM这些东西都是要放在一块板子上才行,这块板子就是集成电路板,就是芯片。但是由于你看到实物的时候看到的都是一块板,而不是处理器ROM,RAM,接口等这些东西,所以一般就指着MCU或者SOC说这块MCU/soc芯片如何如何,实际就是指的这块板。

SOC就是集成了很多个MCU的功能,以前的由多个MCU协同干的事情被集成了,MCU没有了,取而代之的是对外的IO引脚,连接IO引脚就可以实现交互,完成以前MCU的功能。

为什么说SOC是MCU的爹呢,因为它SOC上面可以是MCU,也可以是MCU的同类同级别的产品比如DSP或者MPU:左边的图是MPU,右边是MCU控制器。更多时候SOC之所以不同于MCU是因为SOC上面同时有MCU,DSP,MPU等等,比如这些都放在一起配合工作的话,SOC功能会很强大,可以快速地执行算法运算。当然了,这个时候SOC除了要伺候上面的这些MCU外还要提供他们工作所需的别的工具如外设等。就等于说是SOC是类似于一个航空母舰了,自己没有作战能力,靠的是航母上的飞机大炮等作战单元。

SOC如果要简单的话,也可以很简单,比如最简单的SOC就等于单片机了,这个时候SOC就是仅仅是在单个的MCU的基础上实现的整个芯片系统。

单片机

MCU如果没有系统的话,那一次就只能运行一个控制回路,即运行一个线程。这种东西叫裸机,工作就是靠的所谓的裸机接口。任何其他的程序要得到服务,都得等这个线程完毕才行。这时候它就退化为一个最简单原始的,所谓微控制器,controller;如果它MCU有了操作系统,那么它就可以搞多进程来操控多线程来运行。(这就是为什么操作系统5大件其中一个就是进程管理)

无系统裸机--启动前,跑启动引导的汇编程序.s文件;启动后,跑驱动硬件的单进程程序(即引导程序)。这个引导程序,就是等于linux启动的uboot,只不过uboot还有后半段。有系统--启动前,跑uboot,其中uboot前半边也是汇编,后半段可以看做是针对有系统的客制化,是c程序;启动后,跑多线程多进程,还有文件系统,各种五花八门。

等于这个中断向量表这一端,都是汇编写的,不管是裸机还是有系统的,这部分是公共的,跑不了的。这是万物之始。靠偏移中断向量表从引导程序(固件),调到引导程序后的单进程的裸机也好,多进程的系统也好,进入正文

所以,裸机简单很多,就是中断向量一定义,然后进去main。而且裸机里面可以有多个中断向量表,也就是多个main程序,一般用来升级

比如裸机st的官方引导程序,一个.s文件,代码实际上不是从main开始的,是从中断向量表开始的,一般中断向量是从0偏移地址开始,但是main函数的地址肯定不是0偏移。

架构上,SOC就是MCU+外围控制器,也可以理解成为就是以前的MCU芯片变成了一些控制器controller,这些controller来处理问题,然后对外给出IO脚就够了。

MCU就是一块芯片,然后外围都是一些硬件接口,MCU芯片控制这些硬件接口实现各种功能。它并不是多块芯片的集成。但是SOC是多块芯片(MCU)的集成。(图:imx6)

单片机

总而言之,MCU实现功能靠的是外围的一些硬件接口,变成了SOC后,实现功能靠的是外围控制器。

等于就是MCU是一个独立的国家,国家可以实现各种职能;SOC就是一个独立国家组成的联合国,它是多个国家的联合,但是功能上又和一个独立的国家别无二致。

这样做的好处是集成化程度更高,体积成本等可以得到压缩。

编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分