Hi,
My customer refers to below LwIP demo example.
http://git.ti.com/hercules_examples/hercules_examples/trees/master/Application/LwIP
He wants to implement LwIP code in his system and has a few questions.
In below file,
\hercules_examples-master\Application\ActiveWebserver\1.1.0\example\hdk\src\lwip_main.c
At line#500 and after, there are IRQ interrupt handlers.
He wants to use FIQ instead of IRQ to handle these functions.
/*
** Interrupt Handler for Core 0 Receive interrupt
*/
volatile int countEMACCore0RxIsr = 0;
#pragma INTERRUPT(EMACCore0RxIsr, IRQ)
void EMACCore0RxIsr(void)
{
countEMACCore0RxIsr++;
lwIPRxIntHandler(0);
}
/*
** Interrupt Handler for Core 0 Transmit interrupt
*/
volatile int countEMACCore0TxIsr = 0;
#pragma INTERRUPT(EMACCore0TxIsr, IRQ)
void EMACCore0TxIsr(void)
{
countEMACCore0TxIsr++;
lwIPTxIntHandler(0);
}
void IntMasterIRQEnable(void)
{
_enable_IRQ();
return;
}
void IntMasterIRQDisable(void)
{
_disable_IRQ();
return;
}
Quetions
1) There are IntMasterIRQEnable() and IntMasterIRQDisable() functions.
According to customer, it seems they are called within IRQ ISR.
What is a reason why IRQ is enabled / disabled inside ISR?
2) Customer wants to use FIQ, so enabling / disabling IRQ inside FIQ ISR are not good.
How these code should be modified to use FIQ instead of IRQ?
Thanks and reagrds,
Koichiro Tashiro