Hi,
We are currently porting over our StarterWare project to SYS/BIOS and have most things running except for the hardware interrupts. The first we are trying is the EDMA completion interrupt. We replaced this sequence:
----------------------------------------------------------------------------------------------------------
/* Registering EDMA3 Channel Controller 0 transfer completion interrupt. */
IntRegister(SYS_INT_EDMACOMPINT, Edma3ComplHandlerIsr);
/* Setting the priority for EDMA3CC0 completion interrupt in AINTC. */
IntPrioritySet(SYS_INT_EDMACOMPINT, 0, AINTC_HOSTINT_ROUTE_IRQ);
/* Enabling the EDMA3CC0 completion interrupt in AINTC. */
IntSystemEnable(SYS_INT_EDMACOMPINT);
----------------------------------------------------------------------------------------------------------
With this one:
void DMA_edma3_int_config(void)
{
Hwi_Params hwiParams_edma;
Hwi_FuncPtr hwiFuncPointer = NULL;
Hwi_Handle tempHwiHandler_edma;
hwiFuncPointer = Edma3ComplHandlerIsr;
Hwi_Params_init(&hwiParams_edma);
// set the argument you want passed to your ISR function
hwiParams_edma.arg = 1;
hwiParams_edma.priority = 0;
tempHwiHandler_edma = Hwi_create(SYS_INT_EDMACOMPINT, hwiFuncPointer, &hwiParams_edma, NULL);
if (tempHwiHandler_edma == NULL)
{
UARTprintf("Error installing EDMA interrupt, error code %d\n", tempHwiHandler_edma);
}
Hwi_enableInterrupt(SYS_INT_EDMACOMPINT);
}
If we call DMA_edma3_int_config() before starting SYS/BIOS then soon after our main task is running the system will crash. When I say crash I mean lcd goes funky and all debug control is lost (No SYS/BIOS error codes either.) If we comment the DMA_edma3_int_config() call out, the main task runs fine. We never hit the ISR breakpoints so at first glance it seems just having a Hwi_create() call wigs out SYS/BIOS.
Is there anything in the call that seems incorrect of do we need to set up some type of memory for the HWI (some special stack?)
Thanks for any help,
John C.