可以具体参考知乎上的讨论怎么深入浅出地理解「单片机、ARM、DSP 有互通之处,都是 CPU」?
一.理解MCU,ARM cpu, DSP
作者:匠人时尚
链接:https://www.zhihu.com/question/19862452/answer/155272152
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
单片机又叫MCU,ARM和DSP其实也都可以称为MCU,但是比传统的MCU强大且侧重点不同,所以就独立出来了。编程语言都是C或者汇编,由于C语言的良好移植性,随着MCU的功能逐渐增强,大部分时候不用汇编语言了。
这三者的架构都是基于指令流水线的,就是从存储器读指令,解析指令,执行指令这样的一个流程。电脑的结构也一样。
要想了解广义MCU首先需要了解以下概念:
- 指令集:主要分为两类,复杂指令集(CISC)和精简指令集(RISC)。复杂指令集是早期英特尔(Intel)所使用的指令集,即使到现在,依然广泛应用在PC机的处理器中,与之相对的是精简指令集(RISC),业界普遍认为RICS的执行效率高。至于孰优孰劣,众说纷纭,个人认为英特尔作为处理器第一大厂商,坚持使用复杂指令集除了为了保持对老版本兼容外,一定有RISC无法替代的优势。
- 系统结构:主要分为哈佛结构和冯·诺依曼结构。所谓哈佛结构就是将数据与指令分开存储,独立编址,可以提高数据调用的效率,TI的DSP也是用这个结构;与之对应的是冯·诺依曼结构,数据与指令共同编址,节省一条总线。
MCU(Microcontroller Unit)就是所谓的单片机,将计算机的主体部分集成在一块半导体上,因此单片机是半导体集成技术不断发展的产物,现在的一个芯片的处理能力可能要比当年能占整个屋子的埃尼阿克(ENICA)处理能力强不知道多少倍了。
众多MCU中影响最为广泛的应该是51系列单片机了,基于复杂指令集(CISC)和哈佛结构。我所学习的第一款单片机就是基于51内核的AT89S52单片机,制造商是美国的爱特梅尔(Atmel),当时也有小伙伴使用台湾宏晶的STC系列51单片机。那个时候应该已经不是51的天下了,老牌厂商去玩更高级的芯片,所以厂商比较少。从功能上看宏晶STC系列明显很强大,Atmel的单片机只具有51单片机最基本的功能,4组8为IO口,两个定时器,两个外部中断,一个串口,而宏晶STC在51的基本架构外扩展了IIC接口、SPI接口、PWM、ADC等片上外设。对比应用以后会发现,美国的芯片稳定性确实要好很多,标称5V供电的单片机可以用两节干电池供电(额定3V),大大扩展了应用场合。
除了51单片机,目前应用比较广泛的还有Atmle的AVR系列,Microchip的PIC系列,德州仪器TI的MSP430系列,意法半导体ST的STM8系列。等等等等……这只是我听说过的,没听过的肯定还很多。广义来看ARM和DSP也可以称为MCU。AVR系列早期是8位单片机,后来出产了AVR32的32位机,我觉得就跟Atmel的51一样,比较皮实,供电电压范围很宽,不过价格比较贵;PIC单片机,我听说在工业上应用很广泛,功能很强大,抗干扰能力强,价格吗,也挺贵的;MSP430主打低功耗,一般MSP430的开发板都会配备墨水屏用于显示,因为静态不耗电,不然单片机剩下来的电分分钟被屏幕用掉了。通常认为功耗低的单片机抗扰能力都比较差,因为信号弱嘛,不过TI很多推广很多是用MSP430做电源的,感觉与这款MCU的设计初衷相悖了,因为电源不在乎那点电啊,而且电源的干扰都比较强,。STM8系列单片机,最大特点就是便宜,和ST的ARM一样,一个带有ADC,PWM,串口,IIC,SPI的单片机,在淘宝上售价才一块多钱,太吓人了。
ARM本意是高级精简指令集机器(Advanced RISC Machine),是英国剑桥的ARM公司推出的处理器架构,这是一家半导体架构知识产权提供商。半导体制造商向ARM购买架构,然后增加片上外设做成自己的芯片。最近几年ARM的势头非常迅猛,安卓操作系统更是让ARM占领了移动端处理器,英特尔虽然几度发力依然不见成效。高通由于其在通信方面专利的优势,在安卓手机出现后更是大展宏图,占领了大量市场。
ARM其实是架构的名称,就像MCS51一样,所以我说,ARM也是MCU,只是这个领域深耕以后变得十分庞大。ARM的架构也出现了很多细分,在我大一的时候就听说同学要学习ARM,当时还是ARM9的天下,有些人拿着三星的S3C2440学习嵌入式Linux的移植,还有人学工控级ARM处理器STM32,这是意法半导体的基于Cortex-M3内核的ARM。说来当时我也蛮天真的,大家都学ARM,我也想学啊,但看到后缀是9,我得从1开始学啊,然后没几天,听说有了ARM11,我心想完了,根本追不上啊……。
貌似ARM从11开始就重新编号,扩展了产品线,也就是所谓的Cortex系列内核,其中包括3类,M,A,R。其中M是工控系列其中我比较熟悉的就算是STM32了,其他的还有恩智浦(NXP)的LPC系列,飞思卡尔的K60系列等等。M系列主频相对较低,具有比较强大的ADC和定时器PWM等功能,同时扩展各种基础接口,除了传统的串口,IIC,SPI以外,还有些芯片还有网口的部分底层硬件,USB的低版本功能(例如USB1.1),SDIO之类。M系列存在的意义就在于让你的产品能够在增加最少的外围器件的前提下实现更多的功能。A系列是移动端嵌入式系统处理器,功能强大, 通常要跑操作系统,现阶段手机端除了华硕曾使用英特尔的Atom以外,基本都是Cortex-A系列芯片,包括苹果的手机端处理器。R系列我不太了解,传说中应用于对实时性要求比较高的场合,例如通信交换机方面。
DSP(Digital Signal Processor)数字信号处理器,是一种主要针对数字信号处理的芯片,具有强大的运算能力,在移动端的数据处理,声音采集的方面应用较多,目前的主流厂商有两个:德州仪器(Texas Instruments)和亚诺半导体(Analog Devices),非主流的有飞思卡尔(freescale)。估计是德州仪器早期在高校中推广做得比较好,在学校里应用比较多,也导致了企业应用的拓展。电力电子专业使用TI的DSP做电机控制,电源的调制等,不过我们应用的C2000系列,已经被TI降级,定性为数字信号控制器(DSC),从应用中看主要感觉编译器问题比较多,例如声明变量不赋值就可能出现随机值,编译效率低等问题,还曾经发现过ePWM移相同步功能的一个小缺陷。当然DSP还是主打数据处理功能,具体来说片上通常会有单周期硬件乘法器,浮点处理器,甚至可能有用于快速傅立叶变换的硬件,而且通常使用哈佛结构,对数据单独编址,提高读取效率。以上特点带来的问题就是功耗比较高。
二.vDSP (Vision DSP)
是具有处理视觉处理能力的专用DSP
目前cadence有相关DSP