This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DaVinci-ARM-DMA

Hello,everyone:
     I have a question and I need your help.
     I don't talk  how to use DMA on DSP , that's very easy.
     My question is : on  the  ARM9 side, and the operating system is Montavista Linux ,I want to copy  date from a block of memory to another block of  memory , people  usually use memcpy() to finish it.But  that's not   high efficiency, I want to do it   efficiently .For example, can I copy the date from  a block of memory to another block of memory  in Linux  using DMA ?How should I do this ?Or,do you have other  good efficiency ideas to finish this job efficiently?
 Thanks!
                                             huolang
                                             China

  • What platform are you using (DM6446, DM355...)?

    For most DaVinci platforms, there is a DMA Linux kernel driver that is used by other kernel drivers (OSS sound driver, MMC).  Please note that this driver is only accessible by other kernel drivers and not by user level applications.

    The DMA driver is located at .../ti-davinci/arch/arm/mach-davinci

    The OSS sound driver is located at .../ti-davinci/sound/oss

    The MMC driver is located under .../ti-davinci/drivers/mmc

  • Thanks very much .

    The platform I am using is DM6446.

    My meaning is this: can I use DMA as a   perpheral ,in  other words, I want to using DMA just like other  devices such as:audio ,video ......        So, I can  use open(),

    read(), write(), close() ,and ioctl()  etc  in  my applications .   If  I can  finish this job, I can copy   a block date  from  memory  to another block in memory  using DMA  instead of using  memcpy() .It's  more  efficiently . How  should I do ?  Is it need  I write a interface for the DMA device and  make a  node  /proc/dma ?

  • The DMA driver provided for DM6446 does not expose user level APIs; therefore, no open(), read(), write(), ioctl() APIs are available.  If you want to expose these APIs, you would have to port the DMA driver provided into a Linux character driver architecture.