Bogdan,

 

Did your application stop sending pages because of lwip stack
corruption?

 

Does the tcp_ip_thread still run?

 

Does the stellarisif_interrupt still fire and allocate pbufs correctly?

 

Finally, make sure you are assigning the proper linkoutput function to
your netif. It should lock the tcp_ip_core to prevent pbuf corruption.
If I remember correctly, luminary’s inteface code modifies the pbuf
queue directly from the transmit/low_level_output functions. Make sure
you have defined the proper protection mechanism on your “microkernel”. 

Andrew.

  _____  

From: bogdan rosandic [mailto:[email protected]] 
Sent: Monday, December 20, 2010 09:37
To: [email protected]
Subject: [lwip-users] lwIP & multitasking

 

HI all,

 

I am using Stellaris LM3S8962 evaluation board and I am trying out LwIP
stack working on top of my own microkernel.

I have implemented sys_arch.c so I could use LwIP with netconn API. I
built simple application which behaves like a simple web 

server which sends  page with dynamic content. I created html page in
such a way that browser keep sending requests each second after 

first request is made. At the moment  everything worked fine. I have ISR
which is called whenever ethernet controler receives or needs to send
some data.

This ISR signals a semaphore, and then highest priority task which is
blocked on that semaphore, is ready to run. I want to mention that I am
using stellaris

driver, so  my highest priority task calls
stellarisif_interrupt(&ntwrk_intrfc); function which is part of
mentioned stellaris driver. As a result 

tcpip thread (lowest priority) is woken and then it wakes task with
middle priority level which listens specified port for incoming
connections. This tasks also

refreshes page and sends it to client. My stellaris works at 8Mhz....

 

Because everything seemed fine at the beginning, I tried to start my
browser with lots of tabs, all requesting the same page from stellaris
web server.

After a while program ended up in usage or hard fault. Then I figured
maybe it was problem with stack sizes. So I allocated greater stacks for
specific tasks

(I saw in debugger that tcpip task needs the biggest stack) and program
executed well. Then I started more browser tabs, and after a while
application stopped sending pages.

No fault, just  stopped sending pages. Now my stack sizes are 128 words
except for tcpip stack which is greater.....

 

Now my application works for about an  hour, serving 25 tabs, and
according to wireshark having about 0.45Mbit/s traffic. After that it
just stops sending pages.

I searched for an error using debugger but it is very difficult since
problem doesn't appear when I am using step by step debugging, or when
program is running 

from breakpoint to breakpoint.   

 

So the question is, did someone have similar problem or can someone give
me a hint how to solve this? Is it normal to have some limit of highest
traffic allowed 

under this circumstances? I must say I am  beginner  when it comes to
lwIP and setting its options. Maybe it's lwIP options, or maybe it's
just my kernel .....

 

Please help, I am stuck for days.....

 

Thanks in advance!!!  

 

 

Bogdan

 


_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to