大家好,
我目前在dm3730设备上集成了自己的程序,在程序稳定性运行过程中,会不定期(有时候10分钟,有时候几小时)出现崩溃的情况,从串口中得到的信息如下:
DSP MMU Error Fault! MMU_IRQSTATUS = [0x1]. Virtual DSP addr reference that generated the interrupt = [0x86a18000].
我的内存格局如下:
0x80000000-0x8fffffff:linux内存空间,供arm端使用
0x90000000-0x93ffffff:cmem空间
0x94000000-0x9effffff:DDRALGHEAP空间
…
串口中报中断的地方是0x86a18000,对应的应该是linux的空间,为什么会和dsp有关系的?我使用Memory_contigAlloc分配出来的内存对应的虚拟地址如下:
ptrLastInBuf:43997000 ptrCurInBuf:43a2d000 ptrCurOutBuf:43ac3000
ptrH264OutBuf:43b59000 ptrJpegOutBuf:43bef000 ptrCapBuf:43c85008
这一块的虚拟地址范围也不会去到0x86a18000这边。
另外,我在dsp中的算法程序用到比较多的全局变量,这一块的内存空间是从哪里分配的?会不会和这块有关系呢?
Chris Meng:
Eric,
错误提示是地址不在TLB里面。应该是访问了不应该访问的地址,会否是栈溢出?
http://processors.wiki.ti.com/index.php/DSP_MMU_Faults
Error CodeError NameDescription
0x01
TLB MISS
Unrecoverable TLB miss (hardware TWL disabled)
eric eric3:
回复 Chris Meng:
你好,
感谢回复,我在算法中用了大量的全局变量,我怀疑是不是这个问题,请问dsp端的全局变量是从那一块地址中分出来的?
Chris Meng:
回复 eric eric3:
Eric,
请看看DSP的map文件。