Home
About Contiki
Download
Instant Contiki
Install and Compile
Documentation
Publications and Talks
Mailing lists
Changelog
uIPv6 FAQ
Statistics
Visitors: 1611860
Article Categories
Current Events
Developers
Events
News
Perspective
Platforms
Projects
Tutorials
All
User Menu
Profile
Login
Syndicate
The History of uIP Print
Written by Adam Dunkels, Monday, 15 January 2007

Image
The uIP embedded TCP/IP stack is not only used in Contiki but also in hundreds of embedded devices on earth, in space, and on the seven seas. But it all started with a Lego brick.

After developing and releasing the lwIP TCP/IP stack in late 2000, I used to get (and still get) quite a few emails asking me question about embedded systems and TCP/IP. One day I got an email from Olaf Christ, a German student of robotics, asking me if lwIP would be possible to run on a Lego Mindstorms, a microcontroller-equipped Lego brick. Unfortunately, the memory footprint of lwIP would not permit it to fit the 32 kilobytes of RAM that the Lego Mindstorms had (it didn’t have any user-accessible flash ROM). So I told Olaf that lwIP wouldn’t fit.

However, I had been thinking about an alternative TCP/IP software architecture for quite some time; one that would require dramatically less ROM and RAM than lwIP. I sat down for an hour or two and implemented the new architecture and ended up with the first version of uIP with a code footprint of less than two kilobytes and a RAM requirement of a few hundred bytes. It only supported a single TCP connection at this point and didn’t implement the full TCP state machine. But it was able to answer pings, serve web pages and support a Telnet session.

I sent an email to Olaf telling him that I had written a new TCP/IP stack which would fit the tight memory requirements of the Lego Mindstorms and I released uIP as open source software on the web. A few months later Olaf had ported this version of uIP to the Lego Mindstorms and on January 28th 2002 he broke the news that it was now possible to connect a Lego brick to the Internet. This made headlines all around the world, and not only in technology-related publications.

I continued to work on uIP and after a while I realized that it was actually possible to implement TCP following the RFC specifications in a very small amount of space. This was contrary to the general belief that a small TCP/IP stack would not be able to fulfill the RFC requirements. I published a paper on this at Mobisys 2003 in San Francisco: Full TCP/IP for 8-bit Architectures

Today uIP is very widely used in embedded products from a large number of companies such as GE, Cisco, and NASA. It is used in space, inside the earth, and on the seven seas. But it all started with an Internet enabled Lego brick.

 
< Prev   Next >

Adam Dunkels (contact)

Contiki Development Microblog