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

C6678核间通信问题

TI专家你们好,有一个问题,困扰很久了。就下面的一个简单核间通信模式:

core0完成如下功能:

tsk(){

while(1){

//****处理任务****//   //任务耗时100ms

notify_send(core2);//最后一个参数是FALSE;

sem_pend(core2);  //由与core2通信的notify回调函数post;

}

}

core2完成如下功能:

tsk(){

while(1){

sem_pend(core0);  //由与core0通信的notify回调函数post;

notify_send(core0);//最后一个参数是FALSE;

//****处理任务****//  //任务耗时20ms

}

}

按理来说,是一个很简单的通信模式,两个core都不做其他任务,事件注册的肯定都没问题,检查很多遍了。但现在就是core2执行过程,耗时总是一次20多ms、下一次100多ms这样子徘徊.(测的都整个循环的时间)

这就是我想解决的问题,core2执行时间不应该一直是100ms左右吗?

为什么会出现现在这种情况?有哪些可能因素会导致这样的问题嘛???

急求解答!

非常感谢!

Adam Yao94020:

应该还是信号量的逻辑存在问题,需要注意一点两个核并不是在同步的运行的,所以两个核开始各自任务的时间是不一样的。

你可以通过在任务的开始,特别是pend到自己的信号量前后加一些时间打印,通过时间打印来分析问题出在哪里。

赞(0)
未经允许不得转载:TI中文支持网 » C6678核间通信问题
分享到: 更多 (0)