你好 各位专家及DSP开发同仁:
我有以下问题 劳烦解决
我现在是用的CI2EVMBOC将两块6678仿真板连接起来了,并且调通了相互之间的SRIO通信,现在就是有个问题,当其中一块DSP的程序(.out)需要修改重新加载时(LOAD),两块板子必须同时断电再加载,才能保证SRIO正常通信。这样,当以后开发使用SRIO的比较大的系统时,岂不是只要程序稍微有修改,重新编译加载,所有相关联的板子都得断电重加载,这样的调试极为困难。以前的6455和6474不存在这样的问题。
现在就是6678的板对板模式的SRIO和网络有这样的问题(我是把所以外设驱动写在一起,形成一个通用的工程文件),需要重新加载程序时,必须断电重启,其它外设比如IPC,UART则没有这样的现象,不断电和程序不抛费的情况下可以反复加载。
我的问题可能具有共性,请解答,谢谢。
yaowen yin:
更正,程序抛费改为程序跑飞。
Thomas Yang1:
回复 yaowen yin:
如果DSP-DSP srio link链接正常,这时,由于一方重加载或者reset,那么就会破坏底层的通信,因为SRIO 的packet传输是基于ACKID进行的,比如当前接受方收到的packet的ACKID是N,那么下一个packet接受所期望的ACK ID 必须是N+1/32,如果不是,则会报错。所以一般的做法是一方进行reset后,另外一方也需要重新进行reset,然后重新进行链路协商,进而发起新的传输
yaowen yin:
回复 Thomas Yang1:
谢谢 你回答到实质问题上了 但是怎么解决这个问题了
要是这样 我哪怕改一个变量我也得重加载,必然就得整体断电。
这样的话,将来我们是大量含6678的板子联调,也许我只是想改一块DSP的程序,这样会导致整个单机断电,与之有SRIO连接关系的芯片所有的都要重加载,调试工程会非常复杂,也非常不人性化
还请提供解决的思路,比如,屏蔽这个ACKID的功能。在不重启所有6678的情况下,只是重加载一块6678的程序,程序照样可以正常运行。
以前我用过6455和6474相连则不存在这样的问题。
Boxue Li:
回复 yaowen yin:
我用6678和6455通过SRIO连接,存在和你一样的问题,一方断电或复位后,另一方无法知道,甚至不会收到中断。请问你有新进展么?
Boxue Li:
回复 yaowen yin:
我部分解决了这个问题。
C6678有复位隔离功能,某些模块不受CCS中的复位影响,其中就包括SRIO。
我在代码中配置SRIO时候先对SRIO模块下电再上电,就可以了。
上电下电方法可以看电源管理模块,手册中说只能从掉电态转到上电态,不能翻转,实际上是可以的。