Clash of the Shrink-Wrap Titans
Embedded Linux distributions have a lot in common. It's not just that they're based on the Linux kernel and commonly available free software; in the short time that embedded Linux has been a commercial reality, many vendors have added on an impressive, professional collection of features.
While there are dozens of narrowly focused embedded Linux distributions, for this roundup we looked at general-purpose packages that include development tools and support for more than one target architecture and are intended to be used to develop more than just one product category. We'll take a closer look at distributions intended for just one task or one CPU in later articles.
An important competitor for all the embedded vendors is the roll-your-own approach--starting with a PC Linux and cross-compiling, patching and paring down to make it work for embedded needs. Why go with an embedded distribution? It's up to you, but many embedded distributions do offer enhanced features.
One of the core features of embedded Linux distributions is an image building utility that runs on the host system and lets you build up an image for the target made up of packages you develop and stock software provided by the distribution vendor. Like the package managers on ordinary Linux distributions, these utilities look to be time-savers.
Embedded Linux distributions take several different approaches to the challenge of offering an IDE for traditionally text-based Linux development. Your development team's skills with IDEs might be the key factor in deciding whether to go with a distribution that offers a plugin for a familiar IDE, a licensed proprietary IDE or an open-source one.
Some embedded distributions are set up to reel in former users of legacy OSes, embedded and non-embedded, by offering a similar development environment.
The stock Linux 2.4 kernel is designed for high-performance web serving and other server applications. (We can thank the Mindcraft report of 1999 for focusing the core Linux development team's attention on server performance.) Some embedded applications are fine with that, but enough need predictable real-time behavior that all of the big embedded Linux contenders offer some kind of real-time enhancement--either an underlying real-time kernel or modifications to the regular kernel. We'll be looking at real-time technologies, many of which are freely available as kernel patches, in great detail in upcoming articles.
A GUI application that runs on the host system and enables debugging the target over a serial port has become a checklist feature for embedded Linux development. Whether based on GDB or descended from pre-Linux developer packages, embedded Linux distributions include some form of this potentially project-saving tool.
Pre-assembled software kits for many development and evaluation boards help you get your development environment up quickly. Check vendor web sites for lists of supported boards because they're adding more every day. Board support packages include everything from a kernel image for the board to a checklist of tips.
Every one of the embedded distributions offers a developer support site and additional services such as training and contract development. Naturally, it's difficult to evaluate anything as complex as a modern embedded Linux distribution without actually doing a development project with it and seeing how the different choices that vendors make affect your real work, so watch future issues for examples of developer success stories based on the embedded distributions you're considering.
Distribution: BlueCat Company: LynuxWorks URL: http://www.lynuxworks.com/products/whatisbcl.html Hosts: Linux; Windows 98, ME, NT, 2000 Targets: x86, PowerPC, SH-3, ARM/SA, XScale, MIPS
BlueCat shares many development tools with the company's older proprietary OS, LynxOS, so it could be the obvious choice for developers coming to Linux from that environment. And for high-availability CompactPCI systems, BlueCat offers the Messenger TCP/IP over PCI toolkit. BlueCat also includes the free/open-source Java implementation, Kaffe.
Microsoft Visual Studio users can install a plugin called VisualLynux to develop for BlueCat from within Visual Studio. VisualLynux includes an Application Wizard to create skeleton C or C++ projects automatically and gives you flexibility in how Visual Studio-centric you want your development to be. There's even a TotalDB GUI front end for GDB.
Distribution: Embedix, Embedix RealTime Company: Lineo URL: http://www.lineo.com/products/embedix/ Hosts: Linux, Windows NT Targets: ARM, StrongARM, MIPS, Hitachi SH, x86, PowerPC
Lineo offers a choice of Linux versions: Embedix, Embedix RealTime or µClinux for MMU-less targets. Embedix RealTime uses RTAI (real-time application interface), which is based on the RTLinux approach of having a separate real-time layer. As of this writing, Lineo is the only one of the full-featured distributions to hold a license to use the dual-kernel approach patented by Victor Yodaiken's FSMLabs. (The patent is also freely licensed for software distributed under the GPL.)
The thorough ``Embedix RealTime Programming Guide'' explains the internals of RTAI and documents its functions in man-page style.
The Embedix image builder, called Target Wizard, offers the option of using Lineo's LIPO tool to analyze all binaries on the system for symbols used from the shared libraries and remove any unused symbols from the libraries.
While other distributions document the fact that you're not going to violate the GNU General Public License by simply developing an application for embedded Linux, Lineo offers a tool called the GPL Compliance Toolset that will go through your projects to audit compliance with the GPL and other free software licenses.
Embedix SDK for Windows includes the Metrowerks IDE, and CodeWarrior for Linux hosts is also available.
Distribution: Hard Hat Linux Company: MontaVista Software URL: http://www.mvista.com/ Hosts: Linux, Solaris, Windows (running Linux under VMware) Targets: x86, PowerPC, StrongARM, XScale, MIPS, SH, ARM
Hard Hat Linux is home of several innovations besides MontaVista's famous pre-emptible kernel patch. Hard Hat offers a wide selection of Linux GUI environments, including Embedded Qt, Microwindows and regular X. MontaVista also makes IBM's VisualAge Micro Edition, a full-featured IDE for Java, available as an option.
Hard Hat's subscription-based developer web site, Hard Hat Zone, offers recent documentation and notes on board support, porting from legacy embedded OSes and other updates. Hard Hat Linux also supports emulation environments for moving legacy Wind River pSOS and VxWorks code to Linux.
Hard Hat has an impressive collection of GDB-based tools, including ddd (the data display debugger) and kgdb (the kernel source-level debugger).
Distribution: REDICE Linux Company: REDSonic URL: http://www.redsonic.com/ Hosts: Linux Targets: x86, PowerPC, StrongARM, ARM 7, MIPS
REDICE Linux features a scheduler split into two parts: the dispatcher in kernel space and the allocator that can be in kernel space or user space. The allocator implements scheduling policy, and a single system can have more than one allocator for processes that need different scheduling policies. The framework for replacing and developing new allocators allows flexibility for developers who need a certain scheduling policy.
A monitoring tool called RED-Probe helps with plotting execution times for tasks and verifying that you picked the right scheduling policy. RED-Builder, the package management tool, integrates with the open-source KDevelop IDE; you can easily combine stock packages with those you develop and build under KDevelop.
Don Marti is Editor in Chief of Embedded Linux Journaland vice president of the Silicon Valley Linux Users Group. He is item number eight in pigdog.org's ``Things to Say When You're Losing a Technical Argument''.