C6678,自制板子,外挂DDR3,使用SYS/BIOS,运行在DDR3中,使用仿真器在线仿真SRIO能够正常启动,和FPGA通信也正常,整个程序正常运行。
做离线,spi flash中存放两段程序,二级boot 以及应用程序,二级boot通过RBL启动成功,然后二级boot初始化DDR,加载应用程序,跳转到应用程序运行,现在问题是,应用程序运行到Srio_start时产生异常,去掉SRIO初始化部分,程序能够正常启动运行。
异常如下:
[C66xx_0] Memory Region 0 InitializedMemory Region 1 InitializedQMSS successfully initializedCPPI successfully initializedPA successfully initializedA0=0x800009e0 A1=0x0
A2=0x0 A3=0x80002a80
A4=0x1 A5=0x2e10
A6=0x1 A7=0x12
A8=0x1 A9=0xc102338
A10=0x800009e0 A11=0x80434ce0
A12=0x0 A13=0x0
A14=0x80407e38 A15=0xb3e4021d
A16=0x85f870 A17=0x0
A18=0x85f68c A19=0x1e0
A20=0x0 A21=0x0
A22=0x0 A23=0x0
A24=0x0 A25=0x0
A26=0x0 A27=0x0
A28=0x1085fc50 A29=0x134
A30=0x34022e10 A31=0x1085fc50
B0=0x0 B1=0x4
B2=0x0 B3=0x80415466
B4=0x81 B5=0x2a02a00
B6=0x80 B7=0x188
B8=0x0 B9=0xc10232c
B10=0x80002bc0 B11=0xffffffff
B12=0x6f B13=0xda
B14=0x80488310 B15=0x85f928
B16=0x0 B17=0x0
B18=0x2e00000 B19=0x0
B20=0x0 B21=0x2e0
B22=0x2e00000 B23=0x0
B24=0x0 B25=0x3000
B26=0x3000 B27=0x0
B28=0x0 B29=0x0
B30=0x2e0 B31=0x4
NTSR=0x1800f
ITSR=0xd
IRP=0x80415162
SSR=0x0
AMR=0x0
RILC=0x0
ILC=0x0
Exception at 0x80414cc0
EFR=0x40000000 NRP=0x80414cc0
ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x80414cc0, sp = 0x0085f928.
To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
xdc.runtime.Error.raise: terminating execution
Thomas Yang1:
建议做如下排查:
1)把SRIO初始化驱动放在L2中看有无这个问题
2)在boot起来后,用仿真器 real time 模式挂上去单步跟踪debug一下
3) E_exceptionMin: pc = 0x80414cc0, sp = 0x0085f928 这个PC对应的是哪个代码?
user3757070:
回复 Thomas Yang1:
谢谢Thomas Yang1 ,我先按照您的方法排查下看看。
还有一个重要现象没有描述,那就是在程序异常后,我使用仿真器的System Reset,然后Restart,再重新跑一次就一切都正常了
user3757070:
回复 Thomas Yang1:
1)暂时还没有做,想不来有多少关系?如果放在L2中,是这样做吗:Program.sectMap["srio"] = "L2SRAM";
2)3)debug跟踪是在while ((CSL_semAcquireDirect (PLATFORM_CPPI_HW_SEM)) == 0);异常,看不出问题
user3757070:
回复 Thomas Yang1:
专家们帮忙看看
user3757070:
回复 Thomas Yang1:
TI FAE有人在吗
user3757070:
回复 Thomas Yang1:
程序精简后全部放入L2,问题依旧存在
Thomas Yang1:
回复 user3757070:
“我使用仿真器的System Reset,然后Restart,再重新跑一次就一切都正常了”
从这个现象来 看,和SRIO驱动本身有关,建议你参考论坛置顶贴里 STK 包中的SRIO驱动初始化程序。
另外PC停在semapore获取的地方,难道你是多核都会做SRIO的初始化流程?
user3757070:
回复 Thomas Yang1:
我参考的是c:\ti\pdk_C6678_1_1_2_6\packages\ti\drv\srio\example\SRIOLoopbackDioIsr,是在SRIO LLD层调用的,没有使用多核做SRIO的初始化流程