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:
看来还是理解不到位呀。问题已经解决,非常感谢!