SDMA Module in Beagle board.


   Currently I'm using Beagle board for a project.I want to use the
DMA module for the transferring of the data form RAM to RAM for ex I
wanna transfer tha data 0xAA from the RAM location 0x80700000 to the
RAM location 0x80C00000 via DMA .

  I read the SDMA module of the processor datasheet for the OMAP3530.
In the data sheeet it is explained for the transferring of the image
from the RAM to RAM location.In my case I dont want to transfer the
image instaed I wanna simple transfer some 50 bytes of data via DMA.

  Can anyone please clarify my doubt and explain me how can I do the
DMA transfer.

Deva Kumar J

I've never tried and I don't think there is currently a user-space
interface (though I'd love to see one). I believe this can be done by
creating a tiny bit of code to expose the kernel dma functions as
system calls[2] to user space. The kernel includes the functions
defined in dma.h[1] and implemented in dma.c[3]. You can see examples
of how to use these functions in the kernel in the MMC driver[4]. If
you needed to share addresses between kernel and user space, that
would add an additional challenge. Exposing these functions would
almost certainly make your kernel insecure. I am not aware if you are
likely to generate exceptions using the DMA from user space.


This is possible to do, as i've exposed system kernel dma calls from
kernel space to user-space through a driver layer before - as Jason
mentioned, you'd need to tap the existing implementations for the
OMAP3 defined in those files - you'll also have to ensure that
physical addresses (to contiguous memory) are passed in from user-
space (unless you'd like to implement a scatter-gather list, but the
benefits of those outweigh their gains).


One more help I need, I want to do the DMA transfer in the u-boot
source. Suggest how can I do this in the u-boot.
Waiting for your reply.