ARM explains good interrupt control for low power processors -Joseph Yiu

ARM 为低功耗处理器提供很好的中断控制器

在低功耗处理器中实现好的中断控制 ,作者 Joseph Yiu  ARM嵌入式技术专家

中断是大多数嵌入式微控制器主要的特点,对中断的有效的实时响应对于那些通过“快速运行-停止”方式来提高能源效率的低功耗系统来说非常重要,比如在电源消耗非常重要的电池供电设备,出现一些外设事件需要处理的时候,微控制器必须具备“有效的”、“低延迟”的中断处理程序能从原来程序执行暂停位置的睡眠状态迅速唤醒的能力,ARM Cortex-M系列的嵌套中断控制器(NVIC)的每一个特性都能体现这种能力。

在 Cortex-M0、Cortex-M0+ 和 Cortex-M1处理器中,NVIC支持高达32个中断请求(IRQ)、一个非屏蔽中断(NMI)和其它的一些系统异常,Cortex-M3和Cortex-M4处理器扩展NVIC支持到240 IRQ,1个NMI和更多的系统异常,大多数NVIC设置都是可编程的,这些属于存储空间一部分的可配置寄存器可以直接使用C 指针来访问,Cortex 微控制器软件接口标准(CMSIS)库也提供各种有用的函数使得中断控制更容易。


在NVIC内部,可以为每个中断源指定一个中断优先级,一些系统异常如NMI有固定的中断优先级,其它的中断源优先级可以通过编程来自定义,通过对每一个中断源指定不同的中断优先级的方式,NVIC支持中断自动嵌套,无需软件干涉(现场保护、恢复等)。Cortex-M架构为每个中断或异常提供8-bit优先级设置,为了减少门的数量,这些寄存器的一部分有效(其它保留),在Cortex-M0、Cortex-M0+和Cortex-M1处理器(ARMv6-M 内核架构)中,提供了4个可配置的优先级,在Cortex-M3和Cortex-M4处理器(ARMv7-M 内核架构)中,设计允许8到256个优先级可配置,为了使Cortex-M系列更容易使用基于堆栈的异常模型,当一个异常发生,一系列的寄存器将会自动入栈,


当异常处理完成之后,这些寄存器会恢复到之前的值(异常发生之前),这些特点使得异常处理可以使纯C函数,并且避免了中断处理过程中隐藏的软件开销。此外,Cortex-M 系列处理器使用了包含每个中断处理函数地址的中断向量表,一旦获取到中断请求,处理器会从中断向量表中取中断处理函数的地址,再一次减少了使用软件跳转到中断处理函数地址的开销。

Cortex-M系列处理器上也使用其它的一些优化技术,来使得中断处理更加有效、响应更加灵敏:

  • 咬尾中断:当一个中断服务程序(ISR)退出的时候,有一个中断正在被挂起,此时处理器不需要从堆栈恢复寄存器值,而是直接跳转到下一个ISR处执行,这个操作减少了一个中断到另一个中断的延迟。
  • 出栈抢占:当在一个中断返回过程中,出现了一个更高优先级的中断,此时处理器会放弃前一个中断的中断返回操作(出栈,寄存器恢复),转而去处理新高优先级的中断,通过这种抢占转向高优先级中断执行,没有了状态恢复和保存的操作,NVIC以这种确定的方式获得了很低的中断延迟。
  • 后来居上:在一个中断入栈过程中,一个更高优先级的中断发生了,处理器会取高优先级的中断向量地址,并优先处理之。

拥有这些优化的ARM NVIC技术,使得在低功耗系统中当中断负载增加的情况下降低中断开销,确保了高效中断处理系统吞吐量的同时满足系统低功耗的要求。ARM NVIC 和Cortex 处理器架构可以从这个地址获取:http://infocenter.arm.com/help/index.jsp

-------------------------------------------------------------------------------------------------------------------------------------------------------

英文原文路径:http://www.electronicsweekly.com/Articles/10/10/2012/54737/arm-explains-good-interrupt-control-for-low-power-processors.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值