1 简介 今天, ARM Cortex-M 处置器家族有8款处置器成员。除此以外,ARM的产物系列另有良多其他的处置器成员。对良多初学者,乃至某些芯片设想经历丰厚可是不熟习ARM系列处置器" />

ARM Cortex-M 处理器家族介绍和比较

时间:2017-04-20 浏览量:

id="ff">

 1 简介

今天, ARM Cortex-M 处置器家族有8款处置器成员。除此以外,ARM的产物系列另有良多其他的处置器成员。对良多初学者,乃至某些芯片设想经历丰厚可是不熟习ARM系列处置器的设想者来讲,也是很容易混杂这些产物的。不同的ARM 处置器有不同的指令集,系统功用和功能。本文会深化展示Cortex-M系列处置器之间的要害区分,和它们和ARM其他系列处置器的不同。

1.1 ARM处置器家族

多年来, ARM曾经研发了相当多的不同的处置器产物。 以下图中(图1): ARM 处置器产物分为典范ARM处置器系列和最新的Cortex处置器系列。而且依据使用范畴的不同,ARM处置器可以分类成3个系列。

Application Processors(使用处置器)–面向挪动计较,智妙手机,服务器等市场的的高端处置器。这类处置器运转在很高的时钟频次(超越1GHz),支撑像Linux,Android,MS Windows和挪动操作系统等完好操作系统需求的内存治理单元(MMU)。 假如计划开拓的产物需求运转上述此中的一个操作系统,你需求挑选ARM 使用处置器.

Real-time Processors (及时处置器)–面向及时使用的高功能处置器系列,例如硬盘掌握器,汽车传动系统和无线通信的基带掌握。少数及时处置器不支撑MMU,不外一般具有MPU、Cache和其他针对工业使用设想的存储器功用。及时处置器运转在比较高的时钟频次(例如200MHz 到 >1GHz ),呼应提早十分低。虽然及时处置器不能运转完好版本的Linux和Windows操作系统, 可是支撑少量的及时操作系统(RTOS)。

Microcontroller Processors(微掌握器处置器)–微掌握器处置器一般设想成面积很小和能效比很高。一般这些处置器的流水线很短,最高时钟频次很低(虽然市场上有此类的处置器可以运转在200Mhz之上)。 而且,新的Cortex-M处置器家族设想的十分容易运用。因而,ARM 微掌握器处置器在单片机和深度嵌入式系统市场十分胜利和受欢送。

1.png

图 1: 处置器家族

表1总结了三个处置器系列的主要特点。

2.png

表 1: 处置器特征总结

1.2 Cortex-M 处置器家族

Cortex-M处置器家族更多的集合在低功能端,可是这些处置器相比于许多微掌握器运用的保守处置器功能依然很弱小。例如,Cortex-M4和Cortex-M7处置器使用在许多高功能的微掌握器产物中,最大的时钟频次可以到达400Mhz。

固然,功能不是挑选处置器的独一目标。在许多使用中,低功耗和本钱是要害的挑选目标。因而,Cortex-M处置器家族包括各类产物来满意不同的需求:

3.png

表 2: Cortex-M 处置器家族

不同于老的典范ARM处置器(例如,ARM7TDMI, ARM9), Cortex-M处置器有一个十分不同的架构。例如:

- 仅支撑ARM Thumb®指令,已扩大到同时支撑16位和32位指令Thumb-2版本

- 内置的嵌套向量中缀掌握卖力中缀处置,主动处置中缀优先级,中缀屏障,中缀嵌套和系统异常处置。

- 中缀处置函数可使用规范的C言语编程,嵌套中缀处置机制防止了运用软件判别哪个中缀需求呼应处置。同时,中缀呼应速度是肯定性的,低提早的

- 向量表从跳转指令变成中缀和系统异常处置函数的肇端地址。

- 存放器组和某些编程形式也做了改动。

这些转变意味着许多为典范ARM处置器编写的汇编代码需求修正,老的项目需求修正和从头编译才能迁徙到Cortex-M的产物上。软件移植详细的细节记载在ARM文档:

ARM Cortex-M3 Processor Software Development for ARM7TDMI Processor Programmers

http://www.arm.com/files/pdf/Cortex-M3_programming_for_ARM7_developers.pdf

1.3 Cortex-M系列处置器的单独特征

Cortex-M0, M0+, M3, M4 and M7之间有良多的类似的地方,例如:

- 基本编程模子 (章节 3.1)

- 嵌套向量中缀掌握器(NVIC)的中缀呼应治理

- 架构设想的休眠形式:睡眠形式和深度睡眠形式 (章节 4.1)

- 操作系统支撑特征 (章节 3.3)

- 调试功用 (章节 6)

- 易用性

例如,嵌套向量中缀掌握器是内置的中缀掌握器

4.png

图 2: Cortex-M处置器的嵌套向量中缀掌握器

支撑许多核心装备的中缀输出,一个不可屏障的中缀恳求,一个来自内置时钟(SysTick)的中缀恳求(见章节 3.3)和一定命量的系统异常恳求。NVIC处置这些中缀和异常的优先级和屏障治理。

NVIC和异常处置模子的更多的形式在章节3.2描绘。其他Cortex-M处置器间的异同点会在本文的其他局部解说。

2 Cortex-M处置器指令集

2.1 指令集简介

大少数状况下,使用顺序代码可以用C或其他初级言语编写。可是,对Cortex-M 处置器支撑指令集的基本了解有助于开拓者针对详细使用挑选适宜的Cortex-M处置器。指令集(ISA)是处置器架构的一局部,Cortex-M处置器可以分为几个架构标准

表三.png

表 3: Cortex-M 处置器ARM架构标准的标准

一切的Cortex-M 处置器都支撑Thumb指令集。整套Thumb指令集扩大到Thumb-2版本时变得相当大。可是,不同的Cortex-M处置器支撑不同的Thumb 指令集的子集,如图3所示

图三.png

图 3: Cortex-M 处置器的指令集

2.2 Cortex-M0/M0+/M1指令集

Cortex-M0/M0+/M1处置器基于ARMv6-M架构。这是一个只支撑56条指令的小指令集,大局部指令是16位指令,如图3所示只占很小的一局部。可是,此类处置器中的存放器和处置的数据长度是32位的。关于大少数简单的I/O掌握义务和一般的数据处置,这些指令曾经足够了。这么小的指令集可以用很少的电路门数来完成处置器设想,Cortex-M0 和 Cortex-M0+最小设置装备摆设仅仅12K门。但是,此中的良多指令没法运用高位存放器(R8 到R12), 而且生建立即数的能力无限。这是均衡了超低功耗和功能需求的后果。

2.3 Cortex-M3指令集

Cortex-M3处置器是基于ARMv7-M架构的处置器,支撑更丰厚的指令集,包罗许多32位指令,这些指令可以高效的运用高位存放器。另外,M3还支撑:

查表跳转指令和前提施行(运用IT指令)

硬件除法指令

乘加指令(MAC)

各类位操作指令

更丰厚的指令集经过几种道路来加强功能;例如,32位Thumb指令支撑了更大范畴的立刻数,跳转偏移和内存数据范畴的地址偏移。支撑基本的DSP操作(例如,支撑若干条需求多个时钟周期施行的MAC指令,另有饱和运算指令)。最初,这些32位指令答应用单个指令对多个数据一起做桶型移位操作。

支撑更丰厚的指令招致了更大的面积本钱和更高的功耗。典型的微掌握器,Cortex-M3的电路门数是Cortex-M0 和 Cortex-M0+两倍还多。可是,处置器的面积只是大少数古代微掌握器的很小的一局部,多进去的面积和功耗常常不那么主要。

2.4 Cortex-M4指令集

Cortex-M4在良多地方和Cortex-M3相反:流水线,编程模子。Cortex-M4支撑Cortex-M3的一切功用,并额定支撑各类面向DSP使用的指令,像SIMD, 饱和运算指令,一系列单周期MAC指令(Cortex-M3只支撑无限条MAC指令,而且是多周期施行的),和可选的单精度浮点运算指令。

Cortex-M4的SIMD操作可以并行处置两个16位数据和4个8位数据。例如,图4展现的QADD8 和 QADD16 操作:

图4.png

图 4: SIMD指令例子: QADD8 and QADD16

The uses of SIMD enable much faster computation of 16-bit and 8-bit data in certain DSP operations as the calculation can be parallelized. However, in general programming, C compilers are unlikely to utilize the SIMD capability. That is why the typical benchmark results of the Cortex-M3 and Cortex-M4. However, the internal data path of the Cortex-M4 is different from Cortex-M3, which enable faster operations in a few cases (e.g. single cycle MAC, and allow write back of two registers in a single cycle).在某些DSP运算中,运用SIMD可以减速更快计较16位和8位数据,由于这些运算可以并行处置。可是,普通的编程中,C编译器其实不能充分应用SIMD运算能力。这是为何Cortex-M3 和 Cortex-M4典型benchmark的分数差不多。但是,Cortex-M4的外部数据通路和Cortex-M3的不同,某些状况下Cortex-M4可以处置的更快(例如,单周期MAC,可以在一个周期中写回到两个存放器)。

2.5 Cortex-M7指令集

Cortex-M7支撑的指令集和Cortex-M4类似,增加了:

· 浮点数据架构是基于FPv5的,而不是Cortex-M4的FPv4,所以Cortex-M7支撑额定浮点指令

· 可选的双精度浮点数据处置指令

· 支撑缓存数据预取指令(PLD)

Cortex-M7的流水线和Cortex-M4的十分不同。Cortex-M7是6级双发射流水线,可以获得更高的功能。少数为Cortex-M4设想的软件可以直接运转在Cortex-M7上。可是,为了充分应用流水线差别来到达最好的优化,软件需求从头编译,而且在许多状况下,软件需求一些小的晋级,以充分应用像Cache这样的新功用。

2.6 Cortex-M23指令集

Cortex-M23的指令集是基于ARMv8-M的Baseline子标准,它是ARMv6-M的超集。扩大的指令包罗:

· 硬件除法指令

· 比较和跳转指令,32位跳转指令

· 支撑TrustZone平安扩大的指令

· 互斥数据拜访指令(一般用于旌旗灯号量操作)

· 16位立刻数生成指令

· 载入获得及存储开释指令(支撑C11)

在某些状况下,这些加强的指令集可以进步处置器功能,而且对包括多个处置器的SoC设想有效(例如,互斥拜访对多处置器的旌旗灯号量处置有协助)

2.7 I Cortex-M33指令集

由于Cortex-M33设想长短常可设置装备摆设的,某些指令也是可选的。例如:

· DSP指令(Cortex-M4 和Cortex-M7支撑的)是可选的

· 单精度浮点运算指令是可选的,这些指令是基于FPv5的,而且比Cortex-M4多几条。

: Cortex-M33也支撑那些ARMv8-M Mainline引入的新指令:

· 支撑TrustZone平安扩大的指令

· 载入获得及存储开释指令(支撑C11)

2.8 指令集特征比较总结

ARMv6-M, ARMv7-M 和 ARMv8-M架构有许多指令集功用特性, 很难介绍到一切的细节。可是,下面的表格(表4)总结了那些要害的差别。

表4.png

表 4: 指令集特征总结

Cortex-M处置器指令集的最主要的特性是向上兼容。Cortex-M3的指令是Cortex-M0/M0+/M1的超集。所以,实际上讲,假如存储空间分派是一致的,运转在Cortex-M0/M0+/M1上的二进制文件可以直接运转在Cortex-M3上。异样的道理也合用于Cortex-M4/M7和其他的Cortex-M处置器;Cortex-M0/M0+/M1/M3支撑的指令也可以运转在Cortex-M4/M7上。

虽然Cortex-M0/M0+/M1/M3/M23处置器没有浮点运算单德配置选项,可是处置器依然可以应用软件来做浮点数据运算。这也合用于基于Cortex-M4/M7/M33可是没有设置装备摆设浮点运算单元的产物。在这类状况下,当顺序中运用了浮点数,编译东西包会在链接阶段拔出需求的运转软件库。软件形式的浮点运算需求更长的运转时间,而且会稍微的添加代码巨细。可是,假如浮点运算不是屡次运用的,这类计划是合适这类使用的。

3 架构特征

3.1 编程模子

Cortex-M处置器家族的编程模子是高度一致的。例如一切的Crotex-M处置器都支撑R0到R15,PSR, CONTROL 和 PRIMASK。两个特殊的存放器— FAULTMASK 和 BASEPRI—只要Cortex-M3, Cortex-M4, Cortex-M7 和 Cortex-M33支撑;浮点存放器组和FPSCR(浮点形态和掌握存放器)存放器,是Cortex-M4/M7/M33可选的浮点运算单元运用的。

图5.png

图 5: 编程模子

BASEPRI存放器答应顺序阻遏指定优先级或许低的优先级中缀和异常。对ARMv7-M来讲这是很主要的,由于Cortex-M3, Cortex-M4, Cortex-M7 和 Cortex-M33有少量的优先级品级,而ARMv6-M 和 ARMv8-M Baseline只要无限的4个优先品级。FAULTMASK一般用在繁杂的过失处置上(检查章节3.4)

非特权级此外完成对ARMv6-M处置器是可选的,对ARMv7-M 和ARMv8-M处置器一向支撑的。对Cortex-M0+处置器,它是可选的, Cortex-M0 and Cortex-M1不支撑这个功用。这意味着在各类Cortex-M处置器的CONTROL 存放器是略微不同的。FPU的设置装备摆设也会影响到CONTROL存放器,如图6所示。

图6.png

图 6: CONTROL 存放器

另外一个编程模子之间的不同是PSR存放器(顺序形态存放器)的细节。一切的Cortex-M处置器,PSR存放器都被再分红使用顺序形态存放器(APSR),施行顺序形态存放器(EPSR)和中缀顺序形态存放器(IPSR)。 ARMv6-M 和 ARMv8-M Baseline系列的处置器不支撑APSR的Q位和EPSR的ICI/IT位。ARMv7E-M系列 ( Cortex-M4, Cortex-M7) 和ARMv8-M Mainline (设置装备摆设了DSP扩大的Cortex-M33 )支撑GE位。另外,ARMv6-M系列处置器IPSR的中缀号数字范畴很小,如图7所示。

图7.png

图 7: PSR 差别

请留意Cortex-M的编程模子和ARM7TDMI等这些典范的ARM处置器是纷歧样的。除存放器组不同外,典范ARM处置器中“形式”和“形态”的界说与Cortex-M中的也是不同的。Cortex-M只要两个形式:线程形式(Thread)和治理者形式(Handler),而且Cortex-M处置器一向运转在Thumb形态(不支撑ARM指令)

3.2 异常处置模子和嵌套向量中缀掌握器NVIC

一切的Cortex-M处置器都包括了NVIC模块,采取异样的异常处置模子。假如一个异常中缀产生,它的优先品级高于以后运转品级,而且没有被任何的中缀屏障存放器屏障,处置器会呼应这其中断/异常,把某些存放器入栈到以后的仓库上。这类仓库机制下,中缀处置顺序可以编写为一个一般的C函数,许多小的中缀处置函数可以立刻直接呼应任务而不需求额定的仓库处置花消。

一些ARMv7-M/ARMv8-M Mainline系列的处置器运用的中缀和系统异常其实不被ARMv6-M/ARMv8-M Baseline的产物支撑,如图8. 例如,Cortex-M0, M0+ 和M1的中缀数被限制在32个以下,没有调试监测异常,过失异常也只限于HardFault(过失处置细节请参看章节3.4)。相比之下,Cortex-M23, Cortex-M3, Cortex-M4 和Cortex-M7处置器可以支撑到多达240个核心装备中缀。Cortex-M33支撑最多480其中断。

另外一个区分是可使用的优先品级数目:

ARMv6-M 架构 - ARMv6-M支撑2级流动的(NMI 和 HardFault)和4级可编程的(由每一个优先品级存放器的两个位暗示)中缀/异常优先级。这对大少数的微掌握器使用来讲足够了。

ARMv7-M 架构 - ARMv7-M系列处置器的可编程优先级品级数范畴,依据面积的限制,可以设置装备摆设成8级(3位)到256级(8位)。ARMv7-M处置器另有一个叫做中缀优先级分组的功用,可以把中缀优先级存放器再进一步分为组优先级和子优先级,这样可以细致地制订抢占式优先级的行动。

ARMv8-M Baseline – 相似 ARMv6-M,M23也有2位的优先级品级存放器。借助可选的TrustZone平安扩大组件,平安软件可以把非平安情况中的中缀的优先品级转换到优先品级区间的下半区,这就包管了平安情况中的某些中缀/异常老是比非平安情况中的优先级要高。

ARMv8-M Mainline – 相似于 ARMv7-M。 可以支撑8到256其中断优先品级和中缀优先级分组。还支撑ARMv8-M Baseline具有的优先品级调剂功用。

图8.png

图 8: Cortex-M 处置器异常中缀类型

一切的Cortex-M处置器在异常处置是都要依托向量表。向量表保管着异常处置函数的肇端地址(如图8所示)。向量表的肇端地址由名为向量表偏移存放器(VTOR)决议。

· Cortex-M0+, Cortex-M3 and Cortex-M4 processors: by default the vector table is located in the starting of the memory map (address 0x0). Cortex-M0+, Cortex-M3 and Cortex-M4: 向量表默许放在存储空间的肇端地址(地址 0x0)。

· In Cortex-M7, Cortex-M23 and Cortex-M33 processors: the default value for VTOR is defined by chip designers. Cortex-M23 and Cortex-M33 processors can have two separated vector tables for Secure and Non-secure exceptions/interrupts. Cortex-M7, Cortex-M23 and Cortex-M33:VTOR的初始值由芯片设想者界说。Cortex-M23 and Cortex-M33处置器面向平安和非平安的异常/中缀有两个自力的向量表。

· Cortex-M0 and Cortex-M1 does not implement programmable VTOR and vector table starting address is always 0x00000000. Cortex-M0 and Cortex-M1没有完成可编程的VTOR,向量表肇端地址一向为0x00000000。

Cortex-M0+ 和 Cortex-M23处置器的VTOR是可选项。假如VTOR被完成了,向量表的肇端地址可以经过设置VTOR来改动,这个功用对以下状况有效:

重定位向量表到SRAM来完成静态改动异常处置函数出口点

重定位向量表到SRAM来完成更快的向量读取(假如flash存储器很慢)

重定位向量表到ROM不同位置(或许Flash),不同的顺序运转阶段可以有不同的异常处置顺序

不同的Cortex-M处置器之间的NVIC编程模子也有额定的不同。差别点总结在表 5中:

再表5.png

表 5: NVIC 编程模子和特征差别

大局部状况下,对NVIC的中缀掌握特征的操作都是经过CMSIS-CORE供给的APIs处置的,他们在微掌握器厂商供给的装备驱动顺序库里。对Cortex-M3/M4/M7/M23/M33处置器,即便中缀被使能了,它的优先级也可以被改动。ARMv6-M处置器不支撑静态优先品级调剂,当你需求改动中缀优先品级是,需求临时的关失落这其中断。

3.3 操作系统支撑特征

Cortex-M处置器架构在设想时就思索到了操作系统的支撑。针对操作系统的特征有:

影子仓库指针

系统服务挪用(SVC)和可挂起系统挪用(PenSV)异常

SysTick – 24位递加计时器,为操作系统的计时和义务治理发生周期性的异常中缀

Cortex-M0+/M3/M4/M7/M23/M33支撑的非特权施行和存储维护单元(MPU)

系统服务挪用(SVC)异常由SVC指令触发,他可让运转在非特权形态的使用义务发动特权级的操作系统服务。可挂起系统挪用异常在操作系统中像高低文切换这样的非要害操作的安排十分有协助。

为了能把Cortex-M1放到很小的FPGA器件中,一切用来支撑操作系统的特征对Cortex-M1都是可选的。对Cortex-M0, Cortex-M0+ 和Cortex-M23处置器,系统时钟SysTick是可选的。

一般,一切的Cortex-M处置器都支撑操作系统。施行在Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23 和 Cortex-M33的使用可以运转在非特权运转形态,而且可以同时应用可选的存储器治理单元(MPU)以免内存合法拜访。这可以加强系统的鲁棒性。

3.4 TrustZone平安扩大

近几年来, 物联网(IoT)成了嵌入式系统开拓者们的抢手话题。IoT系统产物变得愈加繁杂,上市时间的压力也日积月累。嵌入式系统产物需求更好的计划来包管系统的平安,可是同时又要方便软件开拓者开拓。保守的计划是经过把软件分红特权和非特权两局部处理的,特权级软件应用MPU避免非特权的使用拜访包括平安迟钝信息在内的的要害的系统资本。这类计划对一些IoT系统十分合适,可是在一些状况下,只要两层区分是不敷的。特别是那些包括良多繁杂特权级此外软件组件的系统,特权级的代码的一个缺点便可以招致黑客彻底的掌握这个系统

ARMv8-M架构包括了一个叫做TrustZone的平安扩大,TrustZone导入了平安和非平安形态的正交区分。

· 一般使用长短平安态

· 软件组件和平安相干的资本(例如,平安存储,加密减速器,正随机数产生器(TRNG))处在平安形态。

图9.png

图 9: 平安形态和非平安形态的隔离

非平安形态的软件只能拜访非平安形态的存储空间和核心装备,平安软件可以拜访两种形态下的一切资本。

用这类计划,软件开拓者可以用以往的体例开拓非平安情况下的使用顺序。同时,他们可以借助芯片厂商供给的平安通信软件库施行平安物联网衔接。而且即便运转在非平安情况的特权级的顺序有破绽,TrustZone平安机制可以阻遏黑客掌握全部装备,限制了进犯的影响,还可以完成系统近程复原。另外,ARMv8-M架构也引入了仓库边境检查和加强的MPU设想,促使额定平安办法的采取。

平安架构界说也扩大到了系统级别,每一个中缀都可以被设置为平安或许非平安属性。中缀异常处置顺序也会主动保管和复原平安情况中的存放器数据以避免平安信息泄露。所以,TrustZone平安扩大让系统能够支撑及时系统的需求,为IoT使用供给了坚实的平安根底,而且容易让软件开拓在此手艺上开拓使用顺序。

TrustZone模块对Cortex-M23 and Cortex-M33处置器是可选的。关于ARMv8-M TrustZone更多的信息请查找The Next Steps in the Evolution of Embedded Processors for the Smart Connected Era。更多的TrustZone的资本请检查community.arm.com网站上的“TrustZone for ARMv8-M Community”,

3.5 过失处置

ARM处置器和其他架构的微掌握器的一个区分是过失处置能力。当过失被检测到时,一个过失异常处置顺序被触发去施行妥当的处置。触发过失的状况多是:

不决义的指令(例如,Flash存储器保护)

拜访合法地址空间(例如,仓库指针解体)或许MPU合法拜访

合法操作(例如,当处置器曾经在优先级高于SVC的中缀中试图触发SVC异常)

过失处置机制使嵌入式系统能够更快的呼应各类问题。不然,假如系统死机了,看门狗按时需求十分长的时间重启系统。

ARMv6-M架构中,一切的过失事情城市触发HardFault处置顺序,它的优先级是-1(优先级比一切的可编程异常都高,可是仅低于非屏障中缀NMI)。 一切的过失事情都被以为是不可复原的,一般我们在HardFault处置顺序中仅运转过失演讲然落后一步触发主动复位。

ARMv8-M Baseline架构和ARMv6-M相似,只要一个过失异常(HardFault)。可是ARMv8-M Baseline的HardFault优先级可所以-1或许当完成了TrustZone平安扩大时优先级是-3.

ARMv7-M 和 ARMv8-M Mainline产物除HardFault另有几个可设置装备摆设的过失异常:

Memmanage(内存治理过失)

总线过失(总线前往过失的呼应)

用法过失(不决义指令或许其他的合法操作)

SecureFault(只用ARMv8-M Mainline产物支撑,处置TrustZone平安扩大中的平安合法操作)

这些异常的优先级可以编程改动,可以独自的翻开和关失落。假如需求,它们也可以应用FAULTMASK存放器把它们的优先级进步到和HardFault相反的级别。ARMv7-M 和 ARMv8-M Mainline产物另有几个过失形态存放器可以供给关于触发过失异常事情的线索和过失地址的存放器,用来肯定触发这个过失异常的拜访地址,使调试愈加容易。

ARMv7-M 和 ARMv8-M Mainline产物子标准中额定的过失处置顺序供给了灵敏的过失处置能力,过失形态存放器让过失事情的定位和调试愈加容易。良多贸易开拓套件中的调试器曾经内嵌了运用过失形态存放器来诊断过失事情的功用。另外,过失处置顺序可以在运转时做一些修停工作。

表6.png

表 6: 过失处置特征比较总结

4 系统特征

4.1 低功耗

低功耗是Cortex-M处置器的一个要害长处。低功耗是其架构的构成局部:

WFI和WFE指令

架构级的休眠形式界说

另外,Cortex-M支撑许多其他的低功耗特征:

休眠和深度休眠形式:架构级支撑的特征,经过装备特定的功耗治理存放器可以进一步扩大。

Sleep-on-exit形式:中缀驱动的使用的低功耗手艺。开启设置后,当异常处置顺序完毕而且没有其他等候处置的异常中缀时,处置器主动进入到休眠形式。这样防止了额定的线程形式中指令的施行从而省电,而且增加了不用要的仓库读写操作。

叫醒中缀掌握器(WIC):一个可选的特征,在特定的低功耗形态,由一个自力于处置器的小模块侦测中缀状况。例如,在形态保存功耗治理(SRPG)设想中,当处置器被关电的设想。

时钟关闭和架构级时钟关闭:经过关闭处置器的存放器或许子模块的时钟输出来省电

一切这些特征都被Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23 和 Cortex-M33支撑。另外,各类低功耗设想手艺被用来下降处置器功耗。

由于更少的电路,Cortex-M0 and Cortex-M0+处置器比Cortex-M3, Cortex-M4 和 Cortex-M7功耗低。另外,Cortex-M0+额定优化增加了顺序存取(例如跳转备份)来保持系统层级的低功耗。

Cortex-M23没有Cortex-M0 和 Cortex-M0+那么小,可是在相反的设置装备摆设下,依然和Cortex-M0+能效一样。

因为更好功能和低功耗优化,在相反设置装备摆设下,Cortex-M33比Cortex-M4能效比更好。

4.2 Bit-band feature位段

Cortex-M3 和Cortex-M4处置器支撑一个叫做位段的可选功用,答应有两段经过位段别号地址完成可以位寻址的1MB的地址空间(一段在从地址0x20000000肇端的SRAM空间。另外一段是从地址0x40000000肇端的核心装备空间)。Cortex-M0, M0+ 和 Cortex-M1不支撑位段(bit-band)功用,可是可以应用ARM Cortex-M系统设想套件(CMSDK)中的总线级组件在系统层面完成位段(bit-band)功用。Cortex-M7不支撑位段(bit-band),由于M7的Cache功用不能与位段一块运用(Cache掌握器不知道内存空间的别号地址)。

ARMv8-M的TrustZone 不支撑位段, 这是因为位段别号需求的两个不同的地址可能会在不同的平安域中。关于这些系统,核心装备数据的位操作反而可以在核心装备层面处置(例如,经过增加位设置和肃清存放器)。

4.3 存储器维护单元(MPU)

除Cortex-M0, 其他的Cortex-M处置器都有可选的MPU来完成存储空间拜访权限和存储空间属性或许存储区间的界说。运转及时操作系统的嵌入式系统, 操作系统会每一个义务界说存储空间拜访权限和内存空间设置装备摆设来包管每一个义务都不会毁坏其他的义务或许操作系统内核的地址空间。Cortex-M0+, Cortex-M3 和 Cortex-M4都有8个可编程区域空间和十分类似的编程模子。主要的区分是Cortex-M3/M4的MPU答应两级的存储空间属性(例如,系统级cache类型),Cortex-M0+仅支撑一级。Cortex-M7的MPU可以设置装备摆设成支撑8个或许16个区域,两级的存储空间属性。Cortex-M0 和 Cortex-M1不支撑MPU.

Cortex-M23 和 Cortex-M33也支撑MPU选项,假如完成了TrustZone平安扩大(一个用于平安软件顺序,另外一个用于非平安软件顺序)可以有最多两个MPU。

4.4 单周期I/O接口

单周期I/O接口是Cortex-M0+处置器共同的功用,这使Cortex-M0+可以很快的运转I/O掌握义务。Cortex-M大少数的处置器的总线接口是基于AHB Lite或许AHB 5和谈的,这些接口都是流水完成总线和谈,运转在高时钟频次。可是,这意味着每一个传输需求两个时钟周期。单时钟周期I/O接口增加了额定的简单的非流水线总线接口,衔接到像GPIO(通用输出输入)这样的一局部装备特定的外设上。结合单周期I/O和Cortex-M0+自然比较低的跳转价格(只要两级流水线),许多I/O掌握操作城市比大少数其他微掌握器架构的产物运转的更快。

5 功能思索

5.1 通用数据处置能力

在通用微掌握器市场,benchmark数据常常用来权衡微掌握器的功能,表7是Cortex-M处置器经常使用benchmark测试的功能数据:

表7.png

表 7: Cortex-M处置器经常使用benchmakr的功能分数

(根源:CoreMark.org 网站 and ARM 网站)

关于Dhrystone需求留意的是用来测试的Dhrystone是由官方源顺序在没有启用inline and 和multi-file compilation编译选项的状况编译进去的(官方分数)。可是,良多微掌握器厂商引用的是完全优化编译的Dhrystone测试进去的数据。

可是,benchmark东西的功能测试数据可能没法精确反响你的使用能到达的功能。例如,单周期I/O接口和DSP使用中运用SIMD,或许Cortex-M4/M7中运用FPU的减速成效并没有在这些测试数据中表现进去。

一般,Cortex-M3 和 Cortex-M4因为以下缘由供给了更高的数据处置功能:

更丰厚的指令集

哈佛总线架构

写缓存(单周期写操作)

跳转目的的猜测取指

Cortex-M33也是基于哈佛总线的架构,有丰厚的指令集。可是不像Cortex-M3 和 Cortex-M4,Cortex-M33处置器流水线是从头设想的高效流水线,支撑无限的指令双发射(可以在一个时钟周期中施行最多两条指令)。

Cortex-M7支撑更高的功能,这是由于M7具有双发射六级流水线并支撑分支猜测。并且,经过支撑指令和数据Cache,和即使运用慢速内存(例如,嵌入式Flash)也能防止功能丧失的紧耦合内存,来完成更高的系统级功能。

可是,某些I/O操作稠密的义务在Cortex-M0+上运转更快,这是由于:

更短的流水线(跳转只需求两个周期)

单周期I/O端口

固然也有装备相干的要素。例如,系统级设想,内存的速度也会影响到系统的功能。

你本人的使用顺序常常是你需求的最好的benchmark。CoreMark分数是另外一个处置器两倍的处置器其实不意味着施行你的使用也快一倍。对I/O稠密操作的使用来讲,装备相干的系统级架构对功能有巨大的影响。

5.2 中缀提早

功能相干的另外一个目标是中缀提早。这一般用从中缀恳求到中缀服务顺序第一条指令施行的时钟周期数来权衡。表8列出了Cortex-M处置器在零等候内存系统前提下的中缀提早比较。

表8.png

表 8: 零等候内存系统前提下的中缀提早比较

现实上,真实的中缀提早遭到内存系统等候形态的影响。例如,许多运转频次超越100Mhz的微掌握器搭配的长短常慢的Flash存储器(例如30到50MHz)。虽然运用了Flash拜访减速硬件来进步功能,中缀提早依然遭到Flash存储系统等候形态的影响。所以完全有可能运转在零等候内存系统Cortex-M0/M0+系统比Cortex-M3/M4/M7有更短的中缀提早。

当评价功能的时分,不要遗忘把中缀处置顺序的施行时间思索在内。某些8位或许16位处置器架构可能中缀提早很短,可是会破费数倍的时钟周期完成中缀处置。十分短的中缀呼应时间和很短的中缀处置时间才是实践无效的。

6 调试和跟踪特征

6.1 调试和跟踪特征简介

不同Cortex-M处置器之间有若干区分。总结在表9中。

QQ截图20170420103320.png

表9: 调试和跟踪特征比较

Cortex-M处置器的调试架构是基于ARM CoreSight调试架构设想的,它是个十分容易扩大的架构,支撑多处置器系统。

表9列出的是典型设想需求思索的。在CoreSight架构下,调试接口和跟踪接口模块是和处置器分离的。因而你采取的装备的调试和跟踪衔接和表9的可能纷歧样。也可能经过增加一些额定的CoreSight调试组件来添加一些调试特征。

6.2 Debug connections调试接口

调试接口可让调试者完成

- 拜访掌握调试和跟踪特征的存放器。

- 拜访内存空间。对Cortex-M系列处置器,实时当处置器运转时也可以施行内存空间拜访。这被称作及时内存拜访。

- 拜访处置器中心存放器。这只能当处置器中止的时分才可以操作。

- 拜访Cortex-M0处置器中微跟踪缓存(MTB)生成的跟踪汗青记载。

另外,调试接口也会用作:

- Flash 编程

Cortex-M系列处置器可以挑选保守的4到5个引脚(TDI, TDO, TCK, TMS 和可选的 nTRST)的JTAG接口,或许挑选新的只需求两个引脚的串行调试和谈接口,串行调试接口对无限数量引脚的装备长短常合适的。

图10.png

图 10: 串口线或许JTAG调试接口allows access to processor’s debug features and memory space including peripherals

串行线调试和谈接口可以处置JTAG支撑的一切特征,支撑奇偶校验。串行调试和谈被ARM东西厂商普遍的采取,许多调试适配器两种和谈都支撑,串行线型号同享调试接口上TCK和TMS针脚。

6.3 跟踪接口

跟踪接口让调试者可以在顺序施行时及时的(很小的延时)搜集顺序运转的信息。搜集的信息可所以Cortex-M3/M4/M7/M33支撑的嵌入式跟踪单元(ETM)生成的顺序指令流信息(指令跟踪),可所以数据跟踪单元(DWT)生成的数据/事情/功能剖析信息,或许是软件掌握数据跟踪单元(ITM)生成的信息。

有两品种型的跟踪接口可用:

- 跟踪端口(Trace port)– 多个数据线加上时钟旌旗灯号线。比SWV有更高的跟踪带宽,可以支撑SWV的一切跟踪类型加上指令跟踪。Cortex-M3/M4/M7或许 Cortex-M33的装备上,跟踪端口一般有4个数据线和一个时钟线。(图11)

- 串行监督器(SWV)– 单引脚线跟踪接口,可以挑选性的支撑数据跟踪,事情跟踪,功能剖析和丈量跟踪。(图 12)

图11.png

图 11: Trace port 支撑指令跟踪和其他跟踪功用需要的带宽

跟踪接口供给了在处置器运转的时分获得少量有效信息的能力。例如嵌入式跟踪单元(ETM)可以获得指令运转汗青记载,数据跟踪单元(ITM)让软件发生消息(例如,经过printf)并应用Trace接口获得。另外,Cortex-M3/M4/M7/M33支撑数据跟踪单元(DWT)模块。

- 可选的数据跟踪:内存地址的信息(例如,地址,数据和时间戳的组合)可以在处置器拜访这个地址的时分收集

- 功能剖析跟踪:CPU在不同操作义务运用的时钟周期数(例如,内存拜访,休眠)

- 事情跟踪:供给服务器呼应的中缀/异常的运转时间和汗青

图12.png

图 12: Serial wire viewer 供给了低本钱,少引脚的跟踪计划

这些跟踪特征被各类东西厂商普遍采取,收集的信息也被以各类体例直不雅的展示进去。例如DWT获得的数据可以在Keil µVision调试器中以波形的体例展示进去(Keil微掌握器开拓东西的一局部)如图 13所示。

图13.png

Figure 13: Keil µVision 调试器的逻辑剖析器

虽然Cortex-M0 和 Cortex-M0+不支撑跟踪接口,Cortex-M0+支撑叫做微跟踪缓存的特征(MTB,图14)。MTB让用户分派一小块系统SRAM作为存储指令的缓存,一般设置为循环缓存,这样可以抓取最新的指令施行汗青并在调试器上显现进去。

这个MTB跟踪特征也被Cortex-M23 and Cortex-M33支撑。

图14.png

图 14: Cortex-M0+/M23/M33 的MTB供给了低本钱指令跟踪计划

7 基于Cortex-M处置器的产物开拓

7.1 为何Cortex-M系列处置器容易运用

虽然Cortex-M系列处置器有十分多的特征,可是很容易运用的。例如,差不多一切的开拓都可以用像C言语这样的初级编程言语。虽然,基于Cortex-M系列处置器产物都大不相反(例如,有不同巨细的内存,不同的外设,功能和封装等等),架构的一致性闪开发者一旦对他们此中的一块有开拓经历,就很容易开端运用新的Cortex-M处置器。

为了完成更容易的软件开拓,更好的软件重用性和可移植性,ARM开拓了CMSIS-CORE,这儿CMSIS暗示Cortex-Microcontroller Software Interface Standard,CMSIS-CORE经过一组APIs为处置器的各类特征像终端治理掌握供给了一个规范的硬件笼统层(HAL), CMSIS-CORE集成在各类微处置器厂商供给的装备驱动顺序库里,被各类开拓东西套件支撑。

除CMSIS-CORE, CMSIS还包括一个DSP软件库(CMSIS-DSP)。这个库供给了为Cortex-M4 和 Cortex-M7优化过的各类DSP函数,固然也支撑其他的Cortex-M系列处置器。CMSIS-CORE 和 CMSIS-DSP库都是免费的,可以从GitHub (CMSIS 4, CMSIS 5)下载到,并被许多东西厂商支撑。

7.2 处置器挑选

对大少数微掌握器用户来讲,微掌握器装备的挑选规范主要取决于本钱和外设的支撑状况。可是,你们两头的良多人多是为下个芯片产物挑选处置器中心芯片设想者,这类状况下,处置器 自身会是思索的核心。

分明的,在这样的状况下,功能,芯片面积,功耗和本钱会是相当主要的要素。同时,另有各类其他的要素需求思索。例如,假如你在开拓一款互联网衔接产物,你或许需求挑选有TrustZone平安扩大和MPU的处置器,这样你可以用TrustZone维护要害的平安特征数据,运转某些义务在非特权级别并用MPU来维护内存空间。另外一方面,假如你需求在某些方面认证你的产物,Cortex-M23, Cortex-M33, Cortex-M3, Cortex-M4 和 Cortex-M7支撑的ETM生成的指令跟踪会对代码掩盖率认证十分有协助。

在其他的芯片设想范畴,假如你正在设想可以运转在能量收集装备供电的小传感器,那么Cortex-M23 和 Cortex-M0+会是最好的挑选,由于他们十分小而且做了最早进的功耗优化。

7.3 生态系统

运用ARM Cortex-M系列处置器的要害优势之一是普遍的幼稚装备,开拓东西链和软件库的支撑。目前有

- 超越15家微掌握器厂商正在出售基于ARM Cortex-M系列内核的微掌握器产物

- 超越10种开拓套件支撑ARM Cortex-M系列处置器

- 40多家操作系统厂商的操作系统支撑Cortex-M系列处置器

这给了你少量挑选,让你可以获得合适目的使用的最好的装备,开拓东西和两头件组合。

8 总结

功能,特征和芯片面积,功耗之间老是需求均衡。为此,ARM开拓了各类Cortex-M处置器,具有不同级此外指令集特征,功能,系统和调试特征。本文介绍了Cortex-M处置器家族各类异同。

虽然具有这差异,但架构的一致性和CMSIS-CORE规范化的APIs都让Cortex-M系列处置器软件有更好的移植性和可重用性。同时,Cortex-M系列处置器十分方便运用。因而,Cortex-M系列处置器很快成为微掌握器市场的最受欢送的32位处置器架构。


文章ARM Cortex-M 处理器家族介绍和比较相关,
黑龙江省医院(总院)颌面外科背部吸脂微整容科