历史上的今天
今天是:2025年03月14日(星期五)
2020年03月14日 | ARM cortexM4 异常处理(1)
2020-03-14 来源:eefocus
在嵌入式开发中,尤其是在ARM的程序开发中,对异常的处理起着至关重要作用,那么cortexM4内核是如何管理异常的呢?我们将分几个小篇来讲解异常,今天先来了解下基本知识
异常状态
每一中异常总共有四种状态:
非激活态:异常没有被激活且没有被挂起。
挂起态: 异常等待处理器服务,一个外设的中断或者软件中断请求可以改变 相应中断的状态到挂起态,中断其实也是一种异常。
激活态: 处理器正在处理异常且还没有完成。
激活且挂起态:这种状态显然从字面意思理解就是激活态和挂起态的组合,即 处理器正在服务于异常时,有来自于同源的挂起异常
异常类型
Reset 复位:异常模式将复位看做是一种特殊类型的异常。
NMI 非屏蔽中断: 非屏蔽中断是除复位以外最高优先级的异常,NMI永久使能,且优先级为-2,NMI不能被其他异常从激活态屏蔽或阻止,也不能被其他异常抢占,除过复位。
HardFault: 硬件故障异常的发生,是因为异常处理错误,或者因为一种异常不能被其他异常机制管理,有固定的优先级-1,
MemMange:内存管理故障异常,是与内存保护相关的故障,
BusFault:总线故障异常是指令和数据内存处理时相关的故障,可能来自于内存系统中,检测到总线故障。
UsageFault: UsageFault异常是指令执行相关的故障,包括未定义的指令,非法未对齐的存取访问,指令执行的无效状态,异常返回错误,除数为0.
SVCall: SVCall 是被SVC 指令触发的一种异常,在操作系统环境下,应用程序可以使用SVC指令进入操作系统内核功能和设备驱动。
PendSV: PendSV是中断驱动的系统级服务请求,
SysTick: SysTick异常是系统定时器递减到0时候产生的,软件也可以产生SysTick异常,在操作系统环境下,处理器可以使用SysTick作为系统的滴答时钟。
Interrupt(ISR):这个大家应该都很熟悉,就是我们经常用的外设的中断,也可以是软件请求的中断,在系统中,外设使用中断和内核通信交流。各种异常的属性总结如下表:
异常处理
异常处理有三种:
Interrupt Service Routines(ISR)中断服务程序:主要处理中断
Fault Handlers:主要处理HardFault, MemManage Fault,UsageFault,BusFault,
System Handlers: 主要处理NMI,PendSV,SVCall,SysTick等
下一篇:ARM架构异常中断处理流程
史海拾趣
|
引用《移动在线》 GSM数字移动通信发展非常迅速,从早期规划的大区制,到后来的小区制,直到现在的微蜂窝、微微蜂窝,相对应的天线从早期架设在屋面铁塔上,到后来天线降到屋面上,直到现在要把天线设置在屋面下的外墙侧面上。所有的这些变化都说 ...… 查看全部问答> |
|
1.4 深度睡眠模式设置步骤 处理通过调用WFI 指令即可进入睡眠模式,但要进入深度睡眠实现最低的功耗需要正确配置,其步骤如下: 1. 使能ACG 自动时钟门控。这样睡眠模式和深度睡眠模式的外设时钟可以单独控制。 2. 配置寄存器DCGC0、 DCGC1 和DC ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:00 编辑 请问广州哪里有零售漆包线、绝缘纸和绝缘漆的地方?? 昨天下午走了一下午,传说中有这些东西的解放中,都没看见有卖忘各位朋友指出哪里有得买 … 查看全部问答> |
|
FLASH锁死了这是为什么,有没有办法解锁。为什么会有类似下面这几种报错: Read status value 0x0001 from symbol PRG_status(24x系列) ADC Calibration not complete, check if device is unlocked and recalibrate.(2833x系列) 答:FL ...… 查看全部问答> |
|
想问一下各位大侠,施密特触发器对于直流信号是怎么处理的?(我仿真过,发现如果输入一个电压介于两个门限电压之间,那输出电压和输入电压是成比例的,谁能告诉我为什么啊?)… 查看全部问答> |




