The Linux hype is in full swing in embedded-systems projects. A small but rapidly growing number of startup companies are offering Linux code, tools, and services for embedded development. Web sites such as www.Linuxdevices.com are springing up to provide resources on tools and development techniques. In addition, vendors such as Motorola and Force Computers have announced that hardware products which use different Linux builds are being manufactured.
Because of its advantages, Linux makes a lot of sense for embedded systems. These include the availability of source code, no licensing fees, and readily available free and paid support at Linux vendors and on newsgroups. The ability to customize an operating-system build for a specific application, download and use free yet high-quality programming tools, and doing it your own way without starting from scratch appeals to both project managers and individual developers.
Chances are high that your engineering team is anxious to get a Linux project under its belt. Linux carries such a cachet that even a long-time employee would be interested in learning the hot technology. Team members seeking to broaden their skills base for new projects or better employment prospects will jump at the chance to work with Linux.
Linux is known to offer high reliability. Many discussion groups and Usenet forums include comments on how Linux servers run for months, or even years, without reboot. Its open-source development model, with contributions from programmers around the world, means that the best technical solutions and fixes are likely to find their way into source-code distributions. From any standpoint, the result is a sturdy technical solution offering the best efforts of thousands of programmers.
Still, that's not all that's important for embedded developers. They need solutions that worktools that are powerful, easy to use, well supported, and in step with the technology. The operating system must fit into the specified footprint, and with the performance and response time needed for the project. Powerful development tools have to be available to customize the operating system and produce a wide variety of applications.
Unfortunately, Linux has a mixed track record on many of these issues. Free or inexpensive Linux development tools tend to be highly capable, but not as easy to use as tools for other embedded operating systems. A Linux operating-system build can be almost infinitely customized. But there are few documents or guidelines for doing so. While Linux has the potential to offer advantages over the long run, the learning curve of a first Linux project may be longer than that with standard commercial tools.
Embedded-system vendors are working quickly to overcome these and other deficiencies. Further, engineers are using Linux in actual designs. The result is an explosion of technical innovation and engineering skill in fielding a new generation of powerful embedded devices.
Many embedded developers already use the GNU development tools from the Free Software Foundation. Starting with founder Richard Stallman's GNU C, the GNU library now has dozens of programming tools, including over a dozen programming languages, as well as debuggers, code frameworks, libraries, editors, Web development tools, utilities, and much more.
Plus, many of these tools are of higher quality than those available commercially. Many real-time operating-system vendors support development with GNU programming tools, because of their quality and wide availability for different microprocessors. In 1998, the last year for which figures are available, Cygnus Solutions estimated that approximately half of the embedded development community used at least some of the GNU tools.
What does GNU have to do with Linux? Many Linux developers have always used the GNU tools when working with the operating system, because of their wide availability with source code. Many of the core components of Linux were actually developed and distributed under the GNU General Public License (GPL), a free licensing policy developed by Stallman.
The GPL may deter some embedded developers from working with GNU programming tools. Software distributed under the GPL typically comes with source code. Developers can modify that source code, but they can't then redistribute it as a proprietary product. Developers can even charge for distributing it, but they still have to give users the same rights that they received.
Yet, the GNU license doesn't bother most developers using the programming tools rather than application source code. Even some vendors have made it work to their advantage. Cygnus Solutions, which was acquired early this year by Linux distributor Red Hat Software, developed and distributed GNU tools at a minimal cost. Cygnus made money from consulting and other products.
Cygnus/Red Hat has supplemented the GNU tools with its own proprietary tools, such as the Source Navigator debugger, and Code Fusion integrated development environment (IDE). These tools allow users to target Linux on Intel processors (Fig. 1). Unlike GNU tools, these aren't free, but can incorporate appropriate GNU tools into the environment. In addition to enabling Linux development, they also are hosted on Linux and Windows.
Many GNU programming toolsincluding language compilers, debuggers, and various utilitiesare included in a large number of commercial Linux distributions, including Red Hat, Debian, and Caldera (see the opening figure). Free tools, usually with source code, also are available from the Free Software Foundation, research universities, and several of the Linux portals, such as www.Linuxcare.com. Finally, more commercial tools like those from Cygnus/Red Hat are emerging. This brings about a wider range of quality development software than is currently available for virtually any embedded operating system.