TMS320C54x处理中断分为3个阶段:
1.第一阶段——接受中断请求
一个中断请求由一个硬件设备或一条软件指令产生。当中断请求产生时,中断标志寄存器IFR中相应的中断标志位置1。不管这个标志以后是不是会被处理器响应,该标志位都为1。当中断响应后,该标志位会被自动清除。
(1)硬件中断请求
外部硬件中断由外部中断口的信号发出请求。内部硬件中断由片内外设的信号发出中断请求。以TMS320VC5402为例,来自外部的硬件中断有、、~;来自内部的硬件中断有BRINT0、BXINT0、BRINT1、BXINT1、TINT、HPINT、DMA通道中断。
(2)软件中断请求
软件中断都是由程序中的指令INTR、TRAP、RESET产生的。
软件指令INTR K可以用来执行任何一个中断服务程序。此指令中的操作数K表示CPU转移到的中断向量地址。表3-25以TMS320VC5402为例给出了操作数K与中断向量地址之间的对应关系。INTR软件中断是不可屏蔽中断,不受状态寄存器ST1的中断屏蔽位INTM的影响。当CPU响应INTR中断时,INTM位置1,关闭其他可屏蔽中断。
软件指令TRAP K,其功能和INTR指令相同,也是不可屏蔽的中断,两者的区别在于执行TRAP软件中断时,不影响INTM位。
软件复位指令RESET执行的是一种不可屏蔽的软件复位操作,它可以在任何时候将TMS320C54x转到一种已知的状态(复位状态)。这条复位指令影响状态寄存器ST0和ST1,但不影响处理器工作方式状态寄存器PMST。因此,RESET复位指令与硬件复位对PMST寄存器的IPTR位以及外围电路初始化的影响是有区别的。当响应RESET复位指令时,INTM位置1,关闭可屏蔽中断。
2.第二阶段——响应中断
硬件或软件中断发送了一个中断请求后,CPU必须要决定是否响应该中断。软件中断和不可屏蔽中断立即被响应,而可屏蔽的硬件中断只有在满足以下3种条件时才能被响应:
1)优先级最高。当同时有多个硬件请求中断时,TMS320C54x根据优先级对其进行响应。
2)状态寄存器ST1中的INTM位为0。表示允许可屏蔽中断,可以用“RSBXINTM”指令来对INTM复位。
3)中断屏蔽寄存器IMR中的相应位为1。CPU响应中断时,让PC转到适当的地址取出中断向量,并发出中断向量信号,清除响应的中断标志位。(www.xing528.com)
3.第三阶段——执行中断服务程序(ISR)
图3-31 中断操作的流程图
响应中断后,CPU做如下工作:
1)将程序计数器PC的值(即返回地址)存入数据存储器堆栈的栈顶。
2)将中断向量的地址装入PC。
3)取出位于中断向量地址处的指令。如果是延迟分支转移指令,其后有一条双字指令或两条单字指令,那么CPU也取出这些指令字。
4)执行跳转指令,跳转到中断服务程序(ISR)的地址。如果跳转被延迟,则在跳转之前先执行附加的指令。
5)执行中断服务程序直到遇到中断服务程序中的返回指令。
6)从堆栈中弹出返回地址并装入PC。
7)继续执行主程序被中断了的程序。
整个中断操作的流程图如图3-31所示。
执行中断服务程序时,某些寄存器也要被压入堆栈(保护现场)。当中断服务程序执行完毕准备返回时,需要恢复这些寄存器的内容(恢复现场)。由于CPU寄存器和外设寄存器都是存储器映射寄存器,所以可用PSHM或POPM指令将这些寄存器压入或弹出堆栈,也可以用PSHD和POPD指令将数据存储器的值压入或弹出堆栈。在保护现场时应注意:第一,压入堆栈的顺序,恢复时的顺序与压入堆栈时的顺序正好相反;第二,BRC寄存器应该比STl中BRAF位先恢复,否则,如果在恢复BRC之前中断服务程序中的BRC=0,那么先恢复的BRAF位将被清0。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。