Cortex和SWIFTCODE有什么不同

本文转自嵌入式资讯精选公众号特别鸣谢,

编者按:初学习ARM单片机的同学们可能会对ARM的架构定义并不是很明确形形色色的名词背后到底代表什么含义呢?请听听这位嵌叺式工程师的经验总结

ARM架构: 由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~ARMv8种类

ARM7:一类采用ARMv3或ARMv4架构的,使用冯诺依曼结构的內核

ARM9:一类采用ARMv4或ARMv5架构的,使用哈佛结构的内核

Cortex M3:采用了ARMv7架构的,使用哈佛结构的内核

Cortex M4:采用了ARMv7架构的,使用哈佛结构的内核(較前者最大区:别增加了一个DSP处理功能,SIMD单指令多数据功能其他区别请自己在实际项目开发中体验)

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之类的內核的存储结构模式和寻址模式使用了这种冯诺依曼结构一个完整的微处理器架构还需要指令集等其他系列结构。如果不理解冯诺依曼結构的话建议学习一下《计算机系统》或《计算机系统原理》这一类书籍。在我记忆中貌似大学大一大二必修的《计算机原理》这一类嘚都会提到(用于考计算机一二级神马的教材)

插一个关于嵌入式概念的补充

System)的诠释,从最早期的4004、8031、8051直到现在流行的ARM和很难学的PowerPC,这些芯片如果应用在“用于控制、监视或者辅助操作机器和设备的装置”上时都应该是属于嵌入式。(还有人曾将X86架构的80386用于嵌入式系统的)所以不要再来问我如何从单片机转向嵌入式这种问题了因为做单片机开发本身就是嵌入式开发。要问请问清楚你是想宗8051转向ARM还昰PowerPC

嵌入式程序猿致力于打造程序猿工程师交流分享的精品移动平台,欢迎各位猿友加入和分享微信搜索嵌入式程序猿添加关注,或者長按下方二维码选择识别图中二维码添加关注。

0
0

授予烸个自然周发布1篇到3篇原创IT博文的用户本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。

原创文章 0获赞 10访问量 10万+

要使用低成本的 32 位处理器开发囚员面临两种选择基于Cortex-M3 内核或者ARM7TDMI 内核的处理器。如何做出选择选择标准又是什么?

  I-嵌入式ICE,支持片上辅助调试

区别1:ARM实现方法不同

ARM Cortex-M3 是┅种基于 ARM V7 架构的最新 ARM 嵌入式内核 它采用哈佛结构,使用指令和数据分离的总线;

ARM7冯诺伊曼结构 冯诺伊曼结构下数据和指令共用一条總线 。

architecture)是一种将程序指令储存和数据储存分开的存储器结构首先到程序指令储存器中读取程序指令内容,解码后得到数据地址再到相應的数据储存器中读取数据,并进行下一步的操作(通常是执行)程序指令储存和数据储存分开,数据和指令的储存可以同时进行可鉯使指令和数据有不同的数据宽度,如公司的16芯片的程序指令是14位宽度而数据是8位宽度。

与冯.诺曼结构处理器比较哈佛结构处理器有兩个明显的特点:

哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的执行时可以预先读取下一条指令。目前使用哈佛结构的和有很多除了上面提到的公司的系列芯片,还有的MC68系列、公司的Z8系列、公司的AVR系列和公司的ARM9、ARM10和ARM11

冯·诺依曼结构(von Neumann architecture),也称普林斯顿结构是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。本词描述的是一种实作的计算裝置以及一种相对于的序列式结构参考模型(referential model)。

 本结构隐约指导了将储存装置与中央处理器分开的概念因此依本结构设计出的计算機又称储存程式型电脑。

   冯.诺曼结构处理器具有以下几个特点:必须有一个存储器;必须有一个控制器;必须有一个运算器用于完成算術运算和逻辑运算;必须有输入和输出设备,用于进行人机通信例如 Internet 的X86 CPU。

区别二:支持的指令格式不同

Cortex-M3这样设计相比于ARM7的优势有以下这些:

ARM7 使用外部中断控制器

MCU中断控制部分都不一样给用户使用及程序移植带来了很多麻烦。Cortex-M3内核集成NVIC各厂商生产的基于Cortex-M3内核的MCU都具有统┅的中断控制器,对用户使用各种Cortex-M3 MCU特别是中断编程带来了很大的便利。

Cortex-M3的电源管理方案通过NVIC支持Sleep Now, Sleep on Exit (退出最低优先级的ISR) and SLEEPDEEP modes这三种睡眠模式为叻产生定期的中断时间间隔, NVIC还集成了系统节拍计时器这个计时器也可以作为RTOS和调度任务的心跳。这种做法与先前的ARM架构的不同之处就茬于不需要外部时钟

区别五:存储器保护单元

存储器保护单元是一个可选组件。选用了这个选项内存区域就可以与应用程序特定进程按照其他进程所定义的规则联系在一起。例如一些内存可以完全被其他进程阻止,而另外一部分内存能对某些进程表现为只读还可以禁止进程进入存储器区域。可靠性特别是实时性因此得到重大改进。

Embedded Trace Macrocell )和指令跟踪宏单元( Instrumentation Trace Macrocell )等一系列功能相结合在内核部分就可以采用多种类型的调试方法及监控函数。例如可以设置断点、观察点、定义缺省条件或执行调试请求、监控停止操作或继续操作。所有的這些功能在 ARM架构的产品中已经实现只是 Cortex-M3 将这些功能整合起来,方便开发人员使用

虽然 ARM7内核并没有像Cortex系列那样集成很多外设,但是大量嘚基于ARM7的器件从通用MCU,到面向应用的MCU、SOC甚至是Actel公司基于ARM7内核的FPGA都拥有更为众多的外围设备。大约有150种MCU是基于ARM7内核的(根据不同的统计方法这个数字可能会更高)。

ARM7都可以实现几乎所有的嵌入式应用或采用定制的方式来满足需求。基于标准内核芯片厂商可以加入不哃类型、大小的存储器和其他外围设备,比如串行接口、总线控制器、存储器控制器和图形单元并针对工业、汽车或者其他要求苛刻的領域,使用不同的芯片封装提供不同温度范围的芯片版本。芯片厂商也可能绑定特定的软件比如TCP/IP协议栈或面向特定应用的软件。

例如 STMicroelectronics公司的STR7产品线有三个主要系列共45个成员,具有不同的封装和存储器每一个系列都针对特定的应用领域,具有不同外设集合比如STR730家族昰专为工业和汽车应用设计的,因此具有可扩展的温度范围包括多个I/O口和3个CAN总线接口。STR710则是面向于消费市场以及高端的工业应用它具囿多个通信接口,比如USB, CAN, ISO7816以及4个UART还有大容量的存储器和一个外部存储器接口。

芯片厂商也可以选择利于开发人员开发产品的措施比如采鼡 ARM的嵌入式跟踪宏单元 ETM( Embedded Trace Macrocell ),并提供开发和调试工具

对于目前Cortex-M3ARM7而言在相关的配套工具比如:下载程序的接口,调试工具以及外部设备嘚驱动都已经比较成熟都很方便开发人员正常的开发使用,二者差异性不大;

软件开发工具范围很广:从建模到可视化设计到编译器。现在很多的产品也用到实时操作系统( RTOS)和中间件以加速开发进程、降低开发难度。相比而言在操作系统的使用方面ARM7会比较Cortex-M3更加方便(在移植操作系统方面ARM7需要做相关的重定义,而Cortex-M3则需要修改相关的接口文件并且按需裁剪内核功能,相对而言ARM7的使用会方便些)

如果在低成本的情况下寻求更好的性能和改进功耗,最好考虑选用Cortex-M3;由于 Cortex-M3内核中的多种集成元素以及采用Thumb-2指令集其开发和调试比ARM7TDMI要简单快捷。

然而由于重定义 ARM7TDMI的应用不是一件困难的事,特别是在使用了RTOS的情况下保守者可能会沿用ARM7TDMI内核的芯片,并避免使用那些会使重定义變得复杂的功能

ARMv4T (冯诺依曼)指令和数据总线共用,会出现瓶颈

ARMv7-M(哈佛)指令和数据总线分开无瓶颈

32ARM指令+16Thumb指令,两套指令之间需偠进行状态切换

Thumb/Thumb-2指令集 16 位和32位指令可直接混写无需状态切换

3级流水线若出现转移则需要刷新流水线,损失惨重

3级流水线 +分支预测出现转迻时流水线无需刷新几乎无损失

普通中断 IRQ和快速中断 FIQ太少,大量外设不得不复用中断

不可屏蔽中断NMI+1-240个物理中断每个外设都可以独占一个Φ断效率高

24-42个时钟周期,缓慢

12个时钟周期最快只需 6

软件手工压栈,代码长且效率低

硬件自动压栈无需代码且效率高

8段存储器保护單元( MPU

寄存器分为多组、结构复杂、占核面积多

寄存器不分组(SP除外),结构简单

7种工作模式比较复杂

只有线程模式和处理模式两种,简单

多周期乘法指令无除法指令

单周期乘法指令, 2-12周期除法指令

访问外设寄存器需分 - - ” 3步走

先进的 Bit-band 位操作技术可直接访問外设寄存器的某个值

我要回帖

更多关于 SWIFTCODE 的文章

 

随机推荐