分享

Cortex

 Jessica小馆子 2014-03-22

ARM Cortex-M 技术

每个 Cortex-M 系列处理器都有其特定的优点,通过一些基本技术,使得 Cortex-M 处理器适用于广泛的嵌入式应用领域。


RISC 处理器内核 Thumb-2? 技术
  • 高性能 32 位 CPU
  • 具有确定性的运算
  • 紧凑而低延迟的管道
  • 16/32 位指令的最佳混合
  • 代码大小比 8 位设备小 30%
  • 对性能没有负面影响

工具和 RTOS 支持 CoreSight 调试和跟踪

低功耗模式 嵌套矢量中断控制器 (NVIC)
  • 集成的睡眠状态支持
  • 多电源域
  • 基于架构的软件控制
  • 低延迟、低抖动中断响应
  • 不需要汇编编程
  • 以纯 C 语言编写的中断服务例程

CMSIS

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

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

NVIC 是所有 Cortex-M 处理器不可或缺的组成部分,它为处理器提供了卓越的中断处理能力。在 Cortex-M0、Cortex-M0+ 和 Cortex-M1 处理器中,NVIC 支持多达 32 个中断 (IRQ)、一个不可屏蔽中断 (NMI) 和各种系统异常。Cortex-M3 和 Cortex-M4 处理器扩展了 VIC,使其支持多达 240 个 IRQ、一个 NMI 和更多系统异常。

大多数 NVIC 设置是可编程的。配置寄存器是内存映射的一部分,可以作为 C 指针进行访问。CMSIS 库还提供了各种辅助函数,使中断控制变得更简单。
在 NVIC 内部,每一个中断源都分配有一个中断优先级。一些类似于 NMI 的系统异常均拥有固定的优先级,而其他系统异常则拥有可编程的优先级。通过向每一个中断分配不同的优先级,NVIC 可自动支持嵌套中断,而无需任何软件干预。

该体系结构为每一个可编程的中断或异常提供 8 位优先级设置。为了减少门数,这些寄存器中只有一部分得以实现。Cortex-M0、Cortex-M0+ 和 Cortex-M1 处理器(ARMv6-M 体系结构)提供了 4 个可编程的优先级。Cortex-M3 和 Cortex-M4 处理器(ARMv7-M 体系结构)的设计允许 8 到 256 个优先级。

为了使 Cortex-M 处理器更简单易用,Cortex-M 处理器使用一个基于堆栈的异常模型。一旦出现异常,系统就会将许多寄存器推送到堆栈上。当异常处理程序完成时,这些寄存器将恢复为其原始值。这使得异常处理程序能以普通的 C 函数形式编写,还能减少中断处理过程中隐藏的软件开销。

此外,Cortex-M 处理器使用一个向量表来包含要为每一个特定中断处理程序执行的函数的地址。接受中断时,处理器会从该矢量表中提取地址。这也将避免软件开销,减少中断延迟。

Cortex-M 处理器的实现中还应用了各种优化技术,使得中断处理更高效,系统响应速度更快:

尾链 - 如果在 ISR 退出时有另一个异常挂起,处理器不会从堆栈中恢复所有已保存的寄存器,相反,它会前进到下一个 ISR。这可以减少从一个异常处理程序切换到另一个时的延迟。

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

迟到 - 如果在优先级较低的中断推入堆栈的过程中出现优先级较高的中断,处理器会提取新的矢量地址,并先处理优先级较高的中断。

通过这些优化,随着中断负载的增加,中断开销会减少,从而使嵌入式系统能实现较高的中断处理吞吐量。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多