×
嵌入式 > 技术百科 > 详情

32位中断与睡眠中ARM7和cortex的异同

发布时间:2021-12-28 发布时间:
|

在电子电路设计中,很多看似复杂的设计实际上都能使用32位处理器来完成。但看似直观的选择实际上并不简单,开发者可以选择Cortex-M3或者ARM7TDMI来实现32位的运算,那么这两者有何不同?本文就将从中断与睡眠两个方面来对这两种方式的不同进行介绍。

要使用低成本的32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARMCortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。

中断

Cortex-M3的创新在于嵌套向量中断控制器NVIC

相对于ARM7使用的外部中断控制器,Cortex-M3内核中集成了中断控制器,芯片制造厂商可以对其进行配置,提供基本的32个物理中断,具有8层优先级,最高可达到240个物理中断和256个中断优先级。此类设计是确定的且具有低延迟性,特别适用于汽车应用。

NVIC使用的是基于堆栈的异常模型。在处理中断时,将程序计数器,程序状态寄存器,链接寄存器和通用寄存器压入堆栈,中断处理完成后,在恢复这些寄存器。堆栈处理是由硬件完成的,无需用汇编语言创建中断服务程序的堆栈操作。

中断嵌套是可以是实现的。中断可以改为使用比之前服务程序更高的优先级,而且可以在运行时改变优先级状态。使用末尾连锁(tail-chaining)连续中断技术只需消耗三个时钟周期,相比于32个时钟周期的连续压、出堆栈,大大降低了延迟,提高了性能。

如果在更高优先级的中断到来之前,NVIC已经压堆栈了,那就只需要获取一个新的向量地址,就可以为更高优先级的中断服务了。同样的,NVIC不会用出堆栈的操作来服务新的中断。这种做法是完全确定的且具有低延迟性。

睡眠

为了产生定期的中断时间间隔,NVIC还集成了系统节拍计时器,这个计时器也可以作为RTOS和调度任务的心跳。这种做法与先前的ARM架构的不同之处就在于不需要外部时钟。

在中断方面,M3采用了内核集成的方式,而ARM7选择了外部集成。而在睡眠方面,M3的模式较为多样,能够满足开发者的不同需求。单从中断和睡眠这两方面来看,Cortex-M3的功能性的确要优于ARM7,但32位设计中需要考虑的因素远远不止这两种,在之后的文章中小编将为大家介绍更多因素。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
分拣机器人的工作原理是什么