> > 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
Message
Re: [lpc2000] tcpip
2006-01-16 by FreeRTOS Info
Attachments
- No local attachments were found for this message.