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
realized.
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
1003
dma[0x080/4] = 0x06044660; //Channel control Page
1010
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
index
dma[0x0B0/4] = 0x00000000; //Destination frame
index
.
.
.