Hi!
I already tried single write DMA Transfer(32MB only) between DDR memory locations and calculate the time taken which is 0.012823027 in sec for 32MB so per sec 2.43GB.
But in this test polling status register require some delay otherwise it stuck.
while((*((unsigned int *)(mptr+DMA1_SR0)) & 0x04) == 4)
{
usleep(1);// If it is not here operation stuck
}
if( clock_gettime( CLOCK_REALTIME, &start) == -1 ) {
perror( "clock gettime" );
return EXIT_FAILURE;
}
while((*(unsigned int *)(mptr+DMA1_SR0)&(1<<2))==0x4)
{
usleep(1);// If it is not here operation stuck
}
printf("\nDMA transfer is finished\n");
if( clock_gettime( CLOCK_REALTIME, &stop) == -1 ) {
perror( "clock gettime" );
return EXIT_FAILURE;
}
elapsedTime = ( stop.tv_sec - start.tv_sec )
+ ((double)( stop.tv_nsec - start.tv_nsec )
/(double)BILLION);
printf("\ndma elapsed time in sec :%lf transfer size%dMB\n",elapsedTime,(size/(1024 * 1024)));
Regards,
Dhanasekaran K