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.

CSL DAT: Problem using DAT_fill

Hi

I'm trying to use the CSL_DAT module to quickly transpose an array for a 2D FFT. To get into this, I want to run a simple application that fills an array with a constant value.
My developpment environement:

CCS V3.3
bios_5_41_10_36
dvsdk_1_11_00_00
edma3_lld_01_10_00_01 => im using the example files located in "C:\dvsdk_1_11_00_00\edma3_lld_01_10_00_01\examples\CSL2_DAT_DEMO", because the header-files provided in bios-directory doesn't support DM6437

I added following source-files to my project, as it is done in the example project above: csl_dat.c, csl_dat_edma3lld.c, dat_edma3lld_biosadapter.c

Here's what i coded:
// main.c

/* Include the legacy csl 2.0 dat header */
#include "csl_dat.h"

/* Include EDMA3 low level driver specific implementation APIs for dat */
#include "EDMA/csl2_dat_edma3lld.h"


extern EDMA3_DRV_Handle hEdma;
extern EDMA3_DRV_Handle DAT_EDMA3LLD_hEdma;

Int main(Int argc, String argv[])
{
   ...
   ...

    if (!DAT_EDMA3LLD_init(NULL))
    {
        printf("Error initializing EDMA3 low level driver\n");
        exit();
    }
    else
    {
        DAT_EDMA3LLD_hEdma = hEdma;

    }
}

// task.h
/* Include the legacy csl 2.0 dat header */
#include "csl_dat.h"

#pragma DATA_ALIGN(tempReg, 8);
uint8 tempReg[104];

uint32 fillValue[2] = {0x12341234,0x12341234};
uint32 *fillValuePtr = fillValue;

void task()
{
    int wait;

    DAT_open(DAT_CHAANY,0,0);
    // HWI_enable();
    wait = DAT_fill(tempReg, 104, fillValuePtr);
    DAT_wait(wait);
    DAT_close();
}

As you can see, i want to fill an array with 104 Elements. The problem is, that the module stops after 72 bytes. If I write 112 into the byteCount, 80 bytes are beeing transferred.
If i run the same DAT_fill function in a second loop, all the data is transferred correctly, even if I change the destination address or the fill value. It seems that only the first call is executed incompletely.

Strange... somehow :) I didn't try the copy functions yet.

Thanks in advance
hitsch