DSPRelated.com
Forums

problems with linking EDMA

Started by olaf636 October 20, 2003
hi ! i use the SPRA488c-samplecode for McBSP-transmit/receive with
EDMA and i tried to modify the code to link the EDMA to one another
and then to a NULL-link. these are the settings for the first edma:
hEdma1 = EDMA_open(EDMA_CHA_REVT0, EDMA_OPEN_RESET);
EDMA_configArgs (hEdma1,
EDMA_OPT_RMK(
EDMA_OPT_PRI_HIGH,
EDMA_OPT_ESIZE_32BIT,
EDMA_OPT_2DS_NO,
EDMA_OPT_SUM_NONE,
EDMA_OPT_2DD_NO,
EDMA_OPT_DUM_INC,
EDMA_OPT_TCINT_YES,
EDMA_OPT_TCC_OF(13),
EDMA_OPT_LINK_YES,
EDMA_OPT_FS_NO ),

EDMA_SRC_RMK(MCBSP_ADDRH(hMcbsp0, DRR)),
EDMA_CNT_RMK(0,xfer_size),
EDMA_DST_RMK((Uint32)edmaInbuff),
EDMA_IDX_RMK(0,0),
EDMA_RLD_RMK(xfer_size,hEdma12) );

and for the first link-edma:

hEdma12 = EDMA_allocTable(-1);
EDMA_configArgs (hEdma12,
EDMA_OPT_RMK(
EDMA_OPT_PRI_HIGH,
EDMA_OPT_ESIZE_32BIT,
EDMA_OPT_2DS_NO,
EDMA_OPT_SUM_NONE,
EDMA_OPT_2DD_NO,
EDMA_OPT_DUM_INC,
EDMA_OPT_TCINT_YES,
EDMA_OPT_TCC_OF(13),
EDMA_OPT_LINK_YES,
EDMA_OPT_FS_NO ),

EDMA_SRC_RMK(MCBSP_ADDRH(hMcbsp0, DRR)),
EDMA_CNT_RMK(0,xfer_size),
EDMA_DST_RMK((Uint32)edmaInbuff),
EDMA_IDX_RMK(0,0),
EDMA_RLD_RMK(xfer_size,hEdmadummy) );

but there will not be any second edma-transfer, just the first one. do
i have to re-init something ? i thought just linking were enough...?
SPRA636A is not helpfull, because my cpu craches during runtime and
the programer has used another syntax and "construction"

sincerely,

olaf




Olaf,

I think that you used hEdma12 before it has beed assigned
a value, or so it seem from the excerpt of your code. This
might correct the link problem:

// allocate an EDMA channel and a reload table

hEdma1 = EDMA_open(EDMA_CHA_REVT0, EDMA_OPEN_RESET);
hEdma12 = EDMA_allocTable(-1);

// init both tables

EDMA_configArgs (hEdma1, ...
EDMA_configArgs (hEdma12, ...

The other option is to init the tables with a zero second parameter
to the EDMA_RLD_RMK() macro and call EDMA_link (hEdma1, hEdma12) which
would link two transfers.

The other potential problem is the reload link in the second
parameter table: OPT_LINK=1 but I am not sure if the handle
hEdmadummy points to a valid address within EDMA's PRAM, e.g.
to the transfer termination table with all zero paramemters.

Hope this helps,

Andrew

> Date: Mon, 20 Oct 2003 14:33:19 -0000
> From: "olaf636" <>
> Subject: problems with linking EDMA
>
> hi ! i use the SPRA488c-samplecode for McBSP-transmit/receive with
> EDMA and i tried to modify the code to link the EDMA to one another
> and then to a NULL-link. these are the settings for the first edma:
> hEdma1 = EDMA_open(EDMA_CHA_REVT0, EDMA_OPEN_RESET);
> EDMA_configArgs (hEdma1,
> EDMA_OPT_RMK(
> EDMA_OPT_PRI_HIGH,
> EDMA_OPT_ESIZE_32BIT,
> EDMA_OPT_2DS_NO,
> EDMA_OPT_SUM_NONE,
> EDMA_OPT_2DD_NO,
> EDMA_OPT_DUM_INC,
> EDMA_OPT_TCINT_YES,
> EDMA_OPT_TCC_OF(13),
> EDMA_OPT_LINK_YES,
> EDMA_OPT_FS_NO ),
>
> EDMA_SRC_RMK(MCBSP_ADDRH(hMcbsp0, DRR)),
> EDMA_CNT_RMK(0,xfer_size),
> EDMA_DST_RMK((Uint32)edmaInbuff),
> EDMA_IDX_RMK(0,0),
> EDMA_RLD_RMK(xfer_size,hEdma12) );
>
> and for the first link-edma:
>
> hEdma12 = EDMA_allocTable(-1);
> EDMA_configArgs (hEdma12,
> EDMA_OPT_RMK(
> EDMA_OPT_PRI_HIGH,
> EDMA_OPT_ESIZE_32BIT,
> EDMA_OPT_2DS_NO,
> EDMA_OPT_SUM_NONE,
> EDMA_OPT_2DD_NO,
> EDMA_OPT_DUM_INC,
> EDMA_OPT_TCINT_YES,
> EDMA_OPT_TCC_OF(13),
> EDMA_OPT_LINK_YES,
> EDMA_OPT_FS_NO ),
>
> EDMA_SRC_RMK(MCBSP_ADDRH(hMcbsp0, DRR)),
> EDMA_CNT_RMK(0,xfer_size),
> EDMA_DST_RMK((Uint32)edmaInbuff),
> EDMA_IDX_RMK(0,0),
> EDMA_RLD_RMK(xfer_size,hEdmadummy) );
>
> but there will not be any second edma-transfer, just the first one. do
> i have to re-init something ? i thought just linking were enough...?
> SPRA636A is not helpfull, because my cpu craches during runtime and
> the programer has used another syntax and "construction"
>
> sincerely,
>
> olaf
>