An embedded system is a computer that serves a dedicated purpose involving computation for real-time operations. Embedded systems are all around us in consumer, industrial, telecommunication and even medical applications.
Embedded systems can have varying degrees of complexity, ranging from simple thermometers to modern smartphones. Today, the demand for capable embedded systems is on the rise as modern applications such as machine learning make their way into consumer devices.
Embedded devices are restricted by environments that generally dictate low power consumption, reduced processing power, memory limitation, and peripheral availability by design. There are a multitude of hardware architectures, including x86, Arm, PPC, and RISC-V, each having their own advantages and limitations (such as low power consumption and limited software supp
Embedded Linux is a type of Linux operating system/kernel that is designed to be installed and used within embedded devices and appliances. It is a compact version of Linux that offers features and services in line with the operating and application requirement of the embedded system.
Another perspective to consider is that of a distribution. Here, “distribution” is an umbrella term usually comprising software packages, services and a development framework on top of the OS itself. Ubuntu Core, the flavour of Ubuntu for embedded devices, is an example of an embedded Linux distro.
Embedded Linux, though utilizing the same Linux kernel, is quite different from the standard Linux OS. Embedded Linux is specifically customized for embedded systems. Therefore it is has a much smaller size, requires less processing power and has minimal features. Based on the requirements of the underlying embedded system, the Linux kernel is modified and optimized as an embedded Linux version. Such an instance of Linux can only run device-specific purpose-built applications.
Linux provides many advantages for an embedded system, From scalability to developer support and tooling. Over the years, Linux has grown to support a large variety of CPU architectures, including 32 and 64-bit ARM, x86, MIPS, and PowerPC architectures. Linux supports nearly all the programming languages and utilities that you need for your embedded system development endeavors. With Linux, you are not restricted to any specific software. With several software packages coming together to form a Linux OS stack, developers can customize it for any purpose.
Linux is being used in many types of devices as software. Let’s take a general example; the Android OS from Google Inc. is based on Linux and is a kind of Embedded system designed for mobile devices. Smart TV, iPads, car navigation systems are other general examples. Some examples of small size embedded Linux systems
- ETLinux: A complete Linux distribution designed to run on small industrial computers.
- LEM: A small (<8 MB) multi-user, networked Linux version that runs on 386s.
- LOAF: “Linux On A Floppy” distribution that runs on 386s.
- uClinux: Linux for systems without MMUs.
- uLinux: Tiny Linux distribution that runs on 386s.
- ThinLinux: Primarily for camera servers, X-10 controllers, MP3 players
The Yocto Project stands out: it is an open-source collaborative project that makes it easy for developers to create their own custom Linux systems, regardless of the hardware architecture. This tool gets widely used to create custom embedded Linux distributions.
Linux, as an open source kernel, allows you to leverage on the work of thousands of developers across the world. By tweaking or directly implementing existing packages, you can get your own applications up and running far more easily and quickly.
Linux’s prevalence in embedded systems is also because of its modularity.
For instance, customization options for Ubuntu Core include configuration for both hardware and software, and specific kernels. Freely available, community-maintained build systems such as Yocto and Buildroot enable developers to create custom Linux distros for most hardware architectures.
Embedded Linux provides advanced networking capabilities for consumer products. It supports a rich stack of networking protocols from WiFi, and mobile broadband (WWAN), to Ethernet connectivity, and system network services like NetworkManager are supported on Linux.
Android OS is a type of embedded Linux, customized to be used on smartphones. Other devices on which embedded Linux is used include: Smart TVs, Wireless routers, Tablet PCs, Navigation devices, and Other industrial and consumer electronic equipment
References and Resources also include: