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.

6455,1位模式的SRIO互联,DOORBELL有限次



问题描述,两片6455通过1位模式的SRIO互联,directIO包和DOORBELL包。附件中附了A核和B核初始化配置以及发送接收函数文件。
A核:
srio_init();
每隔100ms执行一下程序
{
srio_write(pImage_fore, targetIndex, 0x800);
DoorBell_interrupt(0, 0, 3);
}


B核
void DOORBELL_INTERHandler(void)
{


if(hSrio->regs->DOORBELL_INTR[0].DOORBELL_ICSR==1)
{
SemPost( hDTaskSF );
}
else
{
SemPost( hDTaskMatch );
}

hSrio->regs->DOORBELL_INTR[0].DOORBELL_ICCR =0xffffffff;
hSrio->regs->INTDST_DECODE[0] = 0;
hSrio->regs->INTDST_RATE_CNTL[0] =1;

CSL_intcEventClear(20);


}
现象是每隔100ms,A向B发送数据和DOORBELL包,B核也能正常相应,持续运行40分钟,出现错误,此时A核发松数据正常,但发送DOORBELL的时候LUS6的返回值为0xc,即"Retry" DOORBELL response received, or Atomic test-and-swap was not allowed (semaphore in use)。此时继续执行数据发送依然正常即srio_write的LSU6返回0。但发送DOORBELL依然失败。B核也始终不能产生中断,IER跟全局中断时能都没问题。
我查询手册,认为可能是B核的未及时相应中断清空相应的DOORBELL0_ICSR寄存器中的值,于是通过DOORBELL_ICC手动清除,但是继续A核,状态仍旧。
请问这可能会是什么问题??

A核和B核的初始化.rar