Embedded Linux : Understanding the embedded linux
Linux in Embedded Systems
Embedded Systems are basically Single Board Computers (SBCs) with limited and specific functional capabilities. All the components that make up a computer like the Microprocessor, Memory Unit, I/O Unit etc. are hosted on a single board. Their functionality is subject to constraints, and is embedded as a part of the complete device including the hardware, in contrast to the Desktop and Laptop computers which are essentially general purpose (Read more about what is embedded system). The software part of embedded systems used to be vendor specific instruction sets built in as firmware. However, drastic changes have been brought about in the last decade driven by the spurt in technology, and thankfully, the Moore’s Law. New, smaller, smarter, elegant but more powerful and resource hungry devices like Smart-phones, PDAs and cell-phones have forced the vendors to make a decision between hosting System Firmware or full-featured Operating Systems embedded with devices. The choice is often crucial and is decided by parameters like scope, future expansion plans, modularity, scalability, cost etc. Most of these features being inbuilt into Operating Systems, hosting operating systems more than compensates the slightly higher cost overhead associated with them. Among various Embedded System Operating Systems like VxWorks, pSOS, QNX, Integrity, VRTX, Symbian OS, Windows CE and many other commercial and open-source varieties, Linux has exploded into the computing scene. Owing to its popularity and open source nature, Linux is evolving as an architecturally neutral OS, with reliable support for popular standards and features. This article will detail with the performance features expected of any Embedded Operating System and how Linux lives up to them in subsequent sections.
What is Embedded Linux
Linux itself is a kernel, but ‘Linux’ in day to day terms rarely means so. Embedded Linux generally refers to a complete Linux distribution targeted at embedded devices. There is no Linux kernel specifically targeted at embedded devices, the same Linux kernel source code can be built for a wide range of devices, workstations, embedded systems, and desktops though it allows the configuration of a variety of optional features in the kernel itself. In the embedded development context, there can be an embedded Linux system which uses the Linux kernel and other software or an embedded Linux distribution which is a prepackaged set of applications meant for embedded systems and is accompanied by development tools to build the system.
Types of embedded Linux systems
Embedded Linux systems are generally classified by criteria that would provide information about the structure of the system. Thus it may be classified primarily on the basis of size and timing constraints.
Linux features a micro-kernel architecture which actually consumes very little memory of about 100 KB which combined with the networking stack and a few basic utilities can fit in quite nicely in 500 K of memory and can be adapted to work with very little RAM and ROM (as low as 256KB ROM and 512KB RAM). A few examples of small footprint Embedded Linux are ETLinux, LEM, uClinux, uLinux, ThinLinux etc. The physical size of an embedded system determines the capabilities offered by the hardware. There are three broad categories of the embedded LINUX on the basis of size: small, medium and large.