I just tried to use the IDMA to fast page memory from L2 SRAM to L1D SRAM on the dm6437 simulator. I opened a memory window for the L2 buffer, wrote some values, then opened the L1D buffer and looked at results. Nothing happened. Is IDMA paging not supported by the simulator, or am I doing something wrong?
#define IDMA1_SOURCE (0x01820108u)
static void idmaPageSourceBlock1()
{
static char *put = &source_frame_L1D[0];
static char *get = &source_frame_L2[0];
int *pIDMAreg = (int *)IDMA1_SOURCE;
*pIDMAreg++ = (int)get; // IDMA1 source address
*pIDMAreg++ = (int)put; // IDMA1 destination address
*pIDMAreg++ = // IDMA1 count
(0 << 29) || // Priority? (0 = highest, 7 = lowest)
(0 << 28) || // Interrupt when done? (1 = yes)
(0 << 16) || // Block fill (1 = yes)
(IDMA_BLOCK1_SIZE & 0xfffc); // Must be multiple of 4 bytes
get += IDMA_BLOCK1_SIZE;
// wrap get if overflowed
put += IDMA_BLOCK1_SIZE;
// wrap put if overflowed
}