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.

Address translation of src/dst buffers in DSP internal memory needed to configure EDMA PARAMs on DM8148/ DM8168?

Based on the suggestion of the EDMA driver team, moving the conversation to external forum.

After spending several hours of debugging the DMA based transfers from external DDR memory to DSP internal memory on DM8148, we have concluded that there needs to be an addresses translation of internal buffer addresses when DSP configures the EDMA PARAMS.

Some of the symptoms that made us realize this are as follows,

1.  the DMA transfers worked fine when data was being transfered from one location in external DDR memory to other.

2. When data was transfered from external memory to buffers allocated in internal memory, though we received the EDMA interrupt, we did not see any valid transfer of data.

Looking closely at the data sheet this is what we see: 

This is the memory map seen by EDMA 

While this is the memory map seen by the DSP:

Looking at the memory map of C674x (taking to account the foot note), there is a 0x30000000 difference in the address of L2 seen by EDMA and by C674x.

 There is a DM8148 example in EDMA3LLD but it appears to be transferring data between buffers defined in external memory (looking at the linker command file)and though the example implies that the global addresses are being calculated(using getGlobalAddr()) for the platform before the EDMA is called, its seems there is not global address computation as seen in the file examples/ti/sdo/edma3/drv/sample/src/platforms/sample_ti814x_cfg.c

 

signed char*  getGlobalAddr(signed char* addr)

{

     return (addr); /* The address is already a global address */

}

I don`t think this is true when the src and destination buffers are in internal memory. So unless the MMU is configured to make DSP and EDMA see the same addresses of DSP internal memory, it appears that an offset of 0x30000000 needs to be added to src/dst addresses before configuring the EDMA params. I have already gone ahead and tried this, and things seem to be working fine.

I am assuming since DM8148 and DM8168 are similar platforms the issue exists on both the platforms.

Regards,

Rahul