Hello,
We are working on TCI6670 evm
1. We have a RTOS project where we have declared a buffer of size approx.. 200K ,placed in MSMC.
2. EDMA writes to this buffer and only one Core reads it.
3. L1Dcache is enabled-32K and L2cache is also enabled-256K
4. We are assuming that MSMC data is not cached in L2cache
Now, Following tasks are performed repeatedly in a sequence-
1. Cache_inv((void*)(buff), sizeof(buff), Cache_Type_L1D, TRUE);
2. DMA writes to this buff.
3. The core reads it
Observation-
Putting a breakpoint after cache invalidate, we see that no data is present in L1D cache(no grey line observed in memory browser).
On moving step by step ahead, after DMA write, correct output is present in MSMc. Now when CPU reads this input buffer,some of the initial bytes at physical memory of this Msmc buffer is being overwritten by previous L1D cache bytes of this buffer(already invalidated).
Moreover ,I have tried both these APIs to invalidate cpu cache data.
1. Cache_inv((void*)(buff), sizeof(buff), Cache_Type_L1D, TRUE);
2. CACHE_invL1d((void*)(buff), sizeof(buff), CACHE_WAIT);
But, the observation is same with both of the above scenarios.
Please assist how to proceed further in this case.
Regards,
Jeanne