各位专家好:
碰到一个问题:运行完一遍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,问题依旧。
请问有什么方法可以解决?