The Field of “Embedded Linux” Explained!

Embedded Linux is kind of a confusing term that is used nowadays to describe a wide variety of devices. With the advent of single-board computers like the Raspberry Pi and Beagle bones running Linux, and with ARM processors becoming more powerful than ever while remaining very power efficient,  Embedded Linux has become an upcoming field in electronics and computer science with plenty of opportunities to build really powerful and intelligent systems.

In this article lets learn what Embedded Linux is and what are the possible applications that Embedded Linux Devices can bring about.

Understanding “Embedded” & “Linux”

Let’s start by breaking down the terminology of “Embedded Linux” a bit to understand things better.

First, let’s what is the meaning of Embedded.

Embedded here is the short form for Embedded Systems. I have written an article about what embedded systems are, their classification and application that you can find on this link.

If you are a complete beginner, I recommend you to read that article to understand the entire spectrum of Embedded Devices to understand the place of Embedded Linux in the Embedded Devices World.

What are Embedded Systems?

To give you a simple explanation Embedded systems can be thought of as special-purpose computers.

General-purpose versus Special purpose

To understand this phrase “Special Purpose Computers”, let’s have a look at the other end of the spectrum which is “general purpose” computers. General-purpose computers are the ones that we use every day like desktops and laptops and Macs.

Even our smartphones and tablets are more towards the general-purpose end of the spectrum, which means they have more than one specific purpose. For example, even though the smartphone’s main purpose is communication (through emails, texts, voice, and video), they are designed for other purposes like hearing songs, listening to audiobooks, seeing videos, reading ebooks, browsing the internet, gaming, and photography.

On the other end of the spectrum are embedded systems, whose purposes are very specific to serve a particular function. A popular example is a calculator. It’s one and only job is to do calculations!

Calculator

Now that we have seen the meaning behind the term “Embedded” in Embedded Linux, let’s see how Linux comes into the picture to make a special category of devices called Embedded Linux Devices!

Linux is basically the kernel of the famous open-source operating system named GNU Linux. (Yes this is the official name, though we use the term Linux a lot in our day to day conversations)

The operating system we know as Linux is basically 4 parts

  1. Linux Kernel
  2. GNU utilities
  3. Desktop environment and
  4. Desktop applications

To understand these parts better let’s have a look at how Linux as we know it was developed.

A Brief Story about the birth of Linux

Sometime back before Windows and macOS came into the picture, the operating system that was widely used on computers was the Unix operating system. This one was a paid operating system and the source code was the property of the Unix company.

Some tech enthusiasts came together to make an open-source alternative of Unix, which basically meant writing all the source code needed to get an operating system that behaves exactly like Unix, but it can be distributed free of charge through the internet. The name of their organization is GNU, which stands for GNU is not Unix.

They were successful in making all the utilities/apps that came with Unix, but the kernel was getting delayed. Fortunately for them, at another corner of the planet, a college student named Linus Torvalds was working on making a copy of the Unix’s kernel and was successful in doing so. So Linus Torvalds contributed this code to the GNU community and an operating system named GNU Linux was born!

Now that we have seen the history of GNU Linux, let’s have a look at the 4 parts of the Linux again.

Linux Kernel

The Kernel of an operating system is a special kind of software responsible for controlling the hardware of a given computer and the user applications that run on it.

GNU Utilities

To do something useful with the hardware we need utilities since the GNU organization developed all the utilities needed, these are named GNU utilities.

Desktop Environment

Before windows came into the picture, the main way of talking to a computer is through a text-based user interface utility called a shell. But since Microsoft and Apple came up with a graphical user interface, the computers were able to find their way into the homes of more general users and not just tech people and GNU Linux was falling behind.

So the open-source developer community came up with their own graphical user interface to run on their operating systems.

Desktop applications

These are the apps that we normally use on our general-purpose computers like text editors, excel spreadsheets, browsers, music players, video players, etc.

So now that you have seen what the terms Embedded and Linux separately, let’s see how these 2 technologies come together to give us Embedded Linux

Understanding “Embedded Linux”

What is Embedded Linux? The term “Embedded Linux” is used to describe an embedded system that is running a Linux kernel inside.

What is an Embedded Linux Device? These are special-purpose computers running the Linux kernel and just the necessary GNU utilities to help achieve the specific purpose the device is built for.

In other words, if you build a device that is targeted for a specific purpose and runs the Linux kernel and some of the GNU utilities, then you have used the software technology named “Embedded Linux” to build a hardware technology that belongs to the category of “Embedded Linux Device”. It’s as simple as that!

Why can’t we run regular GNU Linux on Embedded Linux?

This is the next logical question we must address! If you read the above 2 paragraphs carefully, you might have noted that I used the words “just the necessary GNU utilities” and “some of the GNU utilities”. What this really means for us is in embedded Linux we only use what we need as our goal is very specific.

GNU utilities include programs to manage file systems, users, manage and connect to computer networks, etc. If our particular product doesn’t need/use some of the components typically used on general-purpose computers, we simply remove those, so that our final product will need fewer resources to run, so that we can make economically cheaper products.

Some common differences between the hardware that runs the normal variant of Linux and Embedded Linux are the following

Linux Embedded Linux
Used with general-purpose computers Used with special-purpose computers/embedded systems
Runs on CISC (Complex instruction set computer) architecture based processors like x86 and x64 Runs on RISC(Reduced Instruction Set Computer) architecture based processors like ARM
Need plenty of hardware support like hard disks, network cards, sound cards, graphics cards, etc. Hardware support is limited to only the ones that are considered necessary for the project in hand
Resource and power-hungry hardware. More efficient and less resource hungry, usually run on batteries
Need BIOS/UEFI boot support No BIOS/UEFI support needed
No real-time requirements Usually, it comes with real-time requirements. (If you are hearing the term real-time for the first time check out this article where I have explained everything you need to know about real-time systems)

I hope by now you have a good understanding of what embedded Linux really means.

So the next logical question is what kind of applications/purposes these embedded Linux devices are capable of?

Let’s see some of the possibilities that come with embedded Linux technology in the next section.

Applications of Embedded Linux

Machine learning and Artificial Intelligence

This is one area that is expected to benefit a lot from embedded Linux. As you might know, training a machine learning system is very resource-intensive, but running a trained system is not. If you google you can already find such applications.

To give an example of such a system, consider a Raspberry Pi single-board computer, with its camera and a Face Recognition algorithm running on the system, such a system can be used as a security device, which will open the door for you by looking at your face!

It’s only a matter of time, till projects like this to become mainstream products, and at some point, every home will have one of these!

This is just one example, there are numerous such projects that do image recognition, voice recognition, natural language processing, etc., that you can find online and we can expect several smart products like these that employ embedded Linux and machine learning in the near future!

Data and signal processing and multithreading applications

Linux kernel is highly scalable and it can run efficiently on multi-core systems, making good use of the several available cores and this can help in applications that need several threads to run in parallel. Data processing and digital signal processing are 2 areas where this ability of embedded Linux devices can be put to good use!

This ability is especially useful in space missions, where there is a need for reliability, processing power and power efficiency of its computing devices.

Other Embedded Linux Devices

These include networking devices like routers, switches, Network Attached Storage devices and home entertainment systems like smart TVs, all of which have a specific purpose and hence just need the subset of functionalities as compared to a general-purpose computer.

Now that we have seen what embedded Linux is and what this technology is capable of, the next step is to go ahead and start learning it!

I hope you guys learned something through this post and hope it was useful to you guys.

You can email us or contact us through this link if you have any questions or suggestions.

If you liked the post, feel free to share this post with your friends and colleagues! 

Related articles

What is an Embedded System?

What is the Internet of Things?

4 types of embedded software

200 Embedded and IoT Software Engineering Interview Questions – Part 1

Photo of author
Editor
Balaji Gunasekaran
Balaji Gunasekaran is a Senior Software Engineer with a Master of Science degree in Mechatronics and a bachelor’s degree in Electrical and Electronics Engineering. He loves to write about tech and has written more than 300 articles. He has also published the book “Cracking the Embedded Software Engineering Interview”. You can follow him on LinkedIn