Article: An overview of Linux for embedded developers
Oct 5, 2001 — by Rick Lehrbaum — from the LinuxDevices Archive — 3 viewsThis whitepaper by Greg Haerr (CEO of Century Software and founder of the Microwindows and ViewML projects) provides an introduction to the use of Linux as an embedded operating system. Haerr reviews the benefits of Linux to embedded applications, explains the basics of graphical windowing system technologies, and provides a technical and architectural overview of both Microwindows (a windowing system… for embedded devices) and ViewML (an embeddable web browser).
Why Linux?
The Linux operating system was created by Linus Torvalds at the University of Helsinki in 1991. From its simple beginnings, Linux has become one of the fastest growing platforms, with thousands of developers worldwide. One of the main reasons for the success of the Linux platform has been its development as an open source project, using the GNU General Public License (GPL). This license allows all code developed for the Linux kernel to be used freely by others, for personal or commercial use, and specifically disallows distribution of the system without also having accompanying source code, including all kernel modifications. This tag-along source code feature has attracted contributions from thousands of programmers worldwide for new technologies relating to present-day computing needs. By allowing anyone to study existing implementations and accepting enhancements as contributions, Linus and others have built a system that otherwise would have required very large commercial resources in a short period of time.
Open source software development brings high reliability and performance to the Linux operating system. The reliability of Linux stems from a large set of thousands of programmers obvserving the code, improving it, changing it, and testing it on thousands of different systems configurations. Linus's developmental philosophy of “release early, and release often” has allowed Linux to grow rapidly as an alternative to other operating systems yet still achieve high reliability and performance.
The initial large development community surrounding the Linux kernel has now grown into an even larger community supporting a large, varied set of applications and technologies for programs running on Linux. One of the more recent advancements has been the rapid movement of tailoring Linux for suitability in the embedded systems market. This started with kernel and compiler support for all the popular 32-bit microprocessors being designed into embedded systems today, including Intel x86, ARM, Motorola/IBM PowerPC, NEC MIPS and Hitachi SH. Several fast-growing commercial embedded Linux software distributions have popped up, with support for features required in embedded systems designs.
Because of Linux's free open source availability, lack of royalties, and support for modern processor architectures and tecnologies, it is making big inroads into the traditional real time operating system (RTOS) market. Linux is being designed in to an increasing number of products for these reasons.
The Linux distribution includes kernel support for all of the technologies required for modern 32-bit processors, increasingly found in embedded systems designs. This includes support for memory management, process and thread creation, interprocess communications mechanisms, interrupt handling, execute-in-place ROM filesystems, RAM filesystems, flash management, and TCP/IP networking. Various developer groups and commercial companies concentrate on specific technologies, with GPL modifications being returned to the standard Linux distribution available from kernel.org. Included in distributions is compiler support for the target processor architectures, along with user mode libraries for application startup. The GNU C Compiler project maintains up-to-date versions of compilers for each architecture.
Embedded Linux distributions typically provide cross-development support for a target platform from a host environment. Because the GCC compiler runs across a wide variety of platforms, host development platforms running Linux, Solaris, and Microsoft Windows are becoming available. Sophisticated development tools, such as the make program maintainance tool, allow complete applications to be cross-compiled and linked using a single command. A big advantage of using a Linux based host development platform when developing a Linux-based target application is that in many cases, major parts of the target application can be built and tested on the desktop while designing and building the target hardware device. Using graphical windowing environments like the X Window System and Microwindows allow complete graphical emulation of the target graphical hardware without having to cross-develop and download every change. Some of these development features are unique to Linux and are further pushing its advancement and use in leading embedded systems designs.
In the next part of this paper, I will give a short discussion of various parts of the Linux operating system and some graphical windowing system alternatives.
Story navigation . . .
- Part 1: Why Linux?
- Part 2: The Linux Kernel
- Part 3: Graphical Windowing Environments
- Part 4: ViewML Embedded Web Browser
- Part 5: Conclusion
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.