Login

Important information

本网站使用cookie来存储信息在您的计算机上。继续使用我们的网站,您必須同意我们 cookies.

ARM网站使用两款浏览器缓存数据(cookie):(1)缓存数据(cookie)可以使网站按需要完成功能执行 (2)分析性缓存数据(cookie)在用户登录网站时会进行匿名记录和数据分析。如果您不希望应用这些缓存数据(cookie),请通过查阅我们的安全隐私政策获知如何设置禁用缓存数据(cookie)。网站的某些功能会因设置禁用缓存数据(cookie)不能使用。

Cortex-M3 处理器

Cortex-M3 处理器 Image (View Larger Cortex-M3 处理器 Image)
ARM Cortex™-M3 处理器是行业领先的 32 位处理器,适用于具有较高确定性的实时应用,它经过专门开发,可使合作伙伴针对广泛的设备(包括微控制器、汽车车身系统、工业控制系统以及无线网络和传感器)开发高性能低成本平台。此处理器具有出色的计算性能以及对事件的优异系统响应能力,同时可应实际中对低动态和静态功率需求的挑战。此处理器配置十分灵活,从而支持广泛的实现形式(从需要内存保护和强大 trace 技术的实现形式,直至需要极小面积的成本敏感型设备)。
 


为什么选择 Cortex-M3

提供更高的性能和更丰富的功能

于 2004 年引进、最近通过新技术进行了更新并更新了可配置性的 Cortex-M3,是专门针对微控制器应用开发的主流 ARM 处理器。

性能和能效 

具有高性能和低动态能耗,Cortex-M3 处理器提供领先的功效:在 90nmG 基础上为 12.5 DMIPS/mW。将集成的睡眠模式与可选的状态保留功能相结合,Cortex-M3 处理器确保对于同时需要低能耗和出色性能的应用不存在折衷。

全功能

该处理器执行包括硬件除法、单周期乘法和位字段操作在内的 Thumb®-2 指令集以获取最佳性能和代码大小。Cortex-M3 NVIC 在设计时是高度可配置的,最多可提供 240 个具有单独优先级、动态重设优先级功能和集成系统时钟的系统中断。

丰富的连接

通过功能与性能的组合,基于 Cortex-M3 的设备可高效处理多个 I/O 通道和协议标准,如 USB OTG (On-The-Go)。


ARM Cortex-M3 规范

ARM Cortex-M3 功能
ISA 支持 Thumb® / Thumb-2
管道 3 阶段
性能效率 2.17 CoreMark/MHz  -  1.25 DMIPS/MHz
内存保护 带有子区域和后台区域的可选 8 区域 MPU
中断 不可屏蔽的中断 (NMI) + 1 到 240 个物理中断
中断优先级 8 到 256 个优先级
唤醒中断控制器 最多 240 个唤醒中断
睡眠模式

集成的 WFI 和 WFE 指令和“退出时睡眠”功能。

睡眠和深度睡眠信号。

随 ARM 电源管理工具包提供的可选保留模式

位操作 集成的指令和位段
增强的指令 硬件除法(2-12 个周期)和单周期 (32x32) 乘法、饱和数学支持。
调试 可选 JTAG 和串行线调试端口。最多 8 个断点和 4 个检测点。
跟踪 可选指令跟踪 (ETM)、数据跟踪 (DWT) 和测量跟踪 (ITM)

 

ARM Cortex-M3 实现数据*

180ULL

(7 轨,通常为 1.8v,25C)

90LP

(7 轨,通常为 1.2v,25C)

40G

(9 轨,通常为 0.9v,25C)

动态功耗 149 µW/MHz 32 µW/MHz 7 µW/MHz
平面规划面积 0.43 mm2 0.12 mm2 0.03 mm2

  * 基本可用配置包括 1 IRQ + NMI,不包括 ETM、MPU 和调试


ARM Cortex-M 技术

每个 Cortex-M 系列处理器都有其特定优点:采用一些基本技术,而这些技术使得 Cortex-M 处理器适用于广泛的嵌入式应用程序。

 

 RISC 处理器内核 

Thumb-2® 技术

  • 高性能 32 位 CPU
  • 具有确定性的运算
  • 紧凑而低延迟的管道
  • 16/32 位指令的最佳混合
  • 代码大小比 8 位设备小 30%
  • 对性能没有负面影响
 低功耗模式

嵌套矢量中断控制器 (NVIC)

  • 集成的睡眠状态支持
  • 多电源域
  • 基于架构的软件控制
  • 低延迟、低抖动中断响应
  • 不需要汇编编程 
  • 以纯 C 语言编写的中断服务例程
 工具和 RTOS 支持 CoreSight 调试和跟踪

CMSIS

ARM Cortex 微控制器软件接口标准 (CMSIS) 是一个与供应商无关的硬件抽象层,用于 Cortex-M 处理器系列。CMSIS 可为接口外设、实时操作系统和中间件实现一致且简单的处理器软件接口,从而简化软件的重用。CMSIS 可缩短微控制器开发人员新手的学习过程,从而缩短新产品的上市时间。

深入:嵌套矢量中断控制器 (NVIC)

NVIC 是 Cortex-M 处理器不可或缺的部分,它为处理器提供了卓越的中断处理能力。

Cortex-M 处理器使用一个矢量表,其中包含要为特定中断处理程序执行的函数的地址。接受中断时,处理器会从该矢量表中提取地址。

为减少门数和提高系统灵活性,Cortex-M 处理器采用基于堆栈的异常模型。一旦发生异常,Cortex-M 处理器就会将关键通用寄存器推到堆栈上。一旦完成入栈和指令取回,就会执行中断服务例程或故障处理程序,然后自动还原寄存器以使中断的程序恢复正常执行。这种方法不再需要编写对于传统 C 语言中断服务例程来说执行堆栈操作所必需的汇编器包装程序,从而大大方便了应用程序的开发。NVIC 支持多个中断的嵌套(入栈),通过运用较高优先级来允许某一中断的较早执行。对硬件中断的全面响应

Cortex-M 系列处理器的中断响应是从发出中断信号到执行中断服务例程的周期数。它包括: 

  • 检测中断
  • back-to-back 或 late arriving 的最佳处理(参见下文)
  • 提取中断向量地址
  • 将易损坏的寄存器入栈
  • 跳转到中断处理程序

这些任务在硬件中执行,并且包含在为 Cortex-M 处理器报出的中断响应周期时间中。在许多其他架构中,这些任务必须在软件的中断处理程序中执行,从而引入延迟并带来复杂性。

 

NVIC 中的 Tail chaining

Back to back 中断时序图

在 Back to back 中断的情况下,传统系统会重复完整的状态保存和还原周期两次,从而导致更高的延迟。Cortex-M 处理器通过在 NVIC 硬件中实现 Tail chaining 技术来简化活动的中断和挂起的中断之间的切换。处理器状态会在进入中断时自动保存,并在退出中断时恢复。由于与软件实现相比周期数减少,因而可显著提高低频系统的性能。

NVIC 对迟到的较高优先级中断的响应

迟到中断到达时间图

如果在为上一个中断执行堆栈推送期间较高优先级的中断迟到,NVIC 会立即提取新的矢量地址来为挂起的中断提供服务,如上所示。Cortex-M NVIC 对这些可能性提供具有确定性的响应并支持迟到和抢占。

 

NVIC 进行的堆栈弹出抢占

抢占时间图

同样,如果异常到达,NVIC 将放弃堆栈弹出并立即为新的中断提供服务,如上所示。通过抢占并切换到第二个中断而不完成状态还原和保存,NVIC 以具有确定性的方式实现了缩短延迟。

 


从 8/16 位迁移到 ARM Cortex-M

ARM Cortex-M 代码大小优势说明

ARM Cortex-M 处理器提供优于 8 位和 16 位架构的代码密度。这在减少对内存的需求和最大限度地提高宝贵的芯片上闪存的使用率方面具有很大的优势。我们将在本部分中分析此优势的原因。

指令宽度

很多人认为 8 位微控制器使用 8 位指令,而基于 ARM Cortex-M 处理器的微控制器使用 32 位指令,其实这是一种误解。事实上,举例来说,PIC18 和 PIC16 指令大小分别是 16 位和 14 位。对于 8051 架构,虽然某些指令的长度为 1 字节,但许多其他指令的长度为 2 字节或 3 字节。16 位架构也是如此,其中某些指令可能占用 6 字节或更多内存。

ARM Cortex-M 处理器采用可提供极佳代码密度的 ARM Thumb®-2 技术。通过 Thumb-2 技术,Cortex-M 处理器支持基本 16 位 Thumb 指令,这些指令经过扩展,可包括进更强大的 32 位指令。在很多情况下,C 编译器将使用 16 位版本的指令,除非使用 32 位版本可以更有效地执行运算。

指令效率

由于没有同时考虑到 ARM Cortex-M 处理器指令更为强大,此图片是不完整的。在许多情况下,单个 Thumb 指令可相当于数个 8/16 位微控制器指令;这意味着 Cortex-M 设备的代码量更少,因此可以更低的总线速度完成同一任务。

在各处理器架构之间比较 16 位乘法运算

 8 位示例 16 位示例 ARM Cortex-M

MOV A, XL;2 字节

MOV B, YL;3 字节

MUL AB;1 字节

MOV R0, A;1 字节

MOV R1, B;3 字节

MOV A, XL;2 字节

MOV B, YH;3 字节

MUL AB;1 字节

ADD A, R1;1 字节

MOV R1, A;1 字节

MOV A, B;2 字节

ADDC A, #0;2 字节

MOV R2, A;1 字节

MOV A, XH;2 字节

MOV B, YL;3 字节

 

MUL AB;1 字节

ADD A, R1;1 字节

MOV R1, A;1 字节

MOV A, B;2 字节

ADDC A, R2;1 字节

MOV R2, A;1 字节

MOV A, XH;2 字节

MOV B, YH;3 字节

MUL AB;1 字节

ADD A, R2;1 字节

MOV R2, A;1 字节

MOV A, B;2 字节

ADDC A, #0;2 字节

MOV R3, A;1 字节  

 

MOV R4,&0130h

MOV R5,&0138h

MOV SumLo,R6

MOV SumHi,R7

(操作数被移入或移出内存映射的硬件乘法单元)

 

 MULS r0,r1,r0

 注意:Cortex-M 乘法实际上执行 32 位乘法,此处我们假设 r0 和 r1 包含 16 位数据。

压缩的数据占用空间

请务必注意,Cortex-M 处理器支持 8 位和 16 位数据传输,可高效利用数据内存。这意味着程序员可以继续使用他们在面向 8/16 位的软件中使用的相同数据类型。

能效优势

对不断增加连接(例如,USB、蓝牙和 IEEE 802.15)、具有复杂模拟传感器(例如,加速计和触摸屏)且成本日益降低的产品的需求,已导致需要将模拟设备与数字功能更紧密地集成,以对数据进行预处理和传输。大多数 8 位设备在不显著增加 MHz(并因此不显著增加功率)的情况下不提供支持这些任务的性能,因此嵌入式开发人员需要寻找具有更高级处理器技术的替代设备。16 位设备以前曾被用来解决微控制器应用中的能效问题。但是,16 位设备相对不高的性能意味着它们通常需要较长的活动工作周期或较高的时钟频率才能完成 32 位设备所完成的相同任务。

使软件开发更加容易

基于 ARM Cortex 处理器的微控制器的软件开发可能比 8 位微控制器产品的开发容易得多。 Cortex 处理器不但是完全可通过 C 语言进行编程的,而且还附带各种高级调试功能以帮助定位软件中的问题。 除 MCU 开发工具包中包括的所有附加资源外,Internet 上还有大量示例和教程,其中许多来自基于 ARM 处理器的 MCU 供应商的网站。


资源

本部分介绍有关 ARM Cortex-M 处理器和相关技术的有用文档、白皮书和教程。

有关包括开发工具、软件、板卡和设备数据库、CMSISmBed 在内的详细信息,请访问 ARM 嵌入式微型站点

书目

ARM Cortex-M0 权威指南
编程和实现全新 ARM Cortex-M0 处理器的综合性指南  
 

ARM Cortex-M3 权威指南
编程和实现全新 ARM Cortex-M3 处理器的综合性指南 
 

 

适用于 Cortex-M 设备用户的文档

适用于 Cortex-M 设备用户的软件开发工具

查找基于 Cortex-M 的微控制器

大学

相关用户指南和应用说明

用于访问处理器 IP 的 DesignStart

» 
Cortex-M Series Forum Posts

Maximise