IWR6843在ppcounting中,DSS与MSS通过Mailbox通信报错MAILBOX_ECHINUSE

Other Parts Discussed in Thread: IWR6843

DSK3.3.0.3,工程为IWR6843人员跟踪与计数,在运行过程中,可能会出现DSS向MSS发送数据报错,MAILBOX_ECHINUSE,查看定义显示改错为另外一个实例在使用邮箱通道,但是整个工程里面DSS向MSS只有发送点云数据,以及MSS向DSS收到点云后回复的消息。

怀疑是DSS或者MSS的Mailbox_readFlush函数执行失败,但是在MSS和DSS的读取函数后加了下面的判断,发现Mailbox_readFlush函数并没有出现问题,不知道为什么DSS向MSS发送点云数据的时候会报错MAILBOX_ECHINUSE。

flushReturntVal = Mailbox_readFlush (gMmwDssMCB.peerMailbox);

if(flushReturntVal != 0){
System_printf ("Error: Mailbox readFlush failed [Error code %d]\n", flushReturntVal);
DebugP_assert(0);
}

在Mailbox_write函数中报错MAILBOX_ECHINUSE,出现的判断如下:

if(gMailboxMCB.mssDssWriteChIDInUse == MAILBOX_UNUSED_CHANNEL_ID)
{
/* Mark that the TX mailbox is now in use*/
gMailboxMCB.mssDssWriteChIDInUse = driver->cfg.chId;
/* Release the critical section: */
HwiP_restore(key);
}
else
{
/* Error: TX mailbox is being used by another mailbox instance*/
DebugP_log2 ("MAILBOX: Mailbox_write Error! handle=(%p). Write attempt with TX box in use by channel ID %d\n",driver, gMailboxMCB.mssDssWriteChIDInUse);
retVal = MAILBOX_ECHINUSE;
/* Release the critical section: */
HwiP_restore(key);
goto exit;
}

难道是因为gMailboxMCB.mssDssWriteChIDInUse这个内存不小心被修改了吗?谢谢!