[资料分享] C6000 DSP系统中断过程解析

Jacktang   2018-8-13 22:01 楼主
1.  中断相关概念
中断过程-----------------------------------你在下象棋,突然电话响了,你回屋接电话,然
后回来继续下象棋,这个过程就叫做中断响应过程。
CPU执行正常任务---------------------下象棋
保护现场----------------------------------你已经想好要“将军”,先在脑海中记下来。
中断发生----------------------------------电话响-
中断服务程序----------------------------接电话
恢复现场----------------------------------回来后恢复刚才想法
中断返回----------------------------------你回来继续下象棋
中断屏蔽----------------------------------Boss 正在训话,要求所有电话关机,你不能接电话
了。
非屏蔽中断—----------------------------你内急,即使是 Boss 在训话,你还是得到外面去
嘘嘘。
      可屏蔽中断-------------------------------你在“闭关修炼”,可以不受外界干扰。

2.  中断源
C6000 支持软件中断和硬件中断。软件中断由指令产生中断请求,硬件中断可以来自
外设的一个请求信号,如外部中断。C620x/C670x 中断向量表




中断号  中断名称    中断功能

00000b    DSPINT      Host port host to DSP interrupt

00001b    TINT0        Timer 0 interrupt

00010b    TINT1        Timer 1 interrupt

00011b    SD_INT      EMIF SDRAM timer interrupt

00100b    EXT_INT4     External interrupt 4

00101b    EXT_INT5     External interrupt 5

00110b    EXT_INT6     External interrupt 6

00111b    EXT_INT7     External interrupt 7

01000b    EDMA_INT    EDMA channel (0 through 15) interrupt

01001b    Reserved Not used

01010b    Reserved Not used

01011b    Reserved Not used

01100b    XINT0        McBSP 0 transmit interrupt

01101b    RINT0        McBSP 0 receive interrupt

01110b    XINT1        McBSP 1 transmit interrupt

01111b    RINT1        McBSP 1 receive interrupt

Other   Reserved

不同型号的 DSP 定义中断号所对应的中断功能不同,为了达到统一使用中断号功能,
DSP 可以使用中断复用寄存器进行重新映射。通过中断复用寄存器映射可以把中断源映射
到任何 CPU中断。

中断复用寄存器默认中断号映射表


CPU
Related
INTSEL
Interrupt

Interrupt
INTSEL field
Reset Value
Acronym
Interrupt Deion
INT4
INTSEL4
00100b
EXT_INT4
External interrupt pin 4
INT5
INTSEL5
00101b
EXT_INT5
External interrupt pin 5
INT6
INTSEL6
00110b
EXT_INT6
External interrupt pin 6
INT7
INTSEL7
00111b
EXT_INT7
External interrupt pin 7
INT8
INTSEL8
01000b
DMA_INT0/
DMA Channel 0 Interrupt/



EDMA_INT
EDMA interrupt
INT9
INTSEL9
01001b
DMA_INT1
DMA Channel 1 interrupt??
INT10
INTSEL10
00011b
SD_INT
EMIF SDRAM timer interrupt




(C62x/C67x)



SD_INTA
EMIFA SDRAM timer interrupt




(C64x)
INT11
INTSEL11
01010b
DMA_INT2
DMA Channel 2 interrupt??
INT12
INTSEL12
01011b
DMA_INT3
DMA Channel 3 interrupt??
INT13
INTSEL13
00000b
DSPINT
Host port to DSP interrupt
INT14
INTSEL14
00001b
TINT0
Timer 0 interrupt
INT15
INTSEL15
00010b
TINT1
Timer 1 interrupt

3.  常用中断寄存器
通过对中断寄存器进行配置,可以实现各种中断功能。
IER(中断使能寄存器)
IFR(中断标志寄存器)
ISR(中断设置寄存器)
ICR(中断清除寄存器)
ISTP(中断向量表起始地址寄存器)中断向量程序的地址可以通过 ISTP寄存器进行重新映

MUXH(中断复用寄存器)
MUXL(中断复用寄存器)
通过 DSP data sheet 可以很容易找到寄存器的绝对地址,但为了减少配置错误和方便移
植,在编程时一般采用 CSL 函数对中断寄存进行配置。

4.  CSL(DSP API 函数)函数使用说明
在开发 DSP 的过程中一定要用好 CSL 函数,它给 DSP 的编程带来很多方便。使用 CSL
函数可以使程序更容易理解和维护,同时可以有效避免在编程中的笔误。

IRQ_clear(IRQ_EVT_TINT0);//对 IFR寄存器进行操作,定时中断标志位清零
IRQ_enable(IRQ_EVT_TINT0;//对 IER寄存器进行操作,使能定时中断
IRQ_map(IRQ_EVT_TINT0,12);//对 MUX 寄存器进行配置,根据需要把中断号进行重新映
射。
IRQ_globalEnable();//对CSR 中 GIE 标志位进行配置,标志位置 1;
。。。。。。。。。。。。。

相应的 CSL函数可以在 CCS自带的PDF 文档《TMS320C6000Chip Support Library API
Reference Guide》中进行查找

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复