SO we are using
SYSBIOS 6.37.3.30
XDC 3.25.5.94
EDMA3 2.11.14
I am trying to use the EDMA3 but i am having weird problems. my code is aborting at edma3init. it doesn't abort INSIDE that routine, it aborts upon the call of that routine. like when i step into it. for some reason the linker gods aligned and it did not abort on me and i was able to accomplish a transfer. but then i rebuilt after making a minor change and it would abort at edma3init. this routine is coming from the libraries i am linking in so i did not write it.
what i want to know from start is do i have this project setup correctly for EDMA? is it in my project settings that is causing me to get these aborts? so here is what my setup is:
in my General->RTSC tab i have my edma3 checkbox checked with the most up to date edma3 i have installed
in my C6000 Linker->File Search Path->include library file i have:
"${EDMA3_LLD_INSTALL_DIR}\packages\ti\sdo\edma3\drv\sample\lib\c6748-evm\674\debug\edma3_lld_drv_sample.a674"
"${EDMA3_LLD_INSTALL_DIR}\packages\ti\sdo\edma3\rm\lib\c6748-evm\674\debug\edma3_lld_rm.a674"
"${EDMA3_LLD_INSTALL_DIR}\packages\ti\sdo\edma3\drv\lib\674\debug\edma3_lld_drv.a674"
where EDMA3_LLD_INSTALL_DIR is a variable i found but i cannot find where it is defined. however the project links without issue so i assume it points to whatever EDMA version i have checked in the RTSC tab
at the top of my edma c file i have
#include <ti/sdo/edma3/drv/edma3_drv.h> /* EDMA3 defines */
extern EDMA3_DRV_Handle edma3init(unsigned int ,EDMA3_DRV_Result *);
static EDMA3_DRV_Handle hEdma;
here is the routine i use to call the edmainit:
BOOL InitializeEDMA3(void)
{
BOOL retBOOL = FALSE;
EDMA3_DRV_Result Error;
memset(hEdma, 0,sizeof(hEdma));
hEdma = edma3init(0, &Error);
if(Error == 0)
{
retBOOL = TRUE;
}
return retBOOL;
}
in the app.cfg file i have the event combiner enabled an event group 0 i have going to HWI 11 and event group 1 i have going to HWI 12. my aborts are happening, i believe, is because i have the exception mode handling memory protection
my gel file has every instance of the EDMA enabled in PSC which is in PSC0: 0,1,2 and in PSC1: 0, 21
so did i miss something? did i do something wrong? any idea why i would abort just on the CALL to the init routine (as if it linked wrong)? why would i work for a little while then a little code shuffling cause it to blow up again?