On 03.03.2018 16:26, JM wrote:
Hi thanks for the reply. My main loop consists of while(1);
only. Only the stack is running on the microcontroller and all
interrupts going into lwIP (Ethernet Rx and periodic timer)
So are you sure you enter lwIP functions only from one interrupt
priority?
With the webserver serving only internal pages, you might get off
with that well, but when adding more 'active' connections (TX
initiated from your own code) or external file system, beware of
concurrent execution here, even without an OS!
tcp_write: too long queue 65507 (max 50)
tcp_enqueue_flags: too long queue 65507 (max 50)
That very long queue is an obvious problem and I have a
feeling if I could track it down that would take care of it.
That very long queue is an underflow. And most of the time this
happens, it is because multiple execution contexts are active in
core code without locking. Not having an OS does not prevent this
from happening, interrupt levels can cause this, too.
Simon