Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

TMS320F28377D: DMA from different parts of internal memory to an Async external memory

$
0
0

Part Number:TMS320F28377D

This is mostly a question for my own knowledge enrichment, since I've managed to work around the problem, but I'd like to know the reason for the problem anyway.

In my setup, I have a DSP with core 0 that accesses the external memory EMIF1 on CS3. This is configured according to the example "emif_16bit_asram_cpu01" and works for manual accesses like "int local_variable = *(Pointer_In_External_Memory);" - no problems here.

Additionally, I've created a buffer that should be transferred to this external memory by means of the DMA. The DMA channel was configured roughly according to the example "emif1_16bit_sdram_dma", with the appropriate changes, because my external memory is Async and not SDRAM. The DMA channel configuration was, actually, the same.

I verified the code works at this point by physically attaching to the external memory bus and checking the Clock, Write, CS, address and data signals. Everything is OK.

Now, I've created another buffer, put it in "ramgs7" using #pragma DATA_SECTION directive, filled it with some data and tried to transfer it using DMA. This did not succeed: even though Clock, CS, Address and Write signals worked, the Data wires stayed at 0. I've effectively overwritten anything that was in that memory before, but I did not succeed to transfer the buffer's content into the external RAM. The source address in DMA register was Ok, and I saw the management signals, but data just stayed 0. 

Reading with DMA from EMIF to internal RAM didn't work as well.

When I moved the buffer to "ramgs0", by changing one number in the "pragma" directive, DMA worked, in both directions. Moving the buffer to any other section, like "ramgs7", makes it stop working, even if I see this memory section in the .map file as the output of the compilation.

For now, I've left the buffers in "ramgs0", and DMA works in both directions, but I would like to know the reason for this behavior. I didn't use a custom linker command file, I used the stock one, "2837xD_RAM_lnk_cpu1.cmd".

Thanks,

Alexey.


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>