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异常处理示例代码