ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系?
本文转自嵌入式资讯精选公众号,特别鸣谢,
编者按:初学习ARM单片机的同学们可能会对ARM的架构定义并不是很明确,形形色色的名词背后到底代表什么含义呢?请听听这位嵌入式工程师的经验总结。
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架构的范畴。
内核 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,这都是工程师自己称的。没有统一标准。
冯诺依曼结构:是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。应该说ARMv3之类的内核的存储结构模式和寻址模式使用了这种冯诺依曼结构,一个完整的微处理器架构还需要指令集等其他系列结构。如果不理解冯诺依曼结构的话,建议学习一下《计算机系统》或《计算机系统原理》这一类书籍。在我记忆中貌似大学大一大二必修的《计算机原理》这一类的都会提到(用于考计算机一二级神马的教材)。
插一个关于嵌入式概念的补充
IEEE和IEC对于嵌入式系统(Embedded System)的诠释,从最早期的4004、8031、8051,直到现在流行的ARM和很难学的PowerPC,这些芯片如果应用在“用于控制、监视或者辅助操作机器和设备的装置”上时,都应该是属于嵌入式。(还有人曾将X86架构的80386用于嵌入式系统的)所以不要再来问我如何从单片机转向嵌入式这种问题了。因为做单片机开发本身就是嵌入式开发。要问请问清楚你是想宗8051转向ARM还是PowerPC。
嵌入式
程序猿
嵌入式程序猿致力于打造程序猿工程师交流分享的精品移动平台,欢迎各位猿友加入和分享。微信搜索嵌入式程序猿添加关注,或者长按下方二维码,选择识别图中二维码添加关注。
ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系?相关推荐
- ARM 架构 ARM7 ARM9 STM32 Cortex M3 M4 51 AVR 有啥区别
ARM架构.ARM7.ARM9.STM32.Cortex M3 M4.51.AVR之间有什么区别和联系? ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~AR ...
- ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 有啥区别
ARM架构.ARM7.ARM9.STM32.Cortex M3 M4.51.AVR之间有什么区别和联系? ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~AR ...
- cortex m3/m4处理器的复位设计
cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分.core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分.de ...
- stm32 cortex M3 汇编指令集 英文详解
这是cortex M3的汇编指令集详解,包含指令执行的周期,如下图示例,可以去Arm公司下载此文档,链接在此https://developer.arm.com/documentation/ddi033 ...
- Cortex M3/M4 学习摘要(二)
########################################## 处理器类型 使用RICS 3级流水选,且拥有哈佛架构 4GB寻址空间 加载存储架构 ############### ...
- Cortex M3/M4 学习摘要(一)
##################################################### 微控制器和处理器: 在一个基本的微处理器中,处理器只占了很小一部分,一般被内存.时钟发生器 ...
- 单片机差分升级算法(STM32,M0,M3,M4等芯片都适用)
为方便技术交流探讨,特建一个QQ群:47954837 ,欢迎加入! 目前新开发出的RLE_X3差分还原算法,已经能够支持最小1K的内存空间,目前有MDK默认编译器的ARM系列的库,欢迎进群索取. ...
- Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)
架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...
- 关于ARM内核经典系列ARM7/ARM9/ARM11和Cortex®-A/Cortex®-R/Cortex®-M的产品线简单介绍
目前市场上的嵌入式单片机或者Soc大部分都是ARM的内核架构,相信大家对Cortex®-M3/Cortex®-M4,Cortex®-A53/Cortex®-A73等有所耳闻. ARM公司主要是设计处理 ...
最新文章
- Samtools(CentOS Linux)安装及常用命令详解
- app制作流程步骤_企业画册设计流程总结 告诉你画册制作步骤
- SAP Spartacus 使用 customized API
- HAS_NO_PRIVILEGE解决方案
- 网络爬虫之Java基础篇(Ⅱ)
- RePlugin 主程序接入指南
- c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别...
- 太阳能光伏发电系统的组成
- java pdf添加页码_java itext pdf 肿么加页码
- 多城市二手车买卖发布管理小程序开发
- 小米手机销量是乐视的几十倍,为什么雷军还要去跟贾跃亭打口水战?
- 【Unity Shader】新书封面 — Low Polygon风格的渲染
- matlab实践总结与体会,MatLab实习心得体会
- 微信公众号-消息推送
- shell正则表达式(cut、sort、uniq、tr、paste)小工具
- windows下cmd命令行显示UTF8字符设置(CHCP命令)
- 苹果X屏黑了-苹果x屏幕黑屏也无法开机怎么回事?
- 转 兵无常势 水无常形 贴
- 豆瓣即将上映电影爬虫作业
- redmine2.0 + mongrel
热门文章
- i7 1165g7和i7 11390H哪个好
- 常用的adb shell命令记录
- 数据挖掘|主成分分析|模型分析与求解
- css3 3d perspective,CSS 3D transforms系列教程-Perspective
- jdbc报错“unknown column“
- 百问网--七天物联网课程学习笔记(7)
- 笔记本电脑如何无线访问android系统手机的数据?
- java file 相对路径 根目录修改_java中使用相对路径读取文件的写法总结 ,以及getResourceAsStream() (转)...
- Appium图像识别技术OpenCV
- 二十九、String的不可变性