中断和异常

1 检测事件发生的方式:轮询方式和中断方式

 

2 S3C2440异常中断系统框图

      

中断是异常的一种。

 

ARM处理器不同模式间的切换:

a、在特权级(非用户模式)的运行模式下,可以通过修改程序状态寄存器CPSR的模式控制位,切换运行模式。

b、通过异常处理过程进行运行模式切换。

注意,用户模式下,不能直接进行处理器模式的切换,需要通过产生异常处理,在异常处理过程中,进行处理器运行模式的切换。

 

3 ARM寄存器

 

 

未备份寄存器:模式间共用。

备份寄存器:某模式下专有。

 

对程序计数器PC的值的理解:

PC指向对于读取级的指令地址,而不是处于执行级的指令地址,根据流水线深度的的不同,相对于当前指令地址,PC的偏移量也不相同。下面以ARM架构,3级流水线为例说明:

 

ARM指令占据的空间为4个字节,因此在执行MOV指令时,

PC值 = 当前执行级指令地址 + 8

 

4 异常向量表

 

CPU每执行完一条指令,都会检测有无异常中断产生,当程序运行出现异常的的时候,程序会跳转到相应的异常向量地址,执行异常处理操作,异常向量地址跟芯片的设计有关,这个跳转的过程是CPU强制执行的;但是异常处理是由用户通过代码实现的,可以在向量表定义的地址上,放置一个跳转指令,实现用户自定义的异常处理功能。

 

5 异常中断响应过程

 

 

6 异常中断处理流程 

 

 

 

7 S3C2440中断控制器的相关寄存器描述

 

 

 

8 printfException

 

9 und异常处理示例代码

 

10 swi异常处理示例代码

 

11 irq异常处理示例代码

 

 

posted @ 2019-06-03 15:02  Lilto  阅读(691)  评论(0编辑  收藏  举报