Dear TI support,
I have a list of questions that I would like to ask about the EDMA LLD driver and hope I can progress from there.
Let me explain very briefly what I am trying to do. I want to transfer data from SRC to DEST. My source is on a computer and my destination is on the C6670 (of course it can work the other way). There is an example provided by texas instrument to do so configuring manually the DMA from the host.
This was a good starting point but I want now creating a mechanism to monitor the "link" in a more efficient way. In brief this "link" is using a set of tasks, message queues and memory buffers to pass the data from SRC to DEST... Withing this link, data can be transferred from SRC (on host) to C6670 and from C6670 to DEST(on the C6670)
I want to use EDMA and more importantly I want to make it as easy as possible to manage (number of channels and interrupts). Here comes edma3_lld_02_11_05_02 which is provided with the MCSDK.
So here is a list of question:
1) can I use the EDMA LLD driver if one of the address is not in the C6670 memory (L1/L2/DDR). I mean can the SRC or DST be at 0x6000 0000 which are the 256MB of PCIe data.
2) I have my transfer mechanism set up and working where I am doing memcpy. This does: transfer from SRC to mem1 and transfer from mem1 to DEST. All buffers are 1024 bytes. All buffers are in DDR.
The first transfer is ok: TransferData(channel,1,(SSP_UINT32)wr_buf,(SSP_UINT32)rd_int_buf, BUFF_SIZE);
The second transfer fails TransferData(channel,2,(SSP_UINT32)rd_int_buf,(SSP_UINT32)rd_buf,BUFF_SIZE);
When I look at the memory, I am missing data in the buffer. It does not matter in what order i run them, always the second transfer fails.
If I enabled this flag: #define EDMA3_ENABLE_DCACHE 1, all seems to be ok.
Can you tell me why I need to cache the data that are in DDR?
Can you tell me how much cache is used and if I need to configure it (since I could have 8 DMA transfers happening at the same time with different buffer size)
3) If my address is at 0x6000 0000, should I use these functions? Edma3_CacheFlush and Edma3_CacheInvalidate on these addresses?
4) What interrupt vectors and events and levels are used for the EDMA interrupts? Where is this section being configured? Is it using CSL or SysBios?
Thanks for your prompt answer
Aymeric