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

IPC中的Notify与MCSDK中的NDK例程Hello world融合出现Notify_sendEvent不能触发

各位好,目前在下碰到了这样一个问题:

将NDK的Hello world例程与Notify融合出现了问题:

问题描述:核0作为UDP收发程序的核,当收到UDP数据后,进入core0enter(pBuf);

void core0enter(char *data)
{
Int status;
Int length = 0;
Int i = 1;
length = strlen(data);
memcpy(trans_data.data,data,sizeof(char)*length);
trans_data.data_len = length;
Cache_wbAll();
while(i < NUMLOOPS)
{
status = Notify_sendEvent(1, INTERRUPT_LINE, EVENTID, i,TRUE);
if (status < 0) {
continue;
}
i++;
}
Semaphore_pend(semHandle,BIOS_WAIT_FOREVER);
}

然后核0通过Notify_sendEvent向核1发送EVENTID号事件,来触发核1进入cbFxn函数中,但是不知道为什么单步运行过这个函数,并不能触发核1,而这个函数的返回值为0,表示操作成功了的。但是就是不能触发,请各位前辈指点迷津,不甚感激。

EVENTID 是11;

注册函数

else if(MultiProc_self() == 1)
{
status = Notify_registerEvent(0,INTERRUPT_LINE,EVENTID,(Notify_FnNotifyCbck)cbFxn,NULL);

}

注:CCS版本:5.5,MCSDK版本:2.1.26,bios版本:6.35.4.50;单独运行Notify例程是能触发的。

Andy Yin1:

Notify_sendEvent与Notify_registerEvent中的第一个参数procID不一致,将Notify_sendEvent发送事件时第一个参数填充0试试;另外在使用notify前初始时需要调用Ipc_start。如果单独运行notify ok,在融合例程中将NDK相关的API调用去掉看看notify功能是否ok。

Gangping Li:

回复 Andy Yin1:

我的理解:

Notify_registerEvent这个函数的第一个参数是表示注册一个事件,告诉内核将会由procId核来触发该核,Notify_sendEvent的第一个参数是表示将向procId核发生事件;我觉得这两个参数应该是要不一样的。

我程序中是已经调用了IPC_start函数,绑定是成功了的;在融合程序中,我按照融合中配置IPC的方式同样去配置单独的IPC,仍然是不能触发。之后我在之前跑通得了IPC程序中融合NDK程序是可以触发的。只是我想找到我之前融合程序是哪里出了问题。

赞(0)
未经允许不得转载:TI中文支持网 » IPC中的Notify与MCSDK中的NDK例程Hello world融合出现Notify_sendEvent不能触发
分享到: 更多 (0)