Cortex-M0 处理器
2013年07月03日 17:06 发布者:李宽
ARM Cortex-M0 处理器是目前最小的 ARM 处理器。该处理器的芯片面积非常小,能耗极低,且编程所需的代码占用量很少,这就使得开发人员可以直接跳过16位系统,以 接近8 位系统的成本开销获取 32 位系统的性能。Cortex-M0 处理器超低的门数开销,使得它可以用在在模拟和数模混合设备中。什么选择 Cortex-M0?
最小的 ARM 处理器
Cortex-M0 在代码密度和能效比方面的优势意味着它能够顺理成章地在很广大的应用领域里成为8/16 位系统经济实用的升级换代产品,同时它还保留了与更强大的 Cortex-M3 和 Cortex-M4 处理器的工具及二进制向上兼容性。对于需要更低功耗或更多设计选择的应用,完全兼容的 Cortex-M0+ 处理器是理想的候选产品。
低功耗
Cortex-M0 处理器在门数低于 12 K 时的能耗仅为 16µW/MHz(90LP 工艺,最低配置),这都得益于该处理器是建立在 ARM 作为低能耗技术的领导者以及超低能耗设备的主要推动者所具备的专业知识基础之上。
简单
由于仅有 56 个指令,您可以快速掌握整个 Cortex-M0 指令集及其对 C 语言友好的架构,使开发变得简单而快速。可供选择的具有完全确定性的指令和中断计时使得计算响应时间十分容易。
优化的连接性
支持实现低能耗网络互联设备(如 Bluetooth Low Energy (BLE)、IEEE 802.15 和 Z-wave),尤其是那些需要通过增强数字功能以高效地进行预处理和传输数据的模拟设备。
ARM Cortex-M0 规范
ARM Cortex-M0 功能
ISA 支持Thumb® / Thumb-2子集
管道3 阶段
性能效率1.62 CoreMark/MHz - 0.84 DMIPS/MHz(RVCT 5.0.90 编译器)
中断不可屏蔽的中断 (NMI) + 1 到 32 个物理中断
睡眠模式 集成的 WFI 和 WFE 指令和“退出时睡眠”功能。
睡眠和深度睡眠信号
随 ARM 电源管理工具包提供的可选保留模式
位操作可以使用 Cortex-M 系统设计工具包来实现位段区
增强的指令硬件单周期 (32x32) 乘法选项
调试可选 JTAG 和串行线调试端口。最多 4 个断点和 2 个观察点
ARM Cortex-M0 实现数据*
180ULL
(7 轨,通常为 1.8v,25C)
90LP
(7 轨,通常为 1.2v,25C)
40G
(9 轨,通常为 0.9v,25C)
动态功耗73µW/MHz16µW/MHz4µW/MHz
平面规划面积0.13 mm20.04 mm2>0.01 mm2
* 基本可用配置包括 1 IRQ + NMI,不包括调试
ARM Cortex-M 技术
每个 Cortex-M 系列处理器都有其特定优点:采用一些基本技术,而这些技术使得 Cortex-M 处理器适用于广泛的嵌入式应用程序。
RISC 处理器内核 Thumb-2® 技术
[*]高性能 32 位 CPU
[*] 具有确定性的运算
[*]紧凑而低延迟的管道
[*]16/32 位指令的最佳混合
[*] 代码大小比 8 位设备小 30%
[*] 对性能没有负面影响
低功耗模式嵌套矢量中断控制器 (NVIC)
[*] 集成的睡眠状态支持
[*] 多电源域
[*] 基于架构的软件控制
[*] 低延迟、低抖动中断响应
[*] 不需要汇编编程
[*] 以纯 C 语言编写的中断服务例程
工具和 RTOS 支持CoreSight 调试和跟踪
[*] 广泛的第三方工具支持
[*] Cortex 微控制器软件接口标准 (CMSIS)
[*] 最大限度地实现软件重用
[*] JTAG 或 2 针串行线调试 (SWD) 连接
[*] 支持多处理器
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公司