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