投稿 媒体联盟
威腾网 首页 发现 AR现实增强 查看内容

ARM Cortex

2017-4-19 17:31| 发布者: 实习小编

简介:概要ARM Cortex-M处理器家族现在有8款处理器成员。在本文中,我们会比较Cortex-M系列处理器之间的产品特性,重点讲述如何根据产品应用选择正确的Cortex-M处理器。本文中会详细的对照Cortex-M 系列处理器的指令集和高 ...


提要
ARM Cortex-M处置器家属现在有8款处置器成员。在本文中,我们会比力Cortex-M系列处置器之间的产物特征,重点报告若何按照产物利用挑选正确的Cortex-M处置器。本文中会具体的对照Cortex-M 系列处置器的指令集和高级中断处置才能,以及SoC系统级特征,调试和追踪功用和性能的比力。

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总结了三个处置器系列的首要特征。

1.2 Cortex-M 处置器家属
Cortex-M处置器家属更多的集合在低性能端,可是这些处置器相比于很多微控制器利用的传统处置器性能仍然很强大。例如,Cortex-M4和Cortex-M7处置器利用在很多高性能的微控制器产物中,最大的时钟频次可以到达400Mhz。

固然,性能不是挑选处置器的唯一目标。在很多利用中,低功耗和本钱是关键的挑选目标。是以,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)
- 易用性

例如,嵌套向量中断控制器是内置的中断控制器

支持很多外围装备的中断输入,一个不成屏障的中断请求,一个来自内置时钟(SysTick)的中断请求(见章节 3.3)和一定数目的系统异常请求。NVIC处置这些中断和异常的优先级和屏障治理。

NVIC以及异常处置模子的更多的内容在章节3.2描写。其他Cortex-M处置器间的异同点会在本文的其他部分讲授。

2 Cortex-M处置器指令集

2.1 指令集简介
大大都情况下,利用法式代码可以用C或其他高级说话编写。可是,对Cortex-M 处置器支持指令集的根基领会有助于开辟者针对具体利用挑选合适的Cortex-M处置器。指令集(ISA)是处置器架构的一部分,Cortex-M处置器可以分为几个架构标准

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


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 操纵:

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)总结了那些关键的差别。

 

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可选的浮点运算单元利用的。

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所示。

别的一个编程模子之间的分歧是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所示。

请留意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具有的优先品级调剂功用。

一切的Cortex-M处置器在异常处置是都要依靠向量表。向量表保存着异常处置函数的肇端地址(如图8所示)。向量表的肇端地址由名为向量表偏移寄存器(VTOR)决议。
? Cortex-M0+, Cortex-M3 andCortex-M4 processors: by default the vector table is located in the starting of the memory map (address 0×0).Cortex-M0+, Cortex-M3 andCortex-M4:向量表默许放在存储空间的肇端地址(地址 0×0)。
? 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 0×00000000.Cortex-M0 and Cortex-M1没有实现可编程的VTOR,向量表肇端地址一向为0×00000000。
Cortex-M0+ 和 Cortex-M23处置器的VTOR是可选项。假如VTOR被实现了,向量表的肇端地址可以经过设备VTOR来改变,这个功用对以下情况有用:
? 重定位向量表到SRAM来实现静态改变异常处置函数进口点
? 重定位向量表到SRAM来实现更快的向量读取(假如flash存储器很慢)
? 重定位向量表到ROM分歧位置(大概Flash),分歧的法式运转阶段可以有分歧的异常处置法式

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

 

大部分情况下,对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))处在平安状态。

非平安状态的软件只能拜候非平安状态的存储空间和外围装备,平安软件可以拜候两种状态下的一切资本。
用这类计划,软件开辟者可以用以往的方式开辟非平安情况下的利用法式。同时,他们可以借助芯片厂商供给的平安通讯软件库履行平安物联网毗连。而且即使运转在非平安情况的特权级的法式有缝隙,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产物子标准中额外的毛病处置法式供给了灵活的毛病处置才能,毛病状态寄存器让毛病事务的定位和调试加倍轻易。很多贸易开辟套件中的调试器已经内嵌了利用毛病状态寄存器来诊断毛病事务的功用。此外,毛病处置法式可以在运转时做一些修复工作。

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的地址空间(一段在从地址0×20000000肇端的SRAM空间。另一段是从地址0×40000000肇端的外围装备空间)。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测试的性能数据:

关于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处置器在零期待内存系统条件下的中断提早比力。

究竟上,实在的中断提早遭到内存系统期待状态的影响。例如,很多运转频次跨越100Mhz的微控制器搭配的是很是慢的Flash存储器(例如30到50MHz)。虽然利用了Flash拜候加速硬件来进步性能,中断提早仍然遭到Flash存储系统期待状态的影响。所以完全有能够运转在零期待内存系统Cortex-M0/M0+系统比Cortex-M3/M4/M7有更短的中断提早。

当评价性能的时辰,不要忘记把中断处置法式的履行时候斟酌在内。某些8位大概16位处置器架构能够中断提早很短,可是会花费数倍的时钟周期完成中断处置。很是短的中断响应时候和很短的中断处置时候才是现实有用的。

6 调试和跟踪特征

6.1 调试和跟踪特征简介
分歧Cortex-M处置器之间有多少区分。总结在表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接口,大概挑选新的只需要两个引脚的串行调试协议接口,串行调试接口对有限数目引脚的装备是很是合适的。

串行线调试协议接口可以处置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)

跟踪接口供给了在处置器运转的时辰获得大量有用信息的才能。例如嵌入式跟踪单元(ETM)可以获得指令运转历史记录,数据跟踪单元(ITM)让软件发生消息(例如,经过Printf)并操纵Trace接口获得。别的,Cortex-M3/M4/M7/M33支持数据跟踪单元(DWT)模块。
- 可选的数据跟踪:内存地址的信息(例如,地址,数据和时候戳的组合)可以在处置器拜候这个地址的时辰收集
- 性能分析跟踪:CPU在分歧操纵使命利用的时钟周期数(例如,内存拜候,休眠)
- 事务跟踪:供给办事器响应的中断/异常的运转时候和历史

这些跟踪特征被各类工具厂商普遍采用,收集的信息也被以各类方式直观的展现出来。例如DWT获得的数据可以在Keil μVision调试器中以波形的方式展现出来(Keil微控制器开辟工具的一部分)如图 13所示。

虽然Cortex-M0 和 Cortex-M0+不支持跟踪接口,Cortex-M0+支持叫做微跟踪缓存的特征(MTB,图14)。MTB让用户分派一小块系统SRAM作为存储指令的缓存,凡是设备为循环缓存,这样可以抓取最新的指令履行历史并在调试器上显现出来。

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

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位处置器架构。

额外的资本
Cortex-M系列处置器产物信息可以查找https://developer.arm.com/products/processors/cortex-m
一系列有用的Cortex-M资本存鄙人面的网址https://community.arm.com/processors/b/blog/posts/cortex-m-resources

关于ARMv8-M TrustZone的其他的有用的资本可以查找ARM社区(community.arm.com)的“TrustZone for ARMv8-M Community”。ARM社区是为开辟者和开辟工具厂商,产物计划商之间供给的一个免费的,开放的,非正式的交换区

本文中出现的商标是ARM有限公司(或其子公司)在欧盟和/或其他地方注册的/或未注册的商标。保存一切权利。文中一切其他标志能够是其他一切人的商标。欲领会更多信息,请拜候arm.com/about/trademarks。

收藏 邀请

打赏一下

最新评论

精选资讯

更多+

资讯排行

更多+
中立 专业 共享 双赢

反馈:online@weiot.net 岳先生

产品:yameng@weiot.net 于女士

渠道:liyan@weiot.net 李女士

商务:zuoshan@weiot.net 左先生

新媒体:tianlijuan@weiot.net 田女士

关于威腾网什么是威腾网?

关于威腾网 | 威腾网大事记 | 联系威腾网 | 商务合作 | 公司招聘 | 寻求报道

网站地图快速找到你想要的
微信扫一扫关注我们
媒体联盟|Archiver|滚动新闻|原创汇集|产品地图|TAG标签|网站地图|威腾网-智能硬件互动平台 ( 京ICP备-09048584-7