Hello!
my chip is DM3730 and software is DVSDK4.03.
when running the app,it will display "DSP MMU Error Fault! MMU_IRQSTATUS = [0x1]. Virtual DSP addr reference that generated the interrupt = [0x8c2000e0]." and I learn the problem from processors.wiki.ti.com/.../DSP_MMU_Faults, so I debug the app and find the function "VIDDEC_process()" can't open, the debug inifo as:
@10,056,427us: [+0 T:0x400aa410] ti.sdo.ce.video.VIDDEC - VIDDEC_process> Enter (handle=0x4cb58, inBufs=0xbeacec3c, outBufs=0xbeacec30, inArgs=)
@10,056,457us: [+4 T:0x400aa410] CV - VISA_getMaxMsgSize(0x4cb58): returning 0x1000
@10,056,488us: [+5 T:0x400aa410] CV - VISA_allocMsg> Allocating message for messageId=0x0002fe65
@10,056,518us: [+0 T:0x400aa410] CV - VISA_call(visa=0x4cb58, msg=0x40a3d880): messageId=0x0002fe65, command=0x0
DSP MMU Error Fault! MMU_IRQSTATUS = [0x1]. Virtual DSP addr reference that generated the interrupt = [0x8c2000e0].
and I check the input/output of the function "VIDDEC_process(dec, &inputBufDesc, &outputBufDesc, &decInArgs,&decOutArgs)",and my app about it is:
//INPUT
XDAS_Int8* pInputBuf[XDM_MAX_IO_BUFFERS];
XDAS_Int32 inbufSizeArray[XDM_MAX_IO_BUFFERS];
XDAS_Int8* pInputBuf[XDM_MAX_IO_BUFFERS];
XDAS_Int32 inbufSizeArray[XDM_MAX_IO_BUFFERS];
memset(pInputBuf,0,sizeof(pInputBuf[0]) * XDM_MAX_IO_BUFFERS);
memset(inbufSizeArray, 0, sizeof(inbufSizeArray[0]) * XDM_MAX_IO_BUFFERS);
for(int i=0;i<NumBuff;i++){
inBuf = Memory_alloc(inbuf_size, &allocParams);
if(!inbuf){
printf("CMEM is error!\n");
goto end;
}
pInputBuf[i] = inBuf;
inbufSizeArray[i] = inbuf_size;
}
inBuf = Memory_alloc(inargs_size, &allocParams);
if(!inbuf){
printf("CMEM is error!\n");
goto end;
}
in_args = (struct In_Args *)inbuf;
pInputBuf[NumBuff] = inBuf;
inbufSizeArray[NumBuff] = inargs_size;
//XDM_BufDesc_in
inputBufDesc.bufs = pInputBuf;
inputBufDesc.bufSizes = inbufSizeArray;
inputBufDesc.numBufs = NumBuff+1;
//OUTPUT
XDAS_Int8* pOutputBuf[XDM_MAX_IO_BUFFERS];
XDAS_Int32 outbufSizeArray[XDM_MAX_IO_BUFFERS];
memset(pOutputBuf,0,sizeof(pOutputBuf[0]) * XDM_MAX_IO_BUFFERS);
memset(outbufSizeArray, 0, sizeof(outbufSizeArray[0]) * XDM_MAX_IO_BUFFERS);
outBuf = Memory_alloc(outargs_size, &allocParams);
if(!outBuf){
printf("CMEM is error!\n");
goto end;
}
pOutputBuf[0] = outBuf;
outbufSizeArray[0] = outbuf_size;
out_args = (struct Out_Args *)outBuf;
//XDM_BufDesc_out finished
outputBufDesc.bufs = pOutputBuf;
outputBufDesc.bufSizes = outbufSizeArray;
outputBufDesc.numBufs = 1;
and I think my CMEM address of input/output isn't error,but I don't know why ? Please reply to me,Thank you!