我想问一下,如果core1和core2同时向core0发送IPC中断,core0该如何响应?
我在程序中的设计是这样的,为了实现IPC有效性测试,我将core0设为主控核,core0向core1和core2发送IPC中断,当core1和core2接收到core0的中断后进入中断服务函数,这两个核的中断服务函数为向core0产生IPC中断,其中core1发送ipc中断的标号为0x10,core2发送中断的标号为0x20。当core0接收到中断后对IPCAR0中的标号来进行检测,判断是否为这两个核产生的IPC中断。
但是在程序的运行后我发现,core确实进了两次IPC中断服务函数,但是接收到的中断标记却不对,一次是0x30,第二次是0。但是单步运行是正确的,所以我想问一下是不是和中断优先级有关系?
多谢~~
Andy Yin1:
您好,
使用IPC register核间中断,根据IPCAR寄存器中对应SRCC bit的值来确定中断源,如果有多个bit被置上,可以在一个中断服务函数中循环响应。
对于你这种应用,也可以使用QMSS进行核间通信,可以使用QpendQ或者Accumulator Queue,此时即使多个core同时向同一个queue中push descriptor也会产生多次中断,并且可以根据queue中的描述符来决定中断源。
yuxiang li:
回复 Andy Yin1:
那andy我还想问一下,还是举我上边说过的例子:
您的意思是说:当我的1核向0核发送IPC中断,SRCC为0x10,2核向0核发送IPC中断,SRCC为0x20。在0核会相应两次IPC中断,但是第一次查IPCAR0是0x30,第二次查的时候是0么。(我在每次执行完IPC中断服务函数后都会对IPCAR0清零)
yuxiang li:
回复 Andy Yin1:
谢谢啦~~
zi hu:
回复 yuxiang li:
li yuxiang
你好,我还想问一下,什么叫查询每一个bit,查询每一位可以解决多核同时向0核发中断的问题么?可以解决冲突?
zi hu:
回复 Andy Yin1:
Andy
能否问一下KICK0,KICK1,的作用
TI中文支持网