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

omap3530 mmu fault

您好,我最近在使用omap3530 时,使用dsplink遇到了一个奇怪的mmu fault 问题。

问题是这样的,我使用了dsplink 的PROC POOL NOTIFY组件,程序流程如下:

1 gpp 端程序使用pool开辟共享内存

2 gpp写数据到共享内存

3 gpp启动dsp,等待dsp的notify

4 dsp读写共享内存 发送notify到gpp 等待gpp的notify

5 gpp 读写共享内存 发送nofify到dsp 等待 dsp的notify

6 执行第4步

这个测试程序能够很好地运行。

然后,我对测试程序进行了部分改造,改造好后,两端程序的基本通信流程没有

发生变化,只是,第4步中读写内存后,对数据进行了复杂的处理(进行x264编码)

然后程序在运行时,就出现了 MMU Fault的问题

[  538.434265] DSP MMU Error Fault!  MMU_IRQSTATUS = [0x1]. Virtual DSP addr reference that generated the interrupt = [0xfffdfbc8].

但奇怪的是,我将dsp端进行运算的程序剥离出来后,使用gcc对其编译,并将编译

所得程序在PC上运行,则程序能正常运行。

我对此,很是不解。

急切等待您的恢复。

在这里我奉上我的两个配置问题:CFG_OMAP3530_SHMEM.c 和 dsplink-omap3530-base.tci

Feng Dong:

你264算法使用的空间要通过mmu配置,通常这部分是通过cmem来实现的.

geng wang:

回复 Feng Dong:

我264的代码最终要动态开辟的内是用MEM_alloc()函数开辟的,而且调用这个函数时,传入的段地址是我专门定义出来的一个段,这个段在dsplink-omap3530-base.tci文件中进行了定义(段名称是CODEHEAPMEM),在那个能正常运行的测试程序中,我也调用了MEM_alloc函数进行了内存的动态分配,且对分配的内存进行了读写,但是没有报告MMU Fault错误。

Feng Dong:

回复 geng wang:

编码的数据是arm和dsp共享空间的是要通过cmem来分配的

赞(0)
未经允许不得转载:TI中文支持网 » omap3530 mmu fault
分享到: 更多 (0)