工具/软件:Code Composer Studio
您好、TI 工程师
在我们的应用中、有两个 C6678由 SRIO 相互链接(我们称之为 DSP 0和 DSP 1)。 链路为4倍和5.0G 波特率 参考时钟来自相同的时钟源、为156.25MHz。 当我们运行系统时、有时一个 DSP 会遇到如下错误:
DSP-0向 DSP-1发送数据、DSP-1无法接收数据。 数据长度为64KB、从 DSP-0上的 L2发送到 DSP-1上的 MSMC;
当错误发生时,DSP-0会获得完成代码(来自 LSU_STAT_REG),等于1.whick 表示"未过帐事务发生事务超时"
发生错误时、我们会检查 ERR_STAT 寄存器(0x0290b158)、在 DSP 0中为"0x00010002"、在 DSP 1中为"0x00020002"。 在正确的情况下、它应该都是"0x00020002"。 因此我们了解到,对于 dsp0,“输出处于“输出错误停止”状态”
发生错误时、我们会检查 ERR_DET 寄存器(0x0290c008)和 SP0_ERR_DET 寄存器(0x0290c040)。如下所示:
ERR_DET SP0_ERR_DET
DSP 0和 DSP 1 (正确情况): 0x0 0x00000010
DSP 0和 DSP 1 (错误情况): 0x01000000 0x00100010
因此我们了解到、在错误的情况下、DSP-00和 DSP-1都满足"接收到的数据包未接受控制符号"和"数据包响应超时"。
从上面我们可以得出结论:在错误的情况下、SRIO 链路中会发生一些事情、而在输出错误停止状态下使 DSP-0发生、并且无法在足够的时间内获得数据包响应。但我们仍然不知道发生这种情况的原因。 您认为它来自硬件设计还是软件设计?随附了用于初始化 SRIO 的代码。您可以检查它。
非常感谢。期待您的回复。