请问如何定位dsp异常问题。
各位专家好:
我现在工作在6614上,dsp的程序进程会莫名其妙的异常终止。也不知道问题代码出现在哪里?
我们给bois error设置了钩子函数。
当出现异常时执行Exception_getLastStatus (&status);读出pc和sp地址。还有堆栈信息。
我自己制造了几个异常,例如使用空指针。pc和sp的地址都是正确的。
可是在实际工作中这个就不灵了,pc指向的地址不在我们的代码空间中,堆栈信息也无法推导出出错的位置。
请问pc = 0x12000048是什么地址。有什么技巧去排查异常问题。
DSP=0 :E_exceptionMin: pc = 0x12000048, sp = 0x52b3a090.
To see more exception detail, use ROV or set 'ti.
————-last status————–:
A0=0x0 A1=0x8
A2=0x0 A3=0x529e9098
A4=0x727 A5=0x39785dbd
A6=0x135a77a A7=0x29d14bca
A8=0xb A9=0x52a9be50
A10=0x8 A11=0x1
A12=0x1 A13=0x529e5c0c
A14=0x52aa0a28 A15=0x727
A16=0xa69578d0 A17=0x95c6d2d0
A18=0x52b39d18 A19=0x0
A20=0x0 A21=0x0
A22=0x1 A23=0xf000
A24=0x1 A25=0x0
A26=0x80 A27=0x0
A28=0x400 A29=0x1
A30=0x0 A31=0x0
B0=0x2040000 B1=0x52b3a240
B2=0x0 B3=0xa017d524
B4=0x12000048 B5=0x52a9bf38
B6=0x52a9b9d8 B7=0xa0189998
B8=0x0 B9=0x0
B10=0x5793 B11=0x3120
B12=0x0 B13=0x5162
B14=0x52b3df00 B15=0x52b3a090
B16=0x11000028 B17=0xa0160004
B18=0x8f5c28f6 B19=0x3feff5c2
B20=0x600000 B21=0x7000
B22=0x20d B23=0x0
B24=0x18 B25=0x20000
B26=0x18 B27=0x0
B28=0x0 B29=0x1
B30=0x52a9b9f8 B31=0x1f
NTSR=0x1020d
ITSR=0x20d
IRP=0xa0189998
SSR=0x0
AMR=0x0
RILC=0x0
ILC=0x0
Exception at 0x12000048
EFR=0x2 NRP=0x12000048
————-stack info————–:
0x12000048 0x52b3a090 0x0b860000 0x529bea96 0x00008018 0x00000000 0x000000f8 0x00000000
0x00000000 0x00000000 0x00000000 0x28f5c000 0xa0153cb0 0x52b3a0e8 0x52b3a090 0x52b3a120
0x529e5a34 0x00000000 0x52a9bdf8 0x00005162 0x00000001 0x529da345 0x00000001 0x12000048
0x52aa0808 0x00000002 0xa019e66c 0xa018ba34 0x00000008 0x00000001 0x00000000 0x00003120
0x00000001 0x8094642c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
0xa0189998 0x12000048 0x0000020d 0x0001020d 0x00000002 0x00000001 0x52a9b9f8 0x0000001f
0x00000000 0x00000001 0x00000018 0x00000000 0x00000018 0x00020000 0x0000020d 0x00000000
0x00600000 0x00007000 0x8f5c28f6 0x3feff5c2
Andy Yin1:
通过ROV查看一下程序出错之前运行的轨迹,看看出错之前大概运行的代码,也可查看堆栈的使用情况。从出错信息来看貌似之前运行到一段非法的代码,查看一下是否存在memory code改写呢。