custom 6748 board
SYSBIOS 6.37.3.30
XDC 3.25.5.94
EDMA3 2.11.14
my code is always crashing at EDMA3_DRV_requestChannel, well more specifically the abort happens when i step over that routine call but it actually happens in EDMA3_RM_allocResource. i apparently cannot step into the routines to debug them. the abort is a write violate that happens because i have the exception module handle memory protection.
i am following example code in the edma code. i am following the example pretty closely but i can't figure out what is crashing the system. this is my first attempt at getting the edma3 working so i have no good code to base anything on. any ideas? here is my code snippet (this is being run from a task)
...
memset(hEdma,0,sizeof(hEdma));
Semaphore_Params_init(&semParams);
Error = edma3OsSemCreate(0, &semParams, &AppSemHandle1);
if((Error != EDMA3_DRV_SOK) || (AppSemHandle1 == NULL))
{
printf("Error initializing the Application Semaphore handle\n");
return;
}
Error = edma3OsSemCreate(0, &semParams, &AppSemHandle2);
if((Error != EDMA3_DRV_SOK) || (AppSemHandle2 == NULL))
{
printf("Error initializing the Application Semaphore handle\n");
return;
}
hEdma = edma3init (0, &Error);
if (EDMA3_DRV_SOK != Error)
{
/* EDMA Initialization Failed */
//result = edmaResult;
asm(" NOP");
}
else
{
EDMA3_DRV_SyncType syncType = EDMA3_DRV_SYNC_A;
EDMA3_DRV_Result result = EDMA3_DRV_SOK;
EDMA3_DRV_PaRAMRegs paramSet = {0,0,0,0,0,0,0,0,0,0,0,0};
uint32_t chId = 0;
uint32_t tcc = 0;
int i;
//uint32_t count;
//uint32_t Istestpassed = 0u;
uint32_t numenabled = 0;
uint32_t BRCnt = 0;
int srcbidx = 0, desbidx = 0;
int srccidx = 0, descidx = 0;
memset(temp1, 0xEA, sizeof(temp1));
memset(temp2, NULL, sizeof(temp2));
Cache_wb(temp1, sizeof(temp1), Cache_Type_ALL, FALSE);
/* Setup for Channel 1*/
tcc = EDMA3_DRV_TCC_ANY;
chId = EDMA3_DRV_DMA_CHANNEL_ANY;
/* Request any DMA channel and any TCC */
if (result == EDMA3_DRV_SOK)
{
result = EDMA3_DRV_requestChannel (hEdma, &chId, &tcc,
(EDMA3_RM_EventQueue)0,
&callback1, NULL);
}
...