ARM架构、ARM7、ARM9、STM32、Cortex M3 M4、51、AVR之间有什么区别和联系?
ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~ARMv8种类。
ARM7:一类采用ARMv3或ARMv4架构的,使用冯诺依曼结构的内核。
ARM9:一类采用ARMv4或ARMv5架构的,使用哈佛结构的内核。
Cortex M3:采用了ARMv7架构的,使用哈佛结构的内核。
Cortex M4:采用了ARMv7架构的,使用哈佛结构的内核。(较前者最大区:别增加了一个DSP处理功能,SIMD单指令多数据功能。其他区别请自己在实际项目开发中体验)
STM32:意法半导体公司(ST)推出的系列基于Cortex-M0/Cortex-M3/Cortex-M4等内核的微处理器/微控制器芯片。
--------------------------------一个类似的集合用分割线隔离开
51: Intel在1981年推出的由8031微控制器芯片改造升级的、使用CISC指令集的、冯诺依曼架构的、8位的8051微控制器。后Intel将8051微控制器的内核授权给其他芯片厂商,使得市面上广泛出现类似于8051的芯片,这种采用8051内核的芯片被简称为51。
--------------------------------一个类似的集合用分割线隔离开
AVR:一系列由ATMEL公司在九十年代出推出的系列8位的、采用改进哈佛结构的、使用RISC指令集的微处理器芯片。
================应邀补充======================
最开始的Intel公司都是自己从头研发处理器芯片。从4004、8008、8086、80286……TI公司的TMS 1000……还有其他的公司研发的可编程芯片。因为是不同公司,而且个公司之间也不可能有交流(防止商业秘密泄露),所以各自做的都芯片都有在内部CPU、总线、存储单元、指令集上的不同(如果有相同,那就是专利侵权了,比如INTEL当年锲而不舍控告AMD)。但每个公司研发的新老芯片之间都有一定的结构和技术是上的传承,所以出现了不同公司研发的芯片中有不同的架构。
架构 architecture:是一个抽象的概念,是一个结构内的元素及元素间关系的一种主观映射的产物。概念性的东西请看微架構。
比如我们常说的计算机处理器有486、Ivy Bridge、Pentium M……这就是架构的不同(其都从属于x86架构),维基的内容里只提到了计算机处理器中的常见硬件架构,而没提到你想了解的、常用语嵌入式系统中的微处理器/微控制器芯片所用到的架构。
而你说的联系,就是我前面用分割线隔离开来的:ARM架构到STM32这些名称都属于ARM架构的范畴。
这两天忙着考虑控制步进电机的程序设计,所以脑子有点不够用,表达有点障碍。如果你关注过计算机CPU历史就能理解我所说的架构是怎么一回事。
内核 IP core:概念请看IP核。可以说IP核是硬件架构这个抽象概念在芯片内的具体实现。
上面说了,最开始都是各个厂家自己做,从架构研发到芯片成型,这种好处是自己完全掌握了核心技术。但劣势是投入巨大,一旦大投入但设计出来的芯片因为架构的不合理而导致市场流失,那之前的投入就打水漂了。
而当年INTEL的8031和8051在嵌入式工控领域热卖(其实现在还有些工控领域坚持用8031,因为稳定,这个以后有空再说)。而intel可能是从生产成本和扩展领域方面的考虑(人家做计算机微处理器比这赚钱多了),自己逐渐放弃了8051芯片的生产,转而允许授权其他公司生产。集成芯片内部就是一堆晶体管的集合,用硬件描述语言来规定晶体管的排列组合从而实现中央处理器、总线,存储单元……,Intel把如何实现8051架构的硬件描述语言授权卖给其他公司(买内核),获授权的公司就能生产具有8051内核的芯片了。
微控制器MCU/微处理器μP:
一开始只有小型微型计算机所使用的微处理器,后来Intel从4004发展到8086阶段中衍生除了专门用于工业控制方面的8031到8051,然后是用于计算机的微处理器慢慢发展向超高集成度、大容量、高频率、大处理能力以符合计算机技术的日益发展需求。而8051则平稳发展向了高稳定性、多功能集成度的微控制器,以满足工业控制领域对内存需求相对不是太大,但稳定性高、外设功能较多、占用面积小的要求。
最开始的区分就是微控制器带有内部RAM(等同于计算机的内存条,当然芯片内集成不会有那么大的内存,一般撑死了128K内存)、和ROM(等同于计算机的硬盘,当然也不会有想硬盘大的容量),以及其他的外设功能(如串口、spi、I2C等功能)。简单的说就是把一个缩小资源容量的计算机放到一个芯片内。也因为这样单芯片集成了一个完整的计算机系统在里面,大陆地区在80、90年代的电子工程师将其称为“单片机”,然后影响至今。
(注意,一个完整的计算机系统是处理器、总线、存储结构、输入输出结构,所以不要跟我说为啥没有显示器和鼠标键盘它单片机也敢说继承了一个计算机系统,你可以翻翻《计算机系统原理》课本)
而计算机微处理器因为需要从处理数据角度考虑,纯粹只做处理方面的升级,所以在一开始的区分中,微处理器是不集成RAM、ROM、和其他外设功能的。
只是因为PowerPC往嵌入式发展,以及后来ARM的出现,开始慢慢的又缩小了微处理器和微控制器的区别,这些微处理器也开始集成了RAM、ROM、其他外设……
但现在国际上也没有一个统一的,通用的标准说微处理器和微处理器之间的区别是什么。跟“单片机”一样,都是工程师自己叫出来的。也有人把8051也成为微处理器的……
而从我做过的Ti的DSP、ARM7、ARM9等芯片来看:
微处理器μP是需要通过并口外扩RAM、ROM,并且程序从外部ROM启动,在外部RAM运行的。
微控制器MCU通过内部ROM启动程序,在内部或外部RAM运行程序的。
这只是我的个人见解,因为有的芯片可以被配置为微处理器,也可以被配置为微控制器,其配置后的区别就是程序从哪里启动在哪里运行。比如德州仪器TI的TMS320F2812 DSP芯片。
BTW:DSP芯片本质上其实也是一个微处理器/微控制器芯片,只是它内含了DSP数字信号处理功能,比如上面说到的Cortex-M4也是集成了DSP数字信号处理功能呢,但ARM公司不称呼它为DSP,这都是工程师自己称的。没有统一标准。我在另外一个回答里提到了。我就不粘贴过来了。
ARM和 Intel谁能代替 DSP?
------------------------------------关于冯诺依曼结构----------------------------------------------
冯诺依曼结构:是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。应该说ARMv3之类的内核的存储结构模式和寻址模式使用了这种冯诺依曼结构,一个完整的微处理器架构还需要指令集等其他系列结构。
如果是问主不理解冯诺依曼结构的话,建议学习一下《计算机系统》或《计算机系统原理》这一类书籍。在我记忆中貌似大学大一大二必修的《计算机原理》这一类的都会提到(用于考计算机一二级神马的教材)。
-------------------------------插一个关于嵌入式概念的补充-------------------------------------
IEEE和IEC对于嵌入式系统(Embedded System)的诠释,从最早期的4004、8031、8051,直到现在流行的ARM和很难学的PowerPC,这些芯片如果应用在“用于控制、监视或者辅助操作机器和设备的装置”上时,都应该是属于嵌入式。(还有人曾将X86架构的80386用于嵌入式系统的)
所以不要再来问我如何从单片机转向嵌入式这种问题了。因为做单片机开发本身就是嵌入式开发。要问请问清楚你是想宗8051转向ARM还是PowerPC。
最后,我想提一下CPU这个概念:一般人听到CPU都会想到个人电脑里面的那个被散热片、风扇重压的大芯片。其实严格来说这是一个错误的概念。
CPU:(zh.wikipedia.org/wiki/CPU)严格来说CPU只是指微处理器/微控制器芯片内部的中央处理器这个模块,但人都有把某主要功能夸大、忽略其他必备的辅助功能的这种思维。所以有的时候听到了某个电子工程师、嵌入式工程师说CPU输出什么什么东西的时候,不要以为他在说电脑里的那颗大芯片,他可能是在说ARM、PowerPC、51、AVR之类的芯片。
(记得某年的公务员考试的试题里就提到这个CPU的实际概念,就是提问“计算机中必须的芯片是什么?”,而给出几个选项“A、微处理器;B、CPU;C、…”一个简单的选择题估计考歇了很多人)