> When do you start counting for the DMA memcpy?
Starting the clock right before dma_enable knocks off a few microseconds.
> When do you start counting for the DMA memcpy?
Starting the clock right before dma_enable knocks off a few microseconds.
manitou - this is a fascinating set of experiments you've come up with. Thank you for sharing.
baseline: 1024 32-bit word DMA memcpy: 96us (microsceconds) lib memcpy: 58 us (total 154us)
dueling memcpy:
gather micros() timestamp in DMA isr. Start DMA memcpy followed by lib memcpy
... DMA memcpy: 119us lib memcpy: 64us
So lib memcpy is about 6us, about 10% slower with DMA running, and DMA memcpy is about 25us slower, about 25%, with lib memcpy running for 64us of its run time.
Have you tried sruuning two lib memcpy's, one straight after the other, so that DMA memcpy overlaps with lib memcpy for all/most of its run time?
Is DMA memcpy and lib memcpy reading or writing to the same memory?
Is it feasible to run two DMA memcpy's on different DMA controllers concurrently?
Hi,
Can you tell me how to implement dma_memcpy?
Many Thanks in adv.
The first entry in this thread has the functions I used for DMA memcpy()...
Performance comparisons with teensy and Due are here
https://github.com/manitou48/DUEZoo/blob/master/mem2mem.txt
Thanks Manitou,
Yes but those functions were for embedded systems. I was looking for some simple dma_memcpy implementation for x86 system from userspace, i searched a lot about this but because for lake of device driver experience i was enable to do dma memcpy. If you have done dma memcpy for x86 systems, that will be very very helpful.
Thanks
You must log in to post.