Hi,
I posted this problem over in the SYS/BIOS forum, but this may be a more appropriate location. The issue we are having is with the StarterWare lwip that is included in the Industrial SDK version 8 (am335x_sysbios_ind_sdk_1.0.0.8.) The issue happens during the reception of IP packets via the interrupt call routine (here is the call tree):
CPSWCore0RxIsr-->lwIPRxIntHandler-->cpswif_rx_inthandler-->tcpip_input-->memp_malloc
In the memp_malloc function there is a call to "SYS_ARCH_DECL_PROTECT(old_level)" (memp.c). This call gets compiled into the SYS/BIOS function of sys_arch_protect() which attempts to use a SYS/BIOS GateMutex which is not allowed to be used during a Hardware interrupt. I have temporarily switched the sys_arch_protect to used interrupt disabling as a test, but this is not a true solution.
So although the problem is occurring within SYS/BIOS, the answer to may be with the way the StarterWare lwip implementation is used. Is there a better way for the memp_malloc to work with SYS/BIOS? I've included a screen snip as a reference.
Thanks,
John C.