From: terzakis on

Hi all.
I am trying to use the edma channel of my c6713 dsk, in order to take
8-bit data, from a daughter card (address 0xA0000000) and store them in
the sdarm (address 0x80000000).
Can anybody tells me what i have to do?
Which functions i have to use?
I have written a code based on the data sheets but unfortunately it
doesn't work at all.
I know that it is a simple problem but i am new in the world of DSP's and
i need help.
Regards Manos...
From: Brad Griffis on
terzakis wrote:
> Hi all.
> I am trying to use the edma channel of my c6713 dsk, in order to take
> 8-bit data, from a daughter card (address 0xA0000000) and store them in
> the sdarm (address 0x80000000).
> Can anybody tells me what i have to do?
> Which functions i have to use?
> I have written a code based on the data sheets but unfortunately it
> doesn't work at all.
> I know that it is a simple problem but i am new in the world of DSP's and
> i need help.
> Regards Manos...

You may want to try downloading the c6000 chip support library (CSL):

http://focus.ti.com/docs/toolsw/folders/print/sprc090.html

You can get the library itself as well as the API guide at the link
above. The DAT module will allow you to do a memory-to-memory transfer
using the DMA. DAT_copy is the function you'd use.

For a better understanding of the processor you may want to try it
yourself by writing the appropriate code. Using the EDMA reference
guide you would need to first setup an entry in the Parameter RAM which
lists things like src addr, dst addr, count, etc. Once that's
completely setup you can then kick off the transfer by writing to the
corresponding bit of the event set register.

I believe there are also books out there that come with CDs full of
various programming examples and labs for learning to program on these
DSKs. You may want to try one of those out if you're looking for some
structured learning.

Good luck!

Brad
From: Andreas Huennebeck on
terzakis wrote:

> I am trying to use the edma channel of my c6713 dsk, in order to take
> 8-bit data, from a daughter card (address 0xA0000000) and store them in
> the sdarm (address 0x80000000).
> Can anybody tells me what i have to do?
> Which functions i have to use?

This is a stripped down code example which runs on a C64xx:

uint32_t startTransfer(const uint32_t* src, uint32_t* dest, uint32_t frames, uint32_t elements)
{
uint32_t options = EDMA_OPT_RMK(
EDMA_OPT_PRI_MEDIUM, // priority, must be lower than FIFO DMA
EDMA_OPT_ESIZE_32BIT, // set 32 Bit transfer siuze
EDMA_OPT_2DS_YES, // this is a 2D source
EDMA_OPT_SUM_INC, // increment source pointer
EDMA_OPT_2DD_YES, // this is a 2D destination
EDMA_OPT_DUM_INC, // increment destination pointer
EDMA_OPT_TCINT_YES, // enable transfer complete indication
1, // dma Number
EDMA_OPT_TCCM_OF(0), // no 6 Bit transfer complete code
EDMA_OPT_ATCINT_NO, // disable alternate transfer complete intr.
EDMA_OPT_ATCC_OF(0), // -- " --
EDMA_OPT_PDTS_DISABLE, // disable peripheral device transfer for src
EDMA_OPT_PDTD_DISABLE, // disable peripheral device transfer for dest
EDMA_OPT_LINK_NO, // no DMA chaining
EDMA_OPT_FS_YES); // set frame synchronisation
// Start DMA transfer:
EDMA_qdmaConfigArgs(options, (uint32_t)src, OR_HW(frames-1, elements),
(uint32_t)dest, 0 /*FRMIDX|ELEIDX*/);

Don't ask me any more questions about it. A lot of documentation about DMA
can be found in TIs manuals.

bye
Andreas
--
Andreas H?nnebeck | email: acmh(a)gmx.de
----- privat ---- | www : http://www.huennebeck-online.de
Fax/Anrufbeantworter: 0721/151-284301
GPG-Key: http://www.huennebeck-online.de/public_keys/andreas.asc
PGP-Key: http://www.huennebeck-online.de/public_keys/pgp_andreas.asc