Quantcast
Channel: Processors forum - Recent Threads
Viewing all articles
Browse latest Browse all 17527

OMAP-L137 - ARM + DSP system - DSPLINK + EDMA

$
0
0

Dear Sir/Madam,

I have a system with DSP and ARM. ARM and DSP exchange some data via two channels build by DSPLINK between them. When I want to configure EDMA on DSP side, EDMA3 driver creation by EDMA3_DRV_create function is halted and the execution does not exit. By the way, when I run the DSP code on Code Composer Studio without ARM involved all thing is OK and the EDMA is configured. The .tcf file is uploaded.

My memory configuration is as follows:


MEMORY CONFIGURATION

name       origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
IRAM                       11808000 00030000 00000cf0 0002f310 RWIX
CACHE_L2           11838000 00008000 00000000 00008000 RWIX
CACHE_L1P         11e00000 00008000 00000000 00008000 RWIX
CACHE_L1D         11f00000 00008000 00000000 00008000 RWIX
L3_CBA_RAM       80000000 00020000 00020000 00000000 RWIX
SDRAM0                c2000000 01e00000 00e3395c 00fcc6a4 RWIX
RESET_VECTOR c3e00000 00000080 00000000 00000080 RWIX
SDRAM                   c3e00080 000fff80 000e9d8b 000161f5 RWIX
DSPLINKMEM       c3f00000 00030000 00000000 00030000 RWIX
POOLMEM              c3f30000 000d0000 00000000 000d0000 RWIX

My code to configure EDMA3 is as follows:

EDMA3_DRV_Result edma3Result = EDMA3_DRV_SOK;
;EDMA3_DRV_GblConfigParams *globalConfig = &sampleEdma3GblCfgParamsOMAPL137; //set global config to defaults in sample Params (located in bios_edma3_drv_sample_OMAPL137_cfg.c)
EDMA3_RM_MiscParam miscParam; // used in DRV_create() function to specify master/slave
EDMA3_DRV_InitConfig initCfg;
EDMA3_DRV_InstanceInitConfig *instanceConfig = &sampleInstInitConfigOMAPL137; // located in bios_edma3_drv_sample_OMAPL137_cfg.c
initCfg.isMaster = TRUE;
initCfg.regionId = (EDMA3_RM_RegionId)1u; // user must specify region (LLD/DRV does not support "global" region)
initCfg.drvSemHandle = &OsSem; // OsSem added statically in the .tcf file with an initial count of 1*/
initCfg.drvInstInitConfig = instanceConfig; // device-specific configuration - resources owned by region 1
initCfg.gblerrCb = NULL; // callback function to catch channel controller errors such as TCC error, queue threshold exceeded, etc.
initCfg.gblerrData = NULL; // any data required by the error callback function

miscParam.isSlave = FALSE; //ARM + DSP, specify who is the master, single-chip = use FALSE

edma3Result = EDMA3_DRV_create(edma3InstanceId, globalConfig, (void *)&miscParam); //the execution is stopped at this point

 (Please visit the site to view this file)I would be very very thankful if somebody can help me.

Regards,

J.J.

 


Viewing all articles
Browse latest Browse all 17527

Trending Articles