Hi, Dirk you're right, I'm using LWIP with the NO_SYS flag set to true.
I'm somewhat confused, do I have two options? 1) Do a polling-like application that manages input/output without interrupts (I have no clue how to do this, should I follow the sample code?). 2) Send everything out when I get the ethernet input interrupt I really don't need any of the data I get from the receiver side of ethernet (other than getting the MAC address), could I skip any checking of that input? Best, Gary On 28 September 2016 at 12:44, Dirk Ziegelmeier <[email protected]> wrote: > A second way to do it, not so preferred by some peoples but worked for me, >> is to add critical >> >> Sections in code that call’s LwIP functions. Adding a critical section >> means that you block other >> >> Tasks for a short time. Especially the TCP task from running. It means >> that if you allocate a buffer from >> >> the LwIP pool until you do not Call exit from the critical section the >> TCP task will not run and therefore >> >> will not interfere. >> >> >> Depends on what you mean by "critical section". If this is disable/enable > interrupts, that only works if you don't use an OS. > > NoSys: > 1) Your ethernet MAC interrupt directly calls into lwIP to deliver RX > packets in IRQ context (this implies all your lwIP callback functions are > called in IRQ context). If you call into lwIP from your application code, > then yes, all you need to to is disable interrupts. If timers are involved, > even more locking code is needed to lock out timer IRQ and ethernet IRQ > from each other (assuming these may be nested). > 2) Use "mainloop" code: http://git.savannah.gnu.org/ > cgit/lwip.git/tree/doc/NO_SYS_SampleCode.c > > OS: > 1) Use lwIP core locking. Then you only need to aquire the lwIP core lock > using LOCK_TCPIP_CORE() / UNLOCK_TCPIP_CORE() > > before calling into lwIP. > 2) Use tcpip_callback() to get called back from TCPIP thread and do the > sending work there. > In both OS cases, take care of ethernet RX, you need to use tcpip_input() > as input function in netif_add() to make RX thread-safe. > > Dirk > > _______________________________________________ > lwip-users mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/lwip-users >
_______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
