TI中文支持网
TI专业的中文技术问题搜集分享网站

有关C6678的中断配置的疑惑

目前有两个疑惑的地方:

1   以下是我的TIMER0中断配置

ICR = IFR;
ECR = EFR;
IER= 3; //配置前先禁止所有中断

CorePacRegs->EVTMASK[0].all = 0xFFFFFFFF;//屏蔽所有中断
CorePacRegs->EVTMASK[1].all = 0xFFFFFFFF;
CorePacRegs->EVTMASK[2].all = 0xFFFFFFFF;
CorePacRegs->EVTMASK[3].all = 0xFFFFFFFF;

CorePacRegs->EVTCLR[0].all = 0xFFFFFFFF;//清除所有中断标志
CorePacRegs->EVTCLR[1].all = 0xFFFFFFFF;
CorePacRegs->EVTCLR[2].all = 0xFFFFFFFF;
CorePacRegs->EVTCLR[3].all = 0xFFFFFFFF;

ISTP= 0x800000;//将中断向量表放入指针寄存器

/*CorePacRegs->AEGMUX0.bit.AEGSEL0 = 0xC4;
CorePacRegs->AEGMUX0.bit.AEGSEL1 = 0xC4;
CorePacRegs->AEGMUX0.bit.AEGSEL2 = 0xC4;
CorePacRegs->AEGMUX0.bit.AEGSEL3 = 0xC4;

CorePacRegs->AEGMUX1.bit.AEGSEL4 = 0xC4;
CorePacRegs->AEGMUX1.bit.AEGSEL5 = 0xC4;
CorePacRegs->AEGMUX1.bit.AEGSEL6 = 0xC4;
CorePacRegs->AEGMUX1.bit.AEGSEL7 = 0xC4;
*/
CorePacRegs->INTMUX1.all = 0;
CorePacRegs->INTMUX2.all = 0;
CorePacRegs->INTMUX3.all = 0;
CorePacRegs->INTMUX3.bit.INTSEL15 = 64;//中断向量对应编号为64的系统中断,此处是CPU0—->TIMER0

/*CIC0Regs.Enable_Set_Index.bit.INDEX = 0x3FF;
CIC0Regs.Hint_Enable_Set_Index.bit.INDEX = 0x3FF;
CIC0Regs.CH_MAP[2].bit.CH0_MAP = 64;
for(i=0;i<8;i++)
{
CIC0Regs.HINT_ENABLE[i].bit.ENABLE = 0xFFFFFFFF;
}
CIC0Regs.GlobalEnable.bit.ENABLE = 1;*/

然后开启中断

ICR = 0x8000;
IER |= 0x8000;//0x8000对应向量15
TSR = TSR|1; //使能所有中断

以上配置好,再配置TIMER0相关寄存器,已能正常进入中断服务函数,配置方面我是靠感觉来的,但中断配置仍然有地方搞不懂,主要是下面的代码部分:

/*CorePacRegs->AEGMUX0.bit.AEGSEL0 = 0xC4;
CorePacRegs->AEGMUX0.bit.AEGSEL1 = 0xC4;
CorePacRegs->AEGMUX0.bit.AEGSEL2 = 0xC4;
CorePacRegs->AEGMUX0.bit.AEGSEL3 = 0xC4;

CorePacRegs->AEGMUX1.bit.AEGSEL4 = 0xC4;
CorePacRegs->AEGMUX1.bit.AEGSEL5 = 0xC4;
CorePacRegs->AEGMUX1.bit.AEGSEL6 = 0xC4;
CorePacRegs->AEGMUX1.bit.AEGSEL7 = 0xC4;
*/

/*CIC0Regs.Enable_Set_Index.bit.INDEX = 0x3FF;
CIC0Regs.Hint_Enable_Set_Index.bit.INDEX = 0x3FF;
CIC0Regs.CH_MAP[2].bit.CH0_MAP = 64;
for(i=0;i<8;i++)
{
CIC0Regs.HINT_ENABLE[i].bit.ENABLE = 0xFFFFFFFF;
}
CIC0Regs.GlobalEnable.bit.ENABLE = 1;*/    这几段代码我给屏蔽了的,按理说要配置什么通道映射啊,开启主中断使能啊,开启相应的索引啊啥的,再配合其它配置代码才能正常运行中断函数吧,咋我这里这些都没有配置,一样能跑呢,或者是不是我屏蔽掉的这部分,不属于必要的配置代码?

2   另一个疑问,就是6678的芯片存储器映射里没提到专门的中断向量表在存储器中的具体位置,而中断配置寄存器里面有个叫  ISTP  的中断向量表指针寄存器,用来指向在CMD文件中分配的中断向量表所在的存储器区域,那这么看来的话,是不是在6678中,实际没有固定中断向量表在存储器的具体地址,而是可以在合理的情况下任意的分配到系统存储器中的某个位置,然后由  ISTP  来指向这个地址空间,即可完成中断向量表的地址分配?

Nancy Wang:

1、128个系统事件是可以直接映射到INTC的,但是由于芯片有数百个中断源,所以需要二级映射(CIC) A KeyStone device can have hundreds of events. Therefore, some of these events need to be aggregated at the chip level through the interrupt controller (the chip-level interrupt controller (CIC)— not the interrupt controller inside a C66x CorePac) before they are routed to the EDMA3CC and C66x CorePacs. Chip Interrupt Controller (CIC): www.ti.com/…/sprugw4a.pdf C66x CorePac Interrupt Controller (INTC): www.ti.com/…/sprugw0c.pdf 2、是的

user18914063:

回复 Nancy Wang:

好的明白了,非常感谢,很难看到TI工程师这么晚还在工作

赞(0)
未经允许不得转载:TI中文支持网 » 有关C6678的中断配置的疑惑
分享到: 更多 (0)