DSPRelated.com
Forums

EDMA under DSP/BIOS II

Started by Unknown January 23, 2001
I think I have the answer now, courtesy of TI Technical support and a
little research of my own.

The problem seems to be that the CPU, which controls the operation of
the cache, does not know that the EDMA has altered the destination
buffer and does not update its cache to reflect it. Examining the
contents of the buffer using CCS then just reads the cache (which
contains my original default values).

Doing an L2 cache flush (manually using CCS) before examining the
buffer in CCS should then mean that the correct data can be seen (I
haven't tried this yet).

Disabling the L2 cache (and even modifying its size) also resulted in
correct operation.

My solution is to move my destination buffer into internal memory
(there are other reasons for me to do this as well).

Good luck !

Gary

--- In c6x@y..., Andrew Elder <andrew_elder@b...> wrote:
>
> Gabor,
>
> I assume you are taking care to do an L2 cache flush before
> running the Tx side ? I got caught out with that one !
>
> Andrew




--- In c6x@y..., gary.halfyard@b... wrote:
> Doing an L2 cache flush (manually using CCS) before examining the
> buffer in CCS should then mean that the correct data can be seen (I
> haven't tried this yet).

I have found my bugs:
- instead of CACHE_Flush(CACHE_L2) I should invoke
CACHE_Clean(CACHE_L2) CSL function. CACHE_Flush() does not
invalidate data in cache, therefore cache hit can occur at later
accesses. This was my case: altough the buffer was flushed but I
have accessed its data directly in cache.
- CACHE_Flush() was invoked not only after buffer initialization but
e.g. in Transmit Complete ISR. This is wrong: CACHE_Flush() can
overwite the buffer by its previous cached content.

Thanks & take care

Gabor



Last, but not least:
I have found, that TI has a new version of its Application
Report "TMS320C6000 McBSP as a TDM Highway" (SPRA491A - Updated:
09/11/2000)
(http://www.ti.com/sc/docs/psheets/abstract/apps/spra491a.htm)

The update enhances the original example code with
- DSP/BIOS
- using McBSP with EDMA
- CSL
- where to use CASH_flush(), CASH_clean()

Gabor