1.1 ARM处理器系列
每个ARM处理器都有一个特定的指令集架构(ISA),而一个ISA版别又能够有多种处理器完结。ISA跟着嵌入式商场的需求而开展,至今现已有多个版别。ARM公司规划该开展过程,使得在较早的架构版别上编写的代码也能够在后继版别上履行(即代码的兼容性)。
1.1.1 命名规矩
前期ARM运用如图1.1所示的命名规矩来描绘一个处理器。在“ARM”后的字母和数字表明晰一个处理器的功用特性。跟着更多特性的添加,字母和数字的组合或许会改动。留意:命名规矩不包含体系结构(ISA)的版别信息。
ARM {x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}
x——系列
y——存储办理/维护单元
z——cache
T——Thumb 16位译码器
D——JTAG调试器
M——快速乘法器
I——嵌入式盯梢宏单元
E——增强指令(依据TDMI)
J——Jazelle
F——向量浮点单元
S——可归纳版别
图1.1 前期ARM命名规矩
关于ARM命名规律,还有一些附加的关键:
? ARM7TDMI之后的一切ARM内核,即便“ARM”标志后没有包含那些字符,也都包含了TDMI功用特性。
? 处理器系列是同享相同硬件特性的一组处理器详细完结。例如,ARM7TDMI、ARM740T和ARM720T都同享相同的系列特性,都归于ARM7系列。
? JTAG是由IEEE1149.1规范测验拜访端口(Standard Test Access
Port)和鸿沟扫描结构来描绘的。它是ARM用来发送和接纳处理器内核与测验仪器之间调试信息的一系列协议。
? 嵌入式ICE宏单元(EmbeddedICE macrocell)是建立在处理器内部用来设置断点和调查点的调试硬件。
? 可归纳的——意味着处理器内核是以源代码方法供给的,这种源代码方法又能够被编译成一种易于EDA东西运用的方法。
跟着近年来ARM架构的产品爆破性地涌入商场,以及关于维护架构一致性的高层次的要求,ARM从头组织了ARM架构的规范,界说了以ARM v7架构的Cortex系列。
1.1.2 ARM处理器系列
ARM公司规划了许多处理器,它们能够依据运用的不同内核区分到各个系列中。系列区分是依据ARM7、ARM9、ARM10、ARM11和Cortex内核。后缀数字7、9、10和11表明不同的内核规划。数字的升序阐明功用和杂乱度的进步。ARM8开发出来今后很快就被替代了。
在每个系列中,存储器办理、cache和TCM处理器扩展也有多种改动。ARM持续在可用的产品系列和每个系列内部的不同变种两方面做进一步开发。
表1.1总结了各种处理器的不同功用特性。值得留意的是,指令集架构(
ISA)是表现CPU核功用特色的重要要素,如选用v5TEJ架构的ARM926EJ-S与选用v4T架构的
ARM920T处理器,在相同的作业频率下,前者的处理才能要高得多。
表1.1 ARM处理器不同功用特性
a: E扩展供给了增强的乘法指令和饱满运算指令(DSP)
1.1.2.1 ARM7系列
ARM7内核是冯?诺伊曼体系结构,数据和指令运用同一条总线。内核有一条3级流水线,履行ARMv4指令集。
ARM7TDMI是ARM公司于1995年推出的新系列中的第一个处理器内核。是现在一个十分盛行的内核,已被用在许多32位嵌入式处理器上。它供给了十分好的功用——功耗比。ARM7TDMI处理器内核现已答应给许多国际尖端半导体公司,它是第一个包含Thumb指令集、快速乘法指令和嵌入式ICE调试技能的内核。
ARM7系列中一个重要的改动是ARM7TDMI-S。ARM7TDMI-S与规范ARM7TDMI有相同的操作特性,但它是可归纳的(见2.6.1末节)。
ARM720T是ARM7系列中最具灵活性的成员,因为它包含了一个MMU。MMU的存在意味着ARM720T能够处理Linux和Microsoft嵌入式操作体系(如WinCE)。这一处理器还包含了一个8KB的一致cache(指令/数据混合cache)。向量表能够经过设置一个协处理器15(CP15)寄存器来重定位到更高的地址。
另一个成员是ARM7EJ-S处理器,它也是可归纳的。ARM7EJ-S与其他ARM7处理器有很大不同,因为它有一条5级流水线,并且履行ARMv5TEJ指令。这个版别是ARM7中仅有一个供给java加快和增强指令,而没有任何存储器维护的处理器。
1.1.2.2 ARM9系列
ARM9系列于1997年面世。因为选用了5级指令流水线,ARM9处理器能够运转在比ARM7更高的时钟频率上,进步了处理器的全体功用。存储器体系依据哈佛体系结构从头规划,区分了数据D和指令I总线。
ARM9系列的第一个处理器是ARM920T,它包含独立的D+I
cache和一个MMU。这个处理器能够被用在要求有虚拟存储器(虚存)支撑的操作体系上。ARM922T是ARM920T的变种,只要一半巨细的D+I cache。
ARM940T包含一个更小的D+I cache和一个MPU。它是针对不要求运转渠道操作体系的运用而规划的。ARM920T和ARM940T都履行v4T架构指令。
ARM9系列的下一个处理器是依据ARM9E-S
内核的。这个内核是ARM9内核带有E扩展的一个可归纳版别。它有二个变种:ARM946E-S和ARM966E-S。两者都履行v5TE架构指令。它们也支撑可选的嵌入式盯梢宏单元(ETM),它答应开发者实时盯梢处理器上指令和数据的履行。当调试对时刻灵敏(time-critical)的程序段时,这种办法十分重要。
ARM946E-S包含TCM、cache和一个MPU。TCM和cache的巨细可装备。该处理器是针对要求有确认的实时呼应的嵌入式操控运用而规划的。而ARM966E有可装备的TCM,但没有MPU和cache扩展。
ARM9产品线的最新内核是ARM926EJ-S可归纳的处理器内核,发布于2000年。它是针对小型便携式java设备,比方3G手机和个人数字助理(PDA)运用而规划的。ARM926EJ-S是第一个包含Jazelle技能(可加快java字节码的履行)的ARM处理器内核。它还有一个MMU、可装备的TCM,以及具有零或非零等候存储器的D+I
cache。
1.1.2.3 ARM10系列
ARM10发布于1999年,首要是针对高功用的规划。它把ARM9的流水线扩展到6级,也支撑可选的向量浮点单元(VFP),它对ARM10的流水线参加了第7段。VFP显着进步了浮点运算的功用,并与IEEE754.1985浮点规范兼容。
ARM1020E是第一个运用ARM10E内核的处理器。像ARM9E相同,它包含了增强的E指令。它有独立的32KB D+I
cache、可选向量浮点单元(VFP),以及MMU。ARM1020E还有一个双64位总线接口以进步功用。
ARM1026EJ-S十分类似于ARM926EJ-S,但一起具有MPU和MMU。这一处理器具有ARM10的功用和ARM926EJ-S的灵活性。
1.1.2.4 ARM11系列
ARM1136J-S发布于2003年,是针对高功用和高能效运用而规划的。ARM1136J-S是第一个履行ARMv6架构指令的处理器。它集成了一条具有独立的load-store和算术流水线的8级流水线。ARMv6指令包含了针对媒体处理的单指令流多数据流(SIMD)扩展,特别的规划以进步视频处理功用。
ARM1136JF-S便是为了进行快速浮点运算,而在ARM1136J-S添加了向量浮点单元。
1.1.2.5 ARM Cortex系列
ARM Cortex发布于2005年,为各种不同功用需求的运用供给了一整套完好的优化解决计划,该系列的技能区分彻底针对不同的商场运用和功用需求。现在ARM
Cortex界说了三个系列:
Cortex-A系列:针对杂乱OS和运用程序(如多媒体)的运用处理器。支撑ARM、Thumb和Thumb-2指令集,着重高功用与合理的功耗,存储器办理支撑虚拟地址。
Cortex-R系列:针对实时体系的嵌入式处理器。支撑ARM、Thumb和Thumb-2指令集,着重实时性,存储器办理只支撑物理地址。
Cortex-M系列:针对价格灵敏运用范畴的嵌入式处理器,只支撑Thumb-2指令集,着重操作确实认性,以及功用、功耗和价格的平衡。
这些系列曾在ARMv7开展过程中被正式介绍过,A系列和R系列就现已隐式地出现在前期的版别中了,以及虚拟存储体系架构(VMSA)和维护存储体系架构(PMSA)。
到现在为止,Cortex系列正式发布的版别为Cortex-A8、Cortex-R4和Cortex_M3,他们悉数完结了Thumb-2指令集(或子集),可满意不同的功用、价格商场需求。
ARM
Cortex-M3不支撑ARM指令集,支撑的指令集包含ARMv6的大部分16位Thumb指令和ARMv7的Thumb-2指令集。Thumb-2指令集是一个16/32位混合指令体系。Cortex-M3支撑的16位、32位Thumb指令
要运用低本钱的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都会让开发变得简略而风趣。