异常与中断处理

来源:互联网 发布:网络专供电器 编辑:程序博客网 时间:2024/05/18 03:47

第6章 异常与中断处理

1、异常与中断的概念。

异常包含了中断

 

2、ARM V7体系架构支持的7种异常类型:

复位、未定义指令、软件中断、预取指中止、数据中止、外部中断、快中断。

 

3、SWI软中断异常、与硬中断的异同、SWI指令格式。

软中断是软件实现的中断,也就是程序运行时其他程序对它的中断。

软中断与硬中断的区别有:

l  软中断发生时间由程序控制,而硬中断发生时间随机;

l  软中断是由程序调用发生的,而硬中断是由外设引发的。

 

SWI指令

SWI指令用于产生软中断,从用户模式变换到管理模式,CPSR保存到管理模式的SPSR中。

    指令格式:SWI{cond}     immed_24      ;immed_24为软中断号(服务类型)

 

4、IRQ中断与FIQ中断的异同点

工作模式不同

使用寄存器不同:

ARMFIQ模式提供了更多的banked备份寄存器,r8r14,SPSR;而IRQ模式提供的banked寄存器为R13,R14,SPSR.

(这就意味着在ARMIRQ模式下,中断处理程序自己要保存R8R12这几个寄存器,然后退出中断处理时程序要恢复这几个寄存器,而FIQ模式由于这几个寄存器都有banked寄存器,模式切换时CPU自动保存这些值到banked寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比IRQ快.)

优先级不同:

FIQIRQ有更高优先级,FIQ优先级为3IRQ优先级为4。如果FIQIRQ同时产生,那么FIQ先处理;如果。

中断处理流程相同:

l  初始化微处理器中断有关的寄存器,开放中断。

l  I/O端口或部件完成数据操作后产生中断请求信号。

l  当中断请求信号有效时,微处理器可能处在不可中断状态。等微处理器允许中断时保存当前状态,停止它现行的操作并开始进行中断源的识别。

l  在识别出优先级最高的中断源后,微处理器转到对应的中断服务例程入口,并应答中断,I/O端口或部件收到应答信号后,撤消其中断请求。

l  微处理器读入或写出数据,当中断服务例程结束后,返回到原来的被中断程序处继续执行。

 

5、中断源与优先级仲裁

  1)93个中断源,分别由四个中断向量控制器管理;

   2)默认情况下的中断优先级。

  所谓优先级,指的以下两层含义:

l  若有2个及2个以上的中断源同时提出中断请求,微处理器先响应哪个中断源,后响应哪个中断源。

l  若1个中断源提出中断请求,并得到响应后,又有1个中断源提出中断请求,后来的中断源能否中断前一个中断源的中断服务程序。

 

6、中断相关寄存器

  中断向量地址寄存器(VICnADDRESS):填写中断向量表、

         中断源未决寄存器(VICnRAWINTR)、中断使能寄存器(VICnINTENABLE)、中断选择寄存器(VICnINTSELECT)、

屏蔽寄存器(INTMSK)、中断未决寄存器(INTPND)等。



7、中断未决寄存器的清除方法:对应位写1。

 

8、中断跳转流程:


中断编程步骤

l  建立系统中断向量表,设置微处理器内核的程序状态寄存器CPSR中的F位和I位。一般情况下中断均需使用数据栈,因此还需建立用户数据栈。这一部分内容对应的程序指令,通常编写在系统引导程序中。

l  设置各中断源的中断向量。通常需要利用向量地址寄存器来计算,若中断号还对应有子中断,需求出子中断地址偏移。

l  中断控制初始化。主要是初始化微处理器内部的中断控制的寄存器。针对某个具体的中断源,设置其中断控制模式、中断是否屏蔽、中断优先级等。

l  完成I/O端口或部件具体操作功能的中断服务程序。中断服务程序中,在返回之前必须清除现场,返回中断前的状态。

 

0 0
原创粉丝点击