TI中文支持网
TI专业的中文技术问题搜集分享网站

SRIO 触发完成中断后 造成程序跑飞 PC=0X00000000

工程环境比较复杂,硬件资源有两个板子四个DSP,使用3个SWITCH进行路由,中断配置有timer中断,SRIO完成中断,SRIO门铃中断,aif 中断。SRIO完成DSP间通信,使用MESSAGEQ完成核间通信。

SRIO使用的是LSU传输

一开始启动SRIO,完成多个dsp 初始化后的同步,然后启动其他资源,不过某个core 接收到其他DSP消息后  执行一次SRIO读操作后就会出现如下情况:

[C66xx_7] A0=0x178a6108 A1=0x0
A2=0x0 A3=0x60ebc93c
A4=0x1789f688 A5=0x178a1250
A6=0x0 A7=0x0
A8=0x1 A9=0x8
A10=0x0 A11=0x0
A12=0x0 A13=0x0
A14=0x0 A15=0x0
A16=0x20000 A17=0x0
A18=0x178a603c A19=0x20
A20=0x0 A21=0x0
A22=0x4 A23=0x2a
A24=0x314 A25=0x262012c
A26=0x20002000 A27=0x0
A28=0xe0 A29=0x0
A30=0x300 A31=0xc009008
B0=0x1789fd48 B1=0x0
B2=0x0 B3=0x0
B4=0x0 B5=0x178a62a0
B6=0x177 B7=0x1
B8=0x178a1250 B9=0x0
B10=0x0 B11=0x0
B12=0x0 B13=0x0
B14=0x178d2720 B15=0x178a6138
B16=0x1 B17=0x11
B18=0x20 B19=0x2
B20=0x0 B21=0x69
B22=0xf B23=0x0
B24=0x178cc158 B25=0x20b149dc
B26=0x20b149e4 B27=0x11e
B28=0x30c1441c B29=0x2509862c
B30=0x200000 B31=0x1789fd4c
NTSR=0x1020e
ITSR=0xf
IRP=0x60e9efe0
SSR=0x0
AMR=0x0
RILC=0x0
ILC=0x0
Exception at 0x0
EFR=0x2 NRP=0x0
Internal exception: IERR=0x1
Instruction fetch exception
ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x00000000, sp = 0x178a6138.
To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
xdc.runtime.Error.raise: terminating execution

经过几次尝试发现当把SRIO的完成中断DISABLE掉后,就不会产生如上错误。 我的完成中断只执行了检测中断位和清中断位的操作

看了其他的问题 觉得是B3 B15寄存器存储的函数返回值有问题,不过当我单步跟的时候却也没有报错,

能提供一些建议来让我找bug么

Andy Yin1:

Instruction fetch exception 提示的是取指错误,IRP=0x60e9efe0提示的是最后中断返回地址,感觉像是PC执行到一个非代码段导致异常。你在ccs下调测sysbios工程的话可以根据提示使用CCS ROV功能观察运行轨迹看看可能的问题。

赞(0)
未经允许不得转载:TI中文支持网 » SRIO 触发完成中断后 造成程序跑飞 PC=0X00000000
分享到: 更多 (0)