C66x DSP运行中断的简要流程:
1、使能了全局中断和子中断。假设硬件检測到中断发生,那么CPU就要跳转。
2、软件把CPU内部的A,B类寄存器的值等推入堆栈保存,把当前PC寄存器的值放入IRP寄存器中以备中断返回能找到当前被打断的位置。
3、CPU的PC指针读出中断向量表的地址,也就是把“ISTP寄存器的ISTB值+子中断向量偏移量”装入PC寄存器,这样就运行跳转。
4、在中断向量表里一般有就用跳转指令,这样就能够跳转到我们用C语言编写的中断服务子程序中。因为我们在一般的中断服务子程序函数前面增加了interruptkeyword。
那么编译器就会在函数返回的语句改成B IRP(B是跳转指令)。这样就把IRP/NRP的值送给PC寄存器。
(中断服务)
5、CPU在运行跳转之前会把堆栈中曾经保存的那些值出栈到自己的对应的寄存器中。
Table 6-2 lists the interrupt control registers on the CPU: