Brief looks at the various embedded Linux projects and applications.
Because Linux is openly and freely available in source form, a great many variations and configurations of Linux distributions have evolved in order to match the needs of a broad range of markets and applications. There are implementations ranging from handheld devices including PDAs and cell phones, to Internet appliances, thin clients, firewalls, telephony infrastructure equipment and even supercomputer clusters. There are small-footprint versions and real-time enhanced versions. And despite the origins of Linux as a PC operating system, there are now ports to numerous non-X86 CPUs, with and without memory management units, including PowerPC, ARM, MIPS, 68K and even microcontrollers. And there's more coming, all the time!
One of the most interesting characteristics about embedded Linux, is the abundance of choice. Even for a given architecture, such as PowerPC, there tends to be an abundance of available alternatives. So, how do you decide which distribution to use? That depends.
First, it's important to realize that all Linux distributions are, more or less, variations on the same theme. That is, they tend to be collections of the same basic components, including the Linux kernel (of course), drivers, command shells (command processors), GUI and windowing frameworks, utilities and libraries.
So, what makes them different? The distinctions between distributions frequently center around which of the many hundreds of Linux utilities are included, what modules or utilities (both open-source and proprietary) are added, kernel patches and modifications, and how the installation, configuration, maintenance and upgrade process is managed. How easy is it, for example, to build a small-footprint Linux system that closely matches your application's unique requirements?
Then there's the question of proprietary open-source software. This might be an important philosophical issue for you or your company. You (or your company) may want to restrict your Linux-related activities to using exclusively open-source software so there are no licensing restrictions or royalty requirements, and so that you can supply source code to your customers. Or, you might prefer a more pragmatic approach, using (and sometimes licensing) whatever software components best match your application's needs—whether proprietary or open-source.
Either way, whether you decide to use pure open source, or to mix open and proprietary software components, using Linux in embedded applications is unlikely to be totally “free” of costs. You'll either invest resources to create your own implementation, money for tools and licensed components, or pay for outside services and support.
That said, there are certainly a wide variety of excellent open-source tools and utilities that you can download free of charge; and, there are also excellent proprietary tools and utilities that you would need to license or purchase. Then, too, bear in mind that the companies that offer “commercial” embedded Linux distributions generally possess a high level of expertise and have well-trained staff ready and waiting to assist you in your project. Paying money to one of the “commercial” embedded Linux suppliers can have many advantages, including development tools, useful utilities—and, of course, support. The proprietary embedded Linux suppliers' companies are actively investing in developing tools and services to differentiate their Linux offerings from the pack, and (or) to advance their standing as a prospective partner for companies building embedded applications that will have Linux inside. In many cases, they are also contributing to the overall pool of open-source software.
Taken as a whole, there are a great many options—both open-source and proprietary—that fall into these general areas:
Tools to automate and simplify the process of generating a Linux configuration that is tuned to a specific embedded system's requirements.
Graphical user interfaces (GUIs), windowing environments and browsers that vary in size, appearance, features and capabilities.
Drivers and utilities that support the specific needs of a diverse range of applications including telephony equipment, multimedia devices, mobile computing, wireless capabilities and more.
Linux kernel enhancements and add-ons that support the “hard”, “firm”, or “soft” real-time performance requirements of such applications as streaming media, IP telephony, machine control, etc.
What follows, are brief descriptions of many of the currently available commercial and noncommercial sources for embedded Linux solutions. Bear in mind that new projects and products come into being on an almost daily basis. For this reason, LinuxDevices maintains a set of continually updated on-line embedded Linux Quick Reference Guides that are available for free public access.
Coollogic: Coollinux—Coollinux AE (Appliance Edition) combines the power of embedded Linux and Java technology to deliver an operating system for the next generation of Internet appliances. http://www.coollogic.com/.
Coventive: XLinux—fully featured embedded Linux kernel that can be configured to as little as 143KB for information appliances and embedded devices. Support: 586, 686, MediaGX, STPC, StrongARM, SH3/SH4, PA-RISC, ARM-7 and more. http://www.coventive.com/.
Esfia: RedBlue Linux—an embedded Linux distribution for wireless communication solutions, derived from the prerelease Linux 2.4 kernel. It has a typical kernel, footprint is 400K bytes and it supports processors with or without an MMU. http://www.esfia.com/.
FSMLabs: RTLinux—FSMLabs provides a real-time Linux distribution based on RTLinux technology in conjunction with a Linux kernel and associated software. MiniRTL is a small-footprint (fits on one floppy) implementation for resource-constrained embedded applications. http://www.fsmlabs.com/.
KYZO: PizzaBox Linux—a Linux- and Samba-based file, print and CD server designed to run from 6MB of Flash ROM on a 486 (or higher) CPU. http://www.jrcs.co.uk/.
Lineo: Embedix—an embedded Linux-based software solution that is engineered specifically for the unique speed, memory and storage requirements of embedded devices. Supports a wide range of CPUs with and without MMUs, including X86, PowerPC, ARM, MIPS and more. Includes support for small-footprint, real-time (based on a choice of RTAI or RTLinux) and high-availability solutions. http://www.lineo.com/.
LynuxWorks: BlueCat—a distribution of open-source Linux, enhanced to meet the requirements of embedded developers, engineered to allow configuration to accurately match the requirements of embedded development from small devices to large-scale multi-CPU systems, and high-availability applications. Supports a wide range of CPUs including X86, PowerPC, ARM, MIPS and more. http://www.lynuxworks.com/.
Mizi: Linuette—a Mobile Linux OS that provides components, development tools and a specialized kernel for mobile devices, designed to satisfy the small size requirements of the SmartPhone market. The target hardware environment is an 18MHz ARM7 processor, 240x120 pixel LCD display, touch screen and serial interface. The OS requires just 2MB of DRAM and 4MB of Flash memory. http://www.mizi.com/en/.
MontaVista: Hard Hat Linux—the MontaVista Software Hard Hat Linux Cross Development Kit targets a broad array of embedded CPU architecture boards and system-level platforms for Internet appliances, portable devices, networking equipment, telephony interfaces, or other embedded and pervasive applications. http://www.mvista.com/.
PalmPalm: Tynux—an embedded Linux solution optimized for Internet appliances including MP3 players, video players, Internet TVs, PDA/cell phones, Internet phones, video conferencing equipment, video phones, etc. http://www.palmpalm.com/.
REDSonic: RedIce-Linux—a real-time Linux distribution that provides several enhancements to real-time performance including RTAI as well as enhancements to the Linux kernel's scheduler and preemption algorithms. http://www.redsonic.com/.
TimeSys: Linux/RT—a real-time Linux distribution that offers multiple means to improve real-time performance, including a resource kernel, RTAI, Linux kernel scheduler, preemption and quality-of-service enhancements. http://www.timesys.com/.
ART Linux—a real-time extension to Linux (developed by Youichi Ishiwata) which was inspired by RTLinux but which, according to its developer, “offers certain advantages.” http://www.etl.go.jp/etl/robotics/Projects/ART-Linux/.
Embedded Debian Project—the goal of the Embedded Debian Project is to make Debian GNU/Linux a natural choice for embedded Linux. http://www.emdebian.org/.
ETLinux—a complete Linux distribution designed to run on small industrial computers, especially PC/104 modules. http://www.etlinux.org/.
KURT—a real-time Linux implementation that allows scheduling of events with a resolution of tens of microseconds. Based at the University of Kansas. http://www.ittc.ukans.edu/kurt/.
Linux Router Project—a “networking-centric micro-distribution” of Linux that makes it easy to build/maintain routers, access servers, thin servers, thin clients, network appliances and embedded systems. LRP can fit on a single floppy. http://www.linuxrouter.org/.
Linux/RK—a “resource kernel” enhancement to Linux based on a loadable kernel module that provides timely, guaranteed and enforced access to system resources for applications. Based at Carnegie Mellon University. www.cs.cmu.edu/~rajkumar/linux-rk.html.
LOAF—“Linux on a Floppy” distribution that runs on 386s and is an implementation of Linux consisting of the kernel and a bunch of free utilities. LOAF supports various network protocols including the lynx browser, ftp, Telnet and ssh. http://loaf.ecks.org/.
Linux-SRT—an extension to the Linux kernel that improves the performance of “soft real-time” applications such as multimedia but not suitable for the critical timing requirements of hard real-time apps, like controlling space shuttles or nuclear reactors. http://www.uk.research.att.com/~dmi/linux-srt/.
Linux-VR—the goal of this project is to support Linux on NEC VR series devices, most of which were originally designed to run Windows CE-based handheld computers. http://www.linux-vr.org/.
uClinux—a derivative of the Linux 2.0 kernel intended for microcontrollers without Memory Management Units (MMUs). Supports a growing list of processors including Motorola DragonBall (M68EZ328), M68328, M68EN322, ColdFire, QUICC; ARM7TDMI; MC68EN302; Axis ETRAX; Intel i960; PRISMA; Atari 68K; and more all the time! http://www.uclinux.org/.
uLinux (a.k.a. muLinux)—a “full-configured, minimalistic, almost complete, application-centric tiny distribution” of Linux, made in Italy, that fits on a single floppy. http://sunsite.auc.dk/mulinux/.
PeeWeeLinux—a small Linux distribution aimed at embedded devices. The distribution attempts to make the configuration and installation of a Linux operating system on an embedded platform as painless as possible. http://www.peeweelinux.com/.
QLinux—a Linux kernel implementation that provides Quality of Service (QoS) guarantees for soft real-time Linux performance in applications such as multimedia, data collection, etc. Based at the University of Massachusetts. http://www.cs.umass.edu/~lass/software/qlinux/.
RED-Linux—a real-time version of Linux that implements short kernel blocking time, quick task response time, a modularized and runtime replaceable CPU scheduler and a general scheduling framework. Based at the University of California, Irvine. http://linux.ece.uci.edu/RED-Linux/.
RTAI—a comprehensive Real-Time Application Interface usable both for uniprocessors (UPs) and symmetric multiprocessors (SMPs) that allows the use of Linux in many hard real-time applications. As an option, RTAI's “LXRT” allows the control of real-time tasks, using all of RTAI's hard real-time system calls from within Linux memory-protected user space, resulting in soft real time combined with fine-grained task scheduling. The RTAI project is based at the Dipartimento di Ingegneria Aerospaziale Politecnico di Milano (DIAPM). AtomicRTAI is a small-footprint implementation for resource-constrained embedded applications. http://www.rtai.org/.
RTLinux—a hard real-time mini operating system that runs Linux as its lowest priority execution thread. The Linux thread is made completely preemptive so that real-time threads and interrupt handlers are never delayed by non-real-time operations. The latest version of RTLinux supports user-level real-time programming. MiniRTL is a small-footprint (fits on one floppy) implementation for resource-constrained embedded applications. http://www.rtlinux.com/.
ThinLinux—a Linux distribution for embedded and dedicated applications, designed to be run on minimal Intel and PC-compatible hardware. http://www.thinlinux.org/.
Century Software: Microwindows PDA Operating Environment—a fully functional screen-top, web browser, terminal emulator, pop-up keyboard and handwriting recognition system as the basis for development and execution of Linux-based applications for the iPAQ and other PDAs. http://embedded.centurysoftware.com/.
Lineo: Embedix UI—a low footprint, HTML-based user-interface solution for embedded devices. Provides an easy way to create an aesthetically pleasing interface while adding functionality in a wide variety of devices; it is well suited for controlled-content embedded devices including webpads, information appliances, kiosks, screen phones, set-top boxes, point-of-sale terminals, home entertainment devices, industrial automation, etc. http://www.lineo.com/.
Compaq: The Open Handheld Program—Compaq established the Open Handheld Program in order to stimulate innovation and research on handheld devices (e.g., PDAs). The effort was seeded with the results of the earlier Compaq “Itsy” pocket computer project. A developmental Linux port for the Compaq iPAQ is currently available for download. http://www.handhelds.org/.
The Microwindows Project—an open-source project aimed at bringing the features of modern graphical windowing environments to smaller devices and platforms. Microwindows applications are built and tested on the Linux desktop, as well as cross-compiled for the target device. http://www.microwindows.org/.
The TinyX Project—a small footprint X Windows system server implementation for embedded systems. It was developed by Keith Packard of the XFree86 Core Team, sponsored by SuSE. The goal was to create something that would work well in a small memory footprint and, importantly, be robust in near out-of-memory situations. Typical X Windows system servers based on TinyX can fit on less than 1MB in X86 CPUs. http://www.xfree86.org/
Transvirtual Technology: PocketLinux PDA Framework—a Linux-based PDA software environment that integrates Kaffe (a “clean room” implementation of Java) with embedded Linux and also provides built-in support for XML. PocketLinux also includes an integrated frame-buffer graphics library that eliminates the need for a resource-hungry X Window System. http://www.pocketlinux.org/.
Trolltech: Qt/Embedded—Qt/Embedded features an API that is identical to the existing Qt/X11 and Qt/Windows products. However, Qt/Embedded is not based on X11 and, therefore, it has substantially lower memory requirements than X11. By picking and choosing features, the memory demands can be tuned from 800KB to 3MB in ROM (Intel X86). http://www.trolltech.com/.
Trolltech: Qt Palmtop Environment—a complete PDA Linux software package, including a Window System, Window Manager, Application Launcher, Input Methods (virtual keyboard, etc.), GUI toolkit and collection of useful applications, all written using the standard Qt API—the same API found on Qt/X11 and Qt/Windows. http://www.trolltech.com/.
The ViewML Project—a freely available, open-source web browser targeted specifically at the embedded Linux platform. Currently, ViewML along with its interface requires 2.1MB of RAM, with a disk image of only 760K. http://www.viewml.org/.