Linux Today: Linux News On Internet Time.

LinuxDevices.com: An overview of Linux for embedded developers

Oct 05, 2001, 22:03 (0 Talkback[s])
(Other stories by Greg Haerr)
This 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).

...As mentioned previously, the Linux kernel provides 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. The Linux kernel provides a POSIX-compliant API to these services. The directory structure of the kernel source tree separates architecture-dependent code out from the core kernel services, allowing greater reliability with known-working core algorithms, with calls to machine-specific code added for particular platforms. Thus, adding support for specific device features is fairly straightforward. This implementation methodology is also followed for memory management, i/o, and driver designs, where the core kernel code abstracts a model that allows implementation on differing architectures.

The kernel provides complete modern virtual memory services to applications programs, including support for large address spaces, protection, demand paging, memory mapping and shared virtual memory. While support for large address spaces or demand paging may not seem important for embedded systems designs, all of the modern 32-bit processor architectures support these features, and Linux will allow growth in application complexity as hardware costs are reduced without redesign or reimplementation. Memory protection allows building systems that allow user-upgradeable or third-party applications to be added to the system, without compromising the entire system. Shared virtual memory support allows multiple copies of application's code segments to be shared across the system using less physical memory, as well as implementation of more sophisticated schemes like high-speed direct application framebuffer access for MPEG digital video players, for instance."

Complete Story