This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Why CMEM memory is accessible only one start-up on two by the DSP (C64x+)?



Hi,

 

I develop an application on the Mistral EVM 3530 under DVSDK 4.00.00.22 for video streaming. The videos frames are put into a CMEM location by the ISP drivers and take from another CMEM location by the DSS. It is the DSP that make the frames copy during it frame treatment.  The DSP get CMEM access with this function call done by the GPP application just after having call PROC_attach():

mapInfo.dspAddr = 0x8E000000;
mapInfo.size = 0x01000000;
mapInfo.mappedAddr = 0;
mapInfo.mappedSize = 0;

dwStatus = PROC_control(0,PROC_CTRL_CMD_MAP_DSPMEM,&mapInfo);

When the application terminate it call this function:

tmpStatus = PROC_control(0,PROC_CTRL_CMD_UNMAP_DSPMEM,&mapInfo);

 

The first time I start my program, the DSP cannot access the CMEM, but if I exit and restart again it works. After that if I exit again and restart it will not works but will be on it next start-up. So it is able to access the CMEM memory exactly one start-up on two. I don't understand what it is the cause and the solution of this problem. There is someone that can give me some help with this problem?

 

For the start-up when the DSP cannot access the CMEM, I am sure it is running because I am able to exchange a POOL message between each video frame.

 

Thank you,

 

Daniel