ARM异常中断处理概述
2012-11-01 11:28
375 查看
1.中断的概念
什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。
在处理器中,所谓中断,是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。为事件服务的程序称为中断服务程序或中断处理程序。严格地说,上面的描述是针对硬件事件引起的中断而言的。用软件方法也可以引起中断,即事先在程序中安排特殊的指令,CPU执行到该类指令时,转去执行相应的一段预先安排好的程序,然后再返回来执行原来的程序,这可称为软中断。把软中断考虑进去,可给中断再下一个定义:中断是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。因硬件原因引起的中断过程的出现是不可预测的,即随机的,而软中断是事先安排的。
2.中断源的概念
仔细研究一下生活中的中断,对于理解中断的概念也很有好处。什么可以引起中断,生活中很多事件可以引起中断:
有人按门铃了,电话铃响了,你的闹钟响了,你烧的水开了……诸如此类的事件。我们把可以引起中断的信号源称为中断源。
3.中断优先级的概念
设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做什么呢?如果你正在等一个很重要的电话,一般不会去理会门铃;反之,如果你正在等一位重要的客人,则可能就不会去理会电话了。如果不是这两者(既不等电话,也不等人上门),你可能会按你通常的习惯去处理。总之,这里存在一个优先级的问题,在处理器中也是如此,也有优先级的问题。即同时有多个中断源递交中断申请时的中断控制器对中断源的响应优先级别。需要注意的是,优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况。比如,你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了的情况。这时也需要根据中断源的优先级来决定下一动作。
ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(Data Abort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(Prefetch Abort)、软中断异常(SWI)和未定义指令异常(Undefined interrupt)。
注意:
在ARM处理器中,异常(Exception)和中断(Interrupt)有些差别,异常主要是从处理器被动接受异常的角度出发,而中断带有向处理器主动申请的色彩。在本书中,对“异常”和“中断”不做严格区分,两者都是指请求处理器打断正常的程序执行流程,进入特定程序循环的一种机制。
什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。
在处理器中,所谓中断,是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。为事件服务的程序称为中断服务程序或中断处理程序。严格地说,上面的描述是针对硬件事件引起的中断而言的。用软件方法也可以引起中断,即事先在程序中安排特殊的指令,CPU执行到该类指令时,转去执行相应的一段预先安排好的程序,然后再返回来执行原来的程序,这可称为软中断。把软中断考虑进去,可给中断再下一个定义:中断是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。因硬件原因引起的中断过程的出现是不可预测的,即随机的,而软中断是事先安排的。
2.中断源的概念
仔细研究一下生活中的中断,对于理解中断的概念也很有好处。什么可以引起中断,生活中很多事件可以引起中断:
有人按门铃了,电话铃响了,你的闹钟响了,你烧的水开了……诸如此类的事件。我们把可以引起中断的信号源称为中断源。
3.中断优先级的概念
设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做什么呢?如果你正在等一个很重要的电话,一般不会去理会门铃;反之,如果你正在等一位重要的客人,则可能就不会去理会电话了。如果不是这两者(既不等电话,也不等人上门),你可能会按你通常的习惯去处理。总之,这里存在一个优先级的问题,在处理器中也是如此,也有优先级的问题。即同时有多个中断源递交中断申请时的中断控制器对中断源的响应优先级别。需要注意的是,优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况。比如,你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了的情况。这时也需要根据中断源的优先级来决定下一动作。
ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(Data Abort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(Prefetch Abort)、软中断异常(SWI)和未定义指令异常(Undefined interrupt)。
注意:
在ARM处理器中,异常(Exception)和中断(Interrupt)有些差别,异常主要是从处理器被动接受异常的角度出发,而中断带有向处理器主动申请的色彩。在本书中,对“异常”和“中断”不做严格区分,两者都是指请求处理器打断正常的程序执行流程,进入特定程序循环的一种机制。
相关文章推荐
- ARM异常---一个Uart中断的触发处理过程:
- ARM中断异常处理的返回
- ARM基础学习-SWI异常中断处理
- 函数指针数组在ARM异常中断处理中的应用
- 【ARM】arm异常中断处理知识点
- Arm架构异常处理流程之中断
- ARM 异常中断处理
- ARM中断异常处理的返回
- ARM中断异常处理的返回的问题
- ARM中断异常处理的返回
- ARM:ARM中断异常的处理流程
- ARM中断异常处理的返回
- 异常和中断处理 ARM系统开发者指南 Chapter9-1
- ARM中断异常处理的返回
- arm异常中断处理中pc指向何处
- ARM基础学习-异常中断处理
- ARM异常中断处理
- ARM的SWI异常中断处理程序设计
- 【ARM】arm异常中断处理知识点
- Arm异常中断返回时的处理