博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARM Cortex-M3 异常优先级以及CMSIS RTOS RTX的中断优先级
阅读量:4319 次
发布时间:2019-06-06

本文共 1029 字,大约阅读时间需要 3 分钟。

通常异常包括一些系统异常,以及中断。

异常类型

Cortex-M3处理器支持多种类型的异常:

  1. RESET, NMI, HardWare Fault;
  2. PSV,SVC等可编程中断;
  3. 其他的可编程中断,例如timer,GPIO等。

其中第1类异常的优先级是固定,不可改变的。其他都是可以修改的。

Cortex-M3处理器提供了PRIMASK选项,用来屏蔽所有可编程的中断;提供了FAULTMASK来屏蔽HardWare Fault和所有可屏蔽中断。

异常优先级

Cortex-M3处理器支持NVIC的中断处理,也就是说中断嵌套处理。中断的优先级由1个8bit寄存器确定,但ARM芯片厂商在实现的时候通常实现了其中的几个bit而已。ARM要求最少实现3个bit。从寄存器的bit 7开始从高往低。

而这几个bit还会分为抢占优先级,普通优先级。见下图:

抢占优先级,是指如果两个中断的普通优先级一样,在抢占优先级低的中断A执行时,如果抢占优先级高的中断B发生了,那么就会中断B就会抢占中断A,处理器开始执行中断B的ISR。

普通优先级,是指如果两个中断的抢占优先级一样,那么中断之间是不会发生抢占的,也就是一个中断不会打断另外一个中断的处理。但是如果两个中断同时发生了,普通优先级高的,先处理。

数字越小,优先级越高。

如果两个中断抢占优先级,普通优先级全部一样,那么中断号小的中断,会先处理,但还是不会发生抢占。

异常向量

根据cortex-M3的技术文档描述,异常向量"vector tables"是放在从地址0x4开始的地方,地址0x0处放的是MSP的初始值。

如下所示,异常向量对应的地址处直接放置的异常处理函数地址,而不是跳转指令。

CMSIS RTOS RTX的中断优先级

由于ARM公司后来搞了CMSIS,也就是在CMSIS层增加了对RTOS的支持。所以很多种RTOS都可以依靠CMSIS RTOS API来实现。

而ARM也把Keil RTX操作系统,也改装成支持CMSIS了,就叫CMSIS RTOS RTX了。

在RTX里面,systick timer/SVC/PSV的中断优先级都是0xFF(具体对应到硬件,要看芯片厂商实现了8bit优先级的几个bit),所以其实他们的优先级都是一样的,并且相互不抢占。

用户可以配置其他可编程优先级,不要求是

转载于:https://www.cnblogs.com/ironx/p/5293450.html

你可能感兴趣的文章
windows 10 & Office 2016 安装
查看>>
最短路径(SP)问题相关算法与模板
查看>>
js算法之最常用的排序
查看>>
Python——交互式图形编程
查看>>
经典排序——希尔排序
查看>>
团队编程项目作业2-团队编程项目代码设计规范
查看>>
英特尔公司将停止910GL、915GL和915PL芯片组的生产
查看>>
团队编程项目作业2-团队编程项目开发环境搭建过程
查看>>
Stax解析XML示例代码
查看>>
cookie
查看>>
二级图片导航菜单
查看>>
<Using parquet with impala>
查看>>
07-Java 中的IO操作
查看>>
uclibc,eglibc,glibc之间的区别和联系【转】
查看>>
Java魔法堂:找外援的利器——Runtime.exec详解
查看>>
mysql数据库存放路径
查看>>
TestNG(五)常用元素的操作
查看>>
解决 Visual Studio 点击添加引用无反应的问题
查看>>
通过镜像下载Android系统源码
查看>>
python字符串格式化 %操作符 {}操作符---总结
查看>>