This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

IPC无法响应



工程参见附件。

硬件平台:6678LE评估板

软件平台:CCS5

运行结果,每次运行结果不一致,每次只有部分核响应中断,我觉得是我程序有问题,请有经验的朋友帮我看下吧,谢谢了。

ZW_IPC.7z
  • 你是使用哪种方式实现的核间通信,如果使用写IPCGR的方式,请参考如下链接的中的例子核PPT说明.

    www.deyisupport.com/.../4899.aspx

  • Andy Yin,感谢你的回复。

    我查看了链接中的例程,例程中是core发中断给下一个core,实现接力传递。我参考安装目录下的IPC例程已经实现了这个功能。

    但是我想实现core0发中断给core1-7,调试了几天都有问题:每次执行只有部分核有响应。

    不知道是哪里发生了错误呢,相关的手册都翻了好几天了,但是还不知道为什么会有中断不响应。

  • 1. 调试检查到底哪个核没有响应;

    2. 简化测试,依次测试一个核给2/3/4/5/6核产生中断。

  • Andy Yin,你好。

    1、没有固定的结果,这次运行可能是1、6响应,下次的话可能是4、5响应,不知道我是否说明白了。

    2、刚才我单独测试core0给其它单个核发中断,没有响应。

    你的思路很棒,发现了问题!

    能否给个提示啥的,该如何去调试呢?

    我查看寄存器IPCGR确实写成功了,但是为什么中断没有响应呢?不知道从哪里着手了。

  • Andy Yin,你好。

    仔细对比,发现我的程序中所有核都是如下配置的,hTest,intcObj都是全局变量,每个核都共享这个变量,怀疑是这里有问题,我马上修改程序做进一步测试,有消息我会及时更新。

    另外,CSL的手册中,我没有找到intc部分的相关函数,只有csl目录下src文件夹里有intc的源码。

    CSL本来就是这样的结构还是我的CSL手册不全呢?

    哪里能够找到比较全面的手册,谢谢了。

    vectId = CSL_INTC_VECTID_4;

    hTest = CSL_intcOpen(&intcObj, 91, &vectId, NULL);

    //Register an call-back handler which is invoked when the event occurs.

    EventRecord.handler = &test_ipc_handler;

    EventRecord.arg = 0;

    CSL_intcPlugEventHandler(hTest, &EventRecord);

    //Enabling the events.

    //CSL_intcHwControl(hTest, CSL_INTC_CMD_EVTCLEAR, NULL);

    CSL_intcHwControl(hTest, CSL_INTC_CMD_EVTENABLE, NULL);

  • Andy Yin,你好,感谢你的回复,问题已经解决。

    我将上面提到的全局变量改为局部变量后,全部核都可以相应中断。

    关于全局变量、局部变量在多核中的如何存放等这些比较基础的问题?请问可以通过什么资料学习一下,我是DSP刚刚入门,理论知识不够充足。请问是否有什么书籍或手册适合我。