Fitting Linux into a couple megs of memory is a tough task, especially if a secondary storage device isn't available. At the low end is where uClinux really shines, making it ideal for small, 32-bit embedded applications.
This tiny operating system is below most developers' radar because of its open-source nature; there are no licensing costs. A number of vendors have adopted uClinux for use with their chips or boards, but there's no shrink-wrapped version like its big brother, Linux. Custom versions and support are available from a wide variety of sources, including Arcturus Networks (www.arcuturusnetwork.com), SnapGear (www.snapgear.com), and Motorola's Metrowerks (www.metrowerks.com). It runs on a wide variety of 32-bit microprocessors and works well with flash-only devices. It fits comfortably in 2 Mbytes for flash memory and 4 Mbytes of RAM.
While uClinux is a derivative of Linux, it has a clear upgrade path to Linux. In fact, one of the most popular embedded libraries for uClinux, uClibc, also runs on Linux. Most uClinux projects can port easily to Linux if memory or processor requirements grow. The Linux heritage means uClinux should possess excellent networking and POSIX support. The TCP/IP stack supports IPv6, and its modular design handles minimal networking applications through complex router and firewall applications.
Real-time support is available through RTlinux (www.rtlinux.org) and RTAI (www.aero.polimi.it/~rtai). These are also used on Linux systems. They provide the submicrosecond latency necessary for many embedded applications.
Most uClinux tools are command-line-based, although there are some graphical tools, like the ddd graphical debugger. Most tools will be familiar to Linux developers. As with the majority of small operating systems, uClinux requires a cross-development environment. Debugging support such as JTAG or background debug depends on the chosen microprocessor. With an increasing number of standard 32-bit microcontrollers, uClinux seems to be a well suited option for embedded applications.