In a message dated 3/4/2004 10:26:26 AM Eastern Standard Time, writes: Hi khalida1: You hitted right on the spot!!! When I changed my variables to the INTERNAL Memory (L2 CACHE), the transfer was really made. As of your solutions for SDRAM, What do you mean by Cache Flush. How can I do a Cache Flush and/or clean the SDRAM location? If I am using DSP/BIOS OS, how can I disable caching? Thanks for your help. Att., Juan A. Torres-Rosario --- wrote: > In a message dated 3/3/2004 11:35:07 AM Eastern > Standard Time, > writes: > Hi KAnand, > > Thanks for your help :). I have modified my code so > that the EDMA Channel's opt TCC has a particular > channel (2), cleared the CIPR before configuring the > channel, and testing the channel after I perform the > transfer. When I test the channel, the CIPR bit has > been set, meaning that the EDMA Transfer was > completed. The problem is that when I check the > memory > location of the destination buffer, it does not have > the content of the source buffer as if no transfer > was > made. My variables (source and destination buffers) > are been stored in the SDRAM. I have read the EDMA > part on "spru190d" file, which deals with the > peripherals, and quite understand how the EDMA > works. > Is there any other parameter I am supposed to set > for > asynchronous transfer? Is asynchronous transfer > reliable? > > Code: > Hi! > I bet that this is a caching problem! > You nead to do a cache Flush and/or Clean on the > SDRAM location to which you > are trying to do this transfer. > I also bet that if you changed your buffer location > to On Chip memory (I > assume you have at least one bank available) or, > even better, disable caching, > just for testing, and rerun your test, then you > should find the correct data in > the buffer. > > Hope this helps. > Regards, > /Khalid > Hi Juan, There are TI Chip Support Library (CSL) functions that you can call to Clean the cache memory. Just search the help from Code Composer for cache clean and you should be able to find the exact call. You basically pass the SDRAM buffer address and the buffer size as the parameters for this function call. You'll have to do so before every transfer, therefore it is probably best that you set your receive buffer in INTERNAL memory and after each transfer is completed you then copy the data from INTERNAL to SDRAM memory. Glad that I can help. Regards, /Khalid |