各位工程师好:
我在调试c6678与fpga的srio通信情况如下:
1.KeyStone_SRIO_match_ACK_ID()中的两个Maintenance都可以通过
2.在使用Maintenance读对面的Base Device ID CSR也可以通过,并且SP0_ACKID_STAT寄存器正常累加。
3.按照论坛中的知道srio模块自带的错误检测寄存器没有检测出错误。
问题1:directIO不成功,SP0_ACKID_STAT中的Inbound_ackID位置不能累加。
问题2:程序不是每次都能初始化成功,经常需要reset几次才可以。常出现的错误有Maintenance write超时等。
xu kuang:
刚才看的不仔细还有有如下错误提示
C66xx_0: GEL Output: Problem(PORT_WIDTH): Port0 widht **DOES NOT MATCH** with PLM path configurations
我的配置是0x0291b0b0:PLM_SP0_PATH_CTL是0x00000404,就是4lanes,mode4,只初始化了port0,我看了datasheet没看出哪里错了。
有一个别人的工程也会报同样的错误,不过他调通了。
Allen35065:
回复 xu kuang:
Serdes先降频试试看?看起来像是信号质量不好。
降到低频测试看是不是相同的现象,先只测一条Lane,能用示波器看一下信号质量是最好。
另外,DSP loopback有没有测过?
xu kuang:
回复 Allen35065:
您好!谢谢您的解答,现在和fpga的通信已经基本调通了但是还有如下问题:
SRIO初始化函数并不是每次都能执行成功。主要是在KeyStone_SRIO_match_ACK_ID()中的KeyStone_SRIO_Maintenance()返回值非零。偶尔PORT初始化检测不能通过,请问这是因为SRIO使用后清理不彻底所致吗,还是其他的原因?谢谢!
xu kuang:
回复 xu kuang:
刚才详细测试了一下,每次都reload很规律的初始化函数成功一次,KeyStone_SRIO_Maintenance()报错一次,port基本没有问题了。而且必须是reload,复位后restart不可以。