各位专家好:
碰到一个问题:运行完一遍SRIO例程后,必须重新上电。如果不退出debug模式,直接restart,SRIO不通,打印如下:
SRIO linkSpeed is 3.125 GHz!
External exception happened. MEXPFLAG[3]=0x4000.
Event 110: MDMAERREVT XMC VBUSM error event
memory protection exception caused by local access at 0x3402800c
Supervisor Write violation
NRP=0xc00d0a4, NTSR=0x1800d, IRP=0x0, ITSR=0x0, TSCH= 0x0, TSCL= 0x36834b7
B3=0xc00d0b4, A4=0x1844044, B4= 0x34020000, B14= 0x815438, B15= 0x8130f0
Exception happened at a place can not safely return!
如果不断电,重新进入debug模式,port可以正常连接,但是数据收发不正常。必须要重新上电才可以。
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/90689.aspx
这里提到初始化前对SRIO先进行复位下电,我看到的例程里已经有这样的操作了:
主函数里有:
KeyStone_disable_PSC_module(CSL_PSC_PD_SRIO, CSL_PSC_LPSC_SRIO);
KeyStone_disable_PSC_Power_Domain(CSL_PSC_PD_SRIO);
初始化函数里也有:KeyStone_SRIO_soft_reset 函数。应该有其他原因。
还做了如下测试工作:
1、单步调试,发现只要运行至少两次SRIO的读或者写的操作,就会出现上述问题。
2、如果运行例程里的memory test例程,再运行SRIO例程,也会出现上述问题。
3、后来重新分配了一下内存空间,将DDR3单独划分了两片,分别用于存放SRIO的读写数据,但是问题依旧。
4、在debug界面,分别使用system reset 和CPU reset命令,提示No source available for "0x20b00000",然后restart,问题依旧。
请问有什么方法可以解决?
Allen35065:
首先你可以试试在no boot模式下能不能反复运行。
原则上写例程时没有考虑到需要重新跑的问题,除了使用SRIO接口,它也配置了其它设备,restart未必会复位所有的设备,所以你碰到了这些问题。
Stephen chen:
回复 Allen35065:
一直就是在no boot模式下试的。
看例程,应该就只是初始化了时钟、MSM、SRIO、TSC和cache,哪里会有影响呢?
Allen35065:
回复 Stephen chen:
一般不重新上电,SRIO要做重同步的操作,这个例程里没有做这部分。
shuang li1:
Stephen chen你好,
我现在也在进行SRIO的调试工作,平台是DSP6678,交换芯片CPS1848,FPGA。
现在也出现了重新load程序之后SRIO不通的问题。
不知道你解决了这个问题了没有?是怎么解决的呢?
是不是像TI的工作人员说的需要重新建立连接?
谢谢!!