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.

6678 srio 维护

目前在调试多片6678与fpga通过cps1848交换芯片通信,使用的是论坛中keystone_srio例程调试过程中有几个问题。

1.dap向dpga发数时而成功时而失败,失败是查看error status寄存器的input_error被拉高,不知道是什么原因,是不是没有添加维护函数?

2.维护函数keystone_srio_match_ack_ID在哪种情况需要调用?

3.srio初始化后,添加维护函数用卡在while(uiresult | uilocal_in_ack_ID + 1 !=uiremode_out_ack_ID))中,其中uiResult用不为0,表示读写失败,可能是什么原因造成的?

本人刚接触这方面的东西,还不太熟悉,希望大虾们不吝赐教,谢谢!

  • Keystone_SRIO_match_ACK_ID主要目的是通过发送restart-from-error命令使本地的inbound ACKID和远端的outbound ACKID匹配,主要用于error recovery或者远端和本地reset和link request顺序不正确时,比如1)Chip1 rest 2) Chip2 rest 3) Chip1 link init 4) Chip2 link init,这种情况就不需要调用这个函数,如果是Chip1 rest, Chip1 link init《这个时候Chip2还在运行,而此时chip2发出的OUTBOUND ACKID和chip1的link request 所期待的inbound ACKID并不匹配》 Chip2 reset Chip2 link init就需要用这个函数进行ACKID的匹配。所以为增强系统的鲁棒性,建议加上

    看一下是不是SRIO ACKID不一致造成的。
    e2echina.ti.com/.../193539
  • 可以试试看写 RIO_PLM_SP(n)_LONG_CS_TX1 register = 0x2003F044 退出error states,具体步骤看一下手册p366.
    www.ti.com/.../sprugw1c.pdf
  • 你好Shine,很感谢您的回复,

    但是我这边还有个更奇怪的问题,就是板子第一次上电之后,I2C配好1848路由表之后,然后初始化SRIO,srio_init能正常初始化,我查看了SPn_ERR_STAT寄存器,发现有时Output Error-stopped或者Input Error-stopped会被拉高,请问为什么会出现这种情况呢?

    希望能得到您的回复,谢谢!

  • 王工你好,很感谢您的回复,

    但是我这边还有个更奇怪的问题,就是板子第一次上电之后,I2C配好1848路由表之后,然后初始化SRIO,srio_init能正常初始化,我查看了SPn_ERR_STAT寄存器,发现有时Output Error-stopped或者Input Error-stopped会被拉高,请问为什么会出现这种情况呢?

    希望能得到您的回复,谢谢!
  • 在SRIO文档里有Output Error-stopped,Input Error-stopped说明。
    B.1 Error Recovery
    www.ti.com/.../sprugw1c.pdf
  • Shine你好,

    我按照手册上做了,设置了寄存器RIO_PLM_SP(0)_LONG_CS_TX1=0x2003F044,但是错依然没有恢复,请问还有其他方法清除任一个port的所有错误状态?

    谢谢!

  • 你好,很感谢你的回复,
    但是我按照手册上做了,设置了寄存器RIO_PLM_SP(0)_LONG_CS_TX1=0x2003F044,但是error_stat并没有退出,这是什么原因呢?
    谢谢!