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

C6678 SIR: 同时开SRIO Doorbell中断和IPC中断

最近将两个核的工程连起来调试,遇到了一些问题,在此请教一下。
 
现在的状态是:core0 跑接口工程,开IPC中断,指向INT4。core1跑应用工程,使用SRIO与FPGA通信,开SRIO中断,使用专用中断INTDST_17,同时开IPC中断,分别指向INT4 INT5.
 
现象是,两核的Ipc通信正常,但是doorbell中断不正常。运行时,只能触发第一个doorbell中断,此后的doorbell无法触发,但是查看相应的ICSR寄存器,其中的doorbell信息均正确。关掉IPC中断后,doorbell中断恢复正常。
 
为什么会产生这样的现象?为什么后面的doorbell中断无法触发?
Zhan Xiang:

1.有没有可能是IPC中断处理时间太长,全局中断关的时间比较久,导致Doorbell中断丢失。

2.您用的IPC是IPC local还是用QMSS实现的IPC。

ge Wu:

回复 Zhan Xiang:

Zhan Xiang,

很感谢您的回复。

对于第一个回复:在等待Doorbell中断时,没有触发IPC中断,是否还存在这种可能?

对于第二个回复:怎样区分是Ipc local还是QMSS?好像在做的时候没有关注过这个问题,您能解释一下吗?

Zhan Xiang:

回复 ge Wu:

1. 你是说当core1中断配置完成后,不触发IPC中断,doorbell可以正常响应,一旦开始触发IPC中断doorbell就工作不正常了,还是说只要配置完成后,不管IPC有没有触发,doorbell都不能正常响应,只有把IPC中断配置去除后,doorbell才能正常响应。

2. IPC Local是每个core通过寄存器来触发其他core的中断,而QMSS是通过往队列里push 描述符来通知其他core,如果是QMSS并且使用cic映射了event,这时后中断的处理需要关中断和重新使能中断的要求。

ge Wu:

回复 Zhan Xiang:

情况是这样的,

1.只要配置完成后,不管IPC有没有触发,doorbell都不能正常响应,只有把IPC中断配置去除后,doorbell才能正常响应。

2.使用的是IPC Local.

Zhan Xiang:

回复 ge Wu:

看起来像是中断的mux 寄存器配置不对,能查一下吗。

ge Wu:

回复 Zhan Xiang:

我在中断初始化函数中写了如下语句,

CGEM_regs->INTMUX1=(CSL_GEM_INTDST_N_PLUS_16<<CSL_CGEM_INTMUX1_INTSEL4_SHIFT);

CGEM_regs->INTMUX1=(CSL_GEM_IPC_LOCAL<<CSL_CGEM_INTMUX1_INTSEL5_SHIFT);

IER=3 | (3<<4);

还有,需要说明的是,Doorbell第一次正常,后面不正常。

ge Wu:

回复 Zhan Xiang:

看来还是理解不到位呀。问题已经解决,非常感谢!

赞(0)
未经允许不得转载:TI中文支持网 » C6678 SIR: 同时开SRIO Doorbell中断和IPC中断
分享到: 更多 (0)