两片DSP C6670通过SRIO交换机相连,在SRIO初始化阶段将你配置为4x模式,对应的寄存器PLM_SP(0)_PATH_CTL(偏移地址0x1B0B0)的值是0x404.
但是寄存器SP(n)_CTL(偏移地址0xB15C)的值有时为0xD0600001(该值表示为4x模式),有时初始化后则是0xC0600001(该值表示为1x模式)
当为0xC0600001时,我们发送LM_REQ,检查到LM_RESP对应的值为0x10,表示端口正常。
同时我们在检查到不是4x模式后,再次重新对DSP SRIO进行初始化,但始终都是1x模式。
请问:以上现象可能啥原因造成的,如何解决?DSP SRIO最终的4x/1x模式由什么决定?
Kevin Cai:
Hi, 您好!
在下面的链接中,有我们的SRIO例程,包括1X, 2X, 4X模式的配置。
模式的配置是在KeyStone_SRIO_set_1x2x4x_Path函数中做的, 具体模式由srio_cfg->srio_1x2x4x_path_control变量决定
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx
建议一种方法是直接用例程中的代码; 另一种方法是比较两个代码对寄存器的配置的区别(通过比较寄存器的值)、
供您参考,谢谢!
armywoods liu:
回复 Kevin Cai:
你好,我当前配置就是参考函数KeyStone_SRIO_set_1x2x4x_Path来进行的
现在的问题并不是完全配置不成功,而是有时配置后再读取相关反馈寄存器发现最终是4x模式;
但有时配置后再读取相关反馈寄存器发现最终并不是4x模式,此时再次初始化DSP的SRIO也没有效果
Kevin Cai:
回复 armywoods liu:
Hi, 您好!
这可能跟对端(switch)SRIO状态有关,方便的话可以看下出错时DSP端 LANEn_STAT0 和 LANEn Status 1 CSR寄存器
比如在LANEn Status 1 CSR寄存器中, 可以看到:
LP_WIDTH: 对端是几个LANE的模式
LP_LANE_NUM:当前DSP的这个 LANE是跟对端的哪个LANE连接
LP_TAP_M1/LP_TAP_P1:对端LANE的状态
另外请问一下这个问题是只在一个板上出现 还是在多个板上都有出现?
谢谢
armywoods liu:
回复 Kevin Cai:
hi,Kevin
你意思是Dsp这几个寄存器的值对应的是对端的情况?
我比较了两种情况下SRIO寄存器的情况,STAT0确实不一样,见附件照片
当前只有两块板,现象一样
Kevin Cai:
回复 armywoods liu:
Hi, 您好
1。链路状态不对(STAT0 中 RX_SYNC错), 检查一下对端(switch)的状态 ,STAT1 的值图片中没有; 另外从寄存器看,收到很多错误包, 见SPx_ERR_DET寄存器;
2。同一份代码执行后SPx_RATE_EN的值应该一样,但是图片中不一样,用的是两份代码吗?
谢谢!
armywoods liu:
回复 Kevin Cai:
图片是同一份代码一个配置为4x成功,另一个配置为4x检测结果为1x两种情况导出所有寄存器比较不一致的地方
没有STAT1则说明两种情况STAT1寄存器的值是一样的
所以第二个问题我也不知道为啥,但我可以回答你肯定是同一份代码,在同一个DSP上跑两次的结果