Quantcast
Channel: C6000™多核 - 最近的话题
Viewing all articles
Browse latest Browse all 5545

C6657 SRIO的context bit和completion code不相等的问题

$
0
0

Uint32 KeyStone_SRIO_wait_LSU_completion(Uint32 lsuNum,
Uint32 transactionID, Uint32 contextBit)
{
Uint32 uiStateIndex= LSU_state_index_table[lsuNum][transactionID]; 
Uint32 uiCompletionCode;

do
{
uiCompletionCode=(gpSRIO_regs->LSU_STAT_REG[uiStateIndex/8]>>
((uiStateIndex&7)*4))&0xF;
}
while((uiCompletionCode&1) != contextBit);

return (uiCompletionCode>>1);
}

       我用DIRECTIO NWRITE的方式向FPGA发数,发完不带DOORBELL,即LSU_Reg3的Drbll_val为0,发送间隔是100ms,然后连续发10个20字节的包,几小时后会死在KeyStone_SRIO_wait_LSU_completion中,uiCompletionCode = 1,contextBit = 0,或者uiCompletionCode = 0,contextBit = 1,我找不到原因,想绕过它,做异常处理,然后继续发包。数据手册上说,可以操作LSU_Reg6的Flush或Restart位,我在KeyStone_SRIO_wait_LSU_completion做了超时等待后,对LSU_Reg6的Flush(或者Restart)置1再置0的处理,观察LSU的6个寄存器和LSU_STAR_Reg0没有任何变化,好纠结,不知道怎么办了,希望大家给点建议或者思路,谢谢!


Viewing all articles
Browse latest Browse all 5545