Am5728的arm核运行linux,dsp核运行ti rtos,dsp核怎么捕捉dsp核触发的mmu异常。
dsp的rsc_table_vayu_dsp.c文件定义的内存表里面没有0xA6700000~0xA67FFFFF的地址,但是有0xA6800000之后的地址,dsp核开启了地址表的cache;但是程序中会莫名奇妙访问到0xA6800000之前的一段地址,而且一直是报错0xA67FFFC0,感觉像是mmu自己cache时访问了地址表外的地址;一旦产生这个错误,arm核的linux系统就把dsp核的程序重新启动了,导致无法查找dsp核在问题产生前的状态。
想请教一下,dsp核如何捕捉这种内存的异常访问,让程序挂起,可以查看当前的状态,如调用栈等。
产生问题相关图片:
使用硬件中断,watch point无论是read/write/或者代码中断都是无法捕捉到的。
用人工写代码访问0xA6800000前地址可以触发此错误,但是也是无法使用硬中断捕捉,应该是arm端发现异常访问后将程序给重启了。
有没有办法,当出现这种内存异常访问时,将dsp程序挂起,而不时外部将程序给重新加载,造成无法定位问题
Nancy Wang:
试试看能不能通过RTOS的两个工具ROV和UIA分析出来。
www.ti.com/…/spruh43f.pdf
processors.wiki.ti.com/…/Runtime_Object_View_(ROV)