Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2000] tcpip

2006-01-16 by FreeRTOS Info

> > Paul what where the big differences between lwIP and uIP?
>
> lwIP has a sockets-like API, uIP doesn't.  lwIP has many more
> TCP/IP-related features than uIP does (windowing, for example) and will
> potentially have a better throughput for applications that are streaming
> data.  uIP has a single segment in flight at any time hence falls foul
> of delayed ACK implementations of TCP/IP (cf Windows at least).  uIP
> applications are harder to write than lwIP apps as uIP does not use
> threads (but there is something called protothreads that you *can* use
> to make life easier).  lwIP is bigger in RAM and code size, uIP is small
> in both.  uIP runs a full web server on MSP430s in 8K of code with a
> fully-compliant stack and less than 1K of memory (and that's with a big
> packet buffer).
>
> If you have space issues, uIP is the way to go.  If you don't, then lwIP
> is more the thing.


Just to demonstrate Pauls points...

uIP is a really nice, small and easy to understand system.  It's major
disadvantage is that only one packet can be outstanding at any one time.
This is less of a problem if you have control over both ends of the
communication, but can make streaming data to (for example) Windoze rather
slow.

The following page generates a lot of dynamic data and sends it as one
packet (this uses a non standard port number so if you are on a company
network or behind certain firewalls it will not load):

http://82.32.114.142:47822/cgi/rtos

It should load quickly.  On the other hand the following page generates
dynamic data one line at a time, and sends each line individually.  You
should find this then loads much more slowly as Windoze delays acknowledging
each packet (same firewall restrictions apply).

http://82.32.114.142:47822/cgi/tcp

Therefore, uIP can work with very small buffers but this then restricts the
throughput you can achieve.  Like everything it is a trade off.


lwIP is a much fuller implementation that removes this restriction at the
expense of more CPU cycles and more RAM.  Also the driver required for the
NIC is more complex.  If you look at the SAM7X emac drivers for the
respective FreeRTOS uIP and lwIP demos you will see the former is much
simpler due to the simple buffer management in uIP.

Regards,
Richard.

http://www.FreeRTOS.org

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.