DMA with pointer

Hello everybody,

I have set my DMA resgister with the destination address as 0x80C00000
or 0x80F00000 which is actually showed in an example of the "OMAP35x
Applications Processor, Technical Reference Manual" on page 985 and
the program works.
I have tried to replace the fixed address by a pointer. So, the
difference is that the register 0x480560A0 = &aux
The first address of this pointer (&aux[0]) is usually like 0xbe and
other 6 numbers. When I try to get the value transfered by DMA, there
are just zeros there. That means that the transmission was not
Could it be that I have to active another clock for reading or writing
these positions in the memory? Any suggestions?
My program is something like this:

        ulong address;
  address = 0x49056038;

  ulong aux[1500];
  printf("Initial Address: %p\n", &aux[0]);

  dma[0x02C/4] = dma[0x02C/4] | 0x00000002; //Soft reset
Page 1001


  // DMA4 Configuration index=0
  dma[0x078/4] = 0x00008010; //FIFO Config. Page 1007
  dma[0x06C/4] = 0x00000020; //Mem. post-incr. Page
  dma[0x080/4] = 0x06044660; //Channel control Page
  dma[0x098/4] = 0x00000001; //Frame Number Page 1018
  dma[0x094/4] = 0x000003FF; //Elements per frame
Page 1017
  dma[0x090/4] = 0x00140002; //Ch. source/dest. par. Page 1016
  dma[0x09C/4] = 0x49056038; //GPIO5 //Source
Adress Page 1018
  dma[0x0A0/4] = &aux;
  dma[0x0A4/4] = 0x00000000; //Source element index
  dma[0x0A8/4] = 0x00000000; //source frame index
      dma[0x0AC/4] = 0x00000000; //Destination element
  dma[0x0B0/4] = 0x00000000; //Destination frame

P.S. Sorry, my fault. :slight_smile: "aux" is an address of the first element of
array (pointer to ulong) and "&aux" is an address of the whole array
(pointer to array of type ulong), but the addresses are basically the

Hello Max,
thanks for answering. However, I had tried your solution before and it
did not work.