历史上的今天

今天是:2024年08月30日(星期五)

正在发生

2021年08月30日 | ARM7 VS Cortex-M3

发布者:声慢慢 来源: eefocus关键字:ARM7  Cortex-M3 手机看文章 扫描二维码
随时随地手机看文章

要使用低成本的32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。


1.ARM实现方法


ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线)。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值。


ARM公司对Cortex-M3的定位是:向专业嵌入式市场提供低成本、低功耗的芯片。在成本和功耗方面,Cortex-M3具有相当好的性能,ARM公司认为它特别适用于汽车和无线通信领域。和所有的ARM内核一样,ARM公司将内该设计授权给各个制造商来开发具体的芯片。迄今为止,已经有多家芯片制造商开始生产基于Cortex-M3内核的微控制器。


ARM7TDMI(包括ARM7TDMIS)系列的ARM内核也是面向同一类市场的。这类内核已经存在了十多年之久,并推动了ARM成为处理器内核领域的主导者。众多的制造商出售基于ARM7系列的处理器以及其他配套的系统软件、开发和调试工具。在许多方面,ARM7TDMI都可以称得上是嵌入式领域的实干家。


2.两者差异


除了使用哈佛结构,Cortex-M3还具有其它显著的优点:具有更小的基础内核,价格更低,速度更快。与内核集成在一起的是一些系统外设,如中断控制器总线矩阵、调试功能模块,而这些外设通常都是由芯片制造商增加的。Cortex-M3还集成了睡眠模式和可选的完整的八区域存储器保护单元。它采用THUMB-2指令集,最大限度降低了汇编器使用率。


3.指令集


ARM7可以使用ARM和Thumb两种指令集,而Cortex-M3只支持最新的Thumb-2指令集。这样设计的优势在于:
●免去Thumb和ARM代码的互相切换,对于早期的处理器来说,这种状态切换会降低性能。
●Thumb-2指令集的设计是专门面向C语言的,且包括If/Then结构(预测接下来的四条语句的条件执行)、硬件除法以及本地位域操作。
●Thumb-2指令集允许用户在C代码层面维护和修改应用程序,C代码部分非常易于重用。
●Thumb-2指令集也包含了调用汇编代码的功能:Luminary公司认为没有必要使用任何汇编语言。
●综合以上这些优势,新产品的开发将更易于实现,上市时间也大为缩短。


4.中断


Cortex-M3的另一个创新在于嵌套向量中断控制器NVIC(Nested Vector Interrupt Controller)。相对于ARM7使用的外部中断控制器,Cortex-M3内核中集成了中断控制器,芯片制造厂商可以对其进行配置,提供基本的32个物理中断,具有8层优先级,最高可达到240个物理中断和256个中断优先级。此类设计是确定的且具有低延迟性,特别适用于汽车应用。


NVIC使用的是基于堆栈的异常模型。在处理中断时,将程序计数器,程序状态寄存器,链接寄存器和通用寄存器压入堆栈,中断处理完成后,在恢复这些寄存器。堆栈处理是由硬件完成的,无需用汇编语言创建中断服务程序的堆栈操作。
中断嵌套是可以是实现的。中断可以改为使用比之前服务程序更高的优先级,而且可以在运行时改变优先级状态。使用末尾连锁(tail-chaining)连续中断技术只需消耗三个时钟周期,相比于32个时钟周期的连续压、出堆栈,大大降低了延迟,提高了性能。


如果在更高优先级的中断到来之前,NVIC已经压堆栈了,那就只需要获取一个新的向量地址,就可以为更高优先级的中断服务了。同样的,NVIC不会用出堆栈的操作来服务新的中断。这种做法是完全确定的且具有低延迟性。


5.睡眠


Cortex-M3的电源管理方案通过NVIC支持Sleep Now,Sleep on Exit,(退出最低优先级的ISR)和SLEEPDEEP modes这三种睡眠模式。


为了产生定期的中断时间间隔,NVIC还集成了系统节拍计时器,这个计时器也可以作为RTOS和调度任务的心跳。这种做法与先前的ARM架构的不同之处就在于不需要外部时钟。


6.存储器保护单元


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


7.调试


对Cortex-M3处理器系统进行调试和追踪是通过调试访问端口(Debug Access Port)来实现的。调试访问端口可以是一个2针的串行调试端口(Serial Wire Debug Port)或者串行JTAG调试端口(Serial Wire JTAG Debug Port)。通过Flash片、断点单元、数据观察点、跟踪单元,以及可选的嵌入式跟踪宏单元(Embedded Trace Macrocell)和指令跟踪宏单元(Instrumentation Trace Macrocell)等一系列功能相结合,在内核部分就可以采用多种类型的调试方法及监控函数。例如,可以设置断点、观察点、定义缺省条件或执行调试请求、监控停止操作或继续操作。所有的这些功能在ARM架构的产品中已经实现,只是Cortex-M3将这些功能整合起来,方便开发人员使用。


8.应用范围


虽然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),并提供开发和调试工具。


Luminary、STMicroelectronics这两家公司已经有基于Cortex-M3的芯片,其他公司如NXP、Atmel也宣布生产该类产品。


9.配套工具


ARM7应用已经非常普及,它已经有非常多第三方的开发和调试工具支持。在ARM的网站上有超过130家工具公司名称列表。


大多数厂商提供了基本的开发板,并提供下载程序的接口、调试工具以及外部设备的驱动,包括LED灯的显示状态或者屏幕上的单行显示。通常,开发套件包括编译器、一些调试软件以及开发板。更为高级的套件包括第三方的集成开发环境(IDE),IDE中包含编译器、链接器、调试器、编辑器和其他工具,也可能包括仿真硬件,比如说JTAG仿真器。内电路仿真器(ICE)是最早的也是最有用的调试工具形式之一,很多厂商都在ARM7上提供了这一接口。


软件开发工具范围很广:从建模到可视化设计,到编译器。现在很多的产品也用到实时操作系统(RTOS)和中间件,以加速开发进程、降低开发难度。另外,还有一个非常重要的因素,很多的开发人员对ARM7的开发经验非常丰富。
虽然现在已经有新兴的Cortex-M3工具,但显然还是有一定的差距。不过,Cortex-M3的集成调试性能使调试变得简单且有效,且无需用到内电路仿真器ICE。


10.决策


那么,你应该如何做出何种选择呢?如果成本是最主要考虑因素,您应该选择Cortex-M3;如果在低成本的情况下寻求更好的性能和改进功耗,您最好考虑选用Cortex-M3;特别是如果你的应用是汽车和无线领域,最好也采用Cortex-M3,这正是Coretex-M3的主要定位市场。


由于Cortex-M3内核中的多种集成元素以及采用Thumb-2指令集,其开发和调试比ARM7TDMI要简单快捷。然而,由于重定义ARM7TDMI的应用不是一件困难的事,特别是在使用了RTOS的情况下。保守者可能会沿用ARM7TDMI内核的芯片,并避免使用那些会使重定义变得复杂的功能。


IAR Systems公司是最早做C编译器的厂商,提供一系列ARM开发工具,包括IAR visualSTATE 建模工具、IAR Embedded Workbench for ARM集成开发环境、IAR PowerPac实时操作系统和中间件、J-Link硬件仿真工具以及开发套件。不管用户的选择是ARM7还是Cortex-M3,IAR都会让开发变得简单而有趣。

Cortex-M3和ARM7的比较

比较项目ARM7Cortex-M3
架构ARMv4T(冯诺依曼)
指令和数据总线共用,会出现瓶颈
ARMv7-M(哈佛)
指令和数据总线分开,无瓶颈
指令集32位ARM指令+16位Thumb指令
两套指令之间需要进行状态切换
Thumb/Thumb-2指令集 16位和32位
指令可直接混写,无需状态切换
流水线3级流水线 若出现转移则需要刷新流水线,损失惨重3级流水线+分支预测 出现转移时流水线无需刷新,几乎无损失
性能0.95DMIPS/MHz(ARM模式)1.25DMIPS/MHz
功耗0.28mW/MHz0.19mW/MHz
低功耗模式内置睡眠模式
面积0.62mm2(仅内核)0.86mm2(内核+外设)
中断普通中断IRQ和快速中断FIQ太少,大量外设不得不复用中断不可屏蔽中断NMI+1-240个物理中断
每个外设都可以独占一个中断,效率高
中断延迟24-42个时钟周期,缓慢12个时钟周期,最快只需6个
中断压栈软件手工压栈,代码长且效率低硬件自动压栈,无需代码且效率高
存储器保护8段存储器保护单元(MPU)
内核寄存器寄存器分为多组、结构复杂、占核面积多寄存器不分组(SP除外),结构简单
工作模式7种工作模式,比较复杂只有线程模式和处理模式两种,简单
乘除法指令多周期乘法指令,无除法指令单周期乘法指令,2-12周期除法指令
位操作无 访问外设寄存器需分“读-改-写”3步走先进的Bit-band位操作技术,可直接访问外设寄存器的某个值
系统节拍定时内置系统节拍定时器,有利于操作系统移植


关键字:ARM7  Cortex-M3 引用地址:ARM7 VS Cortex-M3

上一篇:linux-2.6.38到tiny6410的移植手册(连载2)__网卡&NFS
下一篇:ARM芯片的定时器功能:匹配输出,捕获输入

推荐阅读

据韩国中央日报中文网报道,LG电子正致力于扩大在机器人领域的事业,包括公开可以直接穿戴在身上的可穿戴机器人等。LG电子表示,公司计划在8月31日于德国柏林开幕的世界最大规模电子消费品展览会——2018柏林国际电子消费品展览会上首次公开可以支持人体下肢肌肉力量的“LG CLOi SuitBot”可穿戴机器人。“LG CLOi SuitBot”可以用于产业生产和日常生...
讲完启动模式、烧写更新,接下来我们看一下启动流程。参看:S5PV210开发 -- 烧写/启动模式参看:S5PV210开发 -- 通过 SD 卡烧写参看:S5PV210开发 -- 通过 DNW、fastboot 烧写参看:DM368开发 -- Bootloader 开发(转毕设)学习S5PV210 启动流程部分,需要查看芯片手册和相关的文档。 下载:相关文档一、iROM启动方式简介在讲烧写/启动模...
日前华为投资控股有限公司(下称华为)在银行间市场发布上半年财报。2020年上半年,华为共实现营业收入4507亿元,同比增长13.67%;净利润431亿元,同比增长23.49%。图源:e公司此次最新披露的财务数据显示,2019年上半年,华为营业收入为3965.38亿元,同比增长22.86%;净利润349亿元,同比下降10.12%。由此可见,相较上一年,华为营收、净利润依然保持了较...
思特威首次推出基于QCell技术和1微米像素单元的16MP图像传感器2021年8月30日,中国上海 — 技术先进的CMOS图像传感器供应商思特威科技(SmartSens Technology),正式推出其首颗基于QCell技术的1600万像素消费类系列智能手机应用Cellphone Sensor (CS) Series图像传感器产品——SC1600CS,该产品作为思特威成功量产的首颗1.0μm像素尺寸CIS,力求为...

史海拾趣

问答坊 | AI 解惑

MOTOROLA8位单片机选型指南 (一)

MOTOROLA8位单片机主要特性列表(一) 型号 RAM ROM 串行口 定时/计数器 总线速度(MHz) A/D转换器 电源电压(V) PWM I/O口线 中断源 68HC05B6 176 6144 Mask SCI 4 1,2.1 8 5,3.3 2 32 - 68HC05B8 7168 Mask 68HC05B16 352 15360 Mask 68HC0 ...…

查看全部问答∨

高清IP网络摄像机高分辨率带来新应用有哪些?

对视频监控系统钻研较深的技术人员都十分清楚其中的重大意义。因为IP网络摄像头的出现为另一项技术开辟了一条康庄大道。那便是智能视频分析技术。   所有的智能视频分析技术都须对视频信号进行智能分析,以便让计算机完成某些智能判断工作。然 ...…

查看全部问答∨

菜鸟问题:vs2005环境下程序 如何移植到WINCE?

小弟现在有一个vs2005环境下得语音程序,现在想要移植到wince环境下。请问都需要做什么工作?  是否需要用EVC重写?…

查看全部问答∨

WinCE5.0系统加载完之后起不来

WinCE5.0系统加载完之后,屏幕还显示Logo,采用的是研华的嵌入式主板,Flash芯片采用M-System ,硬件驱动都是研华提供以及BSP, 我采用Hive-based注册表方式, [code] [HKEY_LOCAL_MACHINE\\init\\BootVars]   "SystemHive"="Doc ...…

查看全部问答∨

小弟想学ARM开发,希望大家推荐下买什么板好!

小弟想学ARM开发,希望大家推荐下买什么板好!…

查看全部问答∨

电容的计量单位

电容单位总是忘: 现发一贴子希望记住   这是我找来的: 电容单位换算 电容器Q容量Kvar换算C容值uF公式I=0.314×C×UC=Q / 0.314×U×U Q容量=单位KvarC容值=单位uF1F=1000000μFI为补偿电流,单位为A,式中0.314=2πf/100 ...…

查看全部问答∨

STM8用什么调试?有JTAG么?

                                 手册里面说的单线调试接口是用来调试的么?…

查看全部问答∨

stm32 中断问题

我买的stm32f103zet6最小系统板,在设置中断的时候,发现不论我把外部中断设置在哪个端口,都会在端口A上面反映,比如说我设置PB.2为外部中断, 但写程序的时候,PB.2不会响应中断,而PA.2则会,就算我把A的时钟关了,它也会相应中断。 就相当于 ...…

查看全部问答∨

关于SensorTag创意大赛的特别说明

要强调三件事:第一:请还没有提交周计划和完善邮寄信息的中奖网友尽快落实这两项。毕竟SensorTag这个礼品价值160元,我真心希望每个中奖网友都能把它领走   【点击此处】查看中奖名单并提交周计划 第二:曾经零散地回复过几个网友,就 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved