ARM处理器响应中断的时候,总是从固定的中断异常向量取地址开始的,而在高级语言环境下开发中断服务程序时,无法控制从固定地址处开始至中断服务程序的跳转流程。为了使得上层应用程序与硬件中断跳转联系起来,需要编写一段中间的服务程序来进行连接,即中断解析程序。
对中断编程,有以下的4部分程序:
1)建立系统中断向量表,并且设置微处理器内核的程序状态寄存器CPSR中的F位和I位,一般情况下中断均需要使用数据栈,因此,还需要建立用户数据栈。这一部分内容对应的程序指令,通常编写在系统引导程序中。
2)设置各中断源的中断向量。通常需要利用向量地址寄存器来计算,若中断号还对应有子中断,需求出子中断的地址偏移。
3)中断控制初始化。主要是初始化微处理器内部的中断控制的寄存器。针对某个具体的中断源,设置其中断控制模式、中断是否屏蔽、中断优先级等。
4)完成I/O端口或部件具体操作功能的中断服务程序。中断服务程序中,在返回之前必须清除现场,返回中断前的状态。