前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ARM cortexM4 异常处理(1)

ARM cortexM4 异常处理(1)

作者头像
用户1605515
发布2018-04-10 11:28:42
1.1K0
发布2018-04-10 11:28:42
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿
在嵌入式开发中,尤其是在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等

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档