Embedded Linux. Is it the same as Linux?
- 1 What is Linux?
- 2 Embedded Linux | What is it? Where to use it?
- 3 Linx on embedded systems | Common applications
- 4 How to develop embedded Linux on Windows
- 5 What is Windows Subsystem for Linux (WSL)?
- 6 Embedded Linux and Android | How does it work?
- 7 What are the advantages of using embedded Linux?
- 8 Possible disadvantages of embedded Linux
- 9 Embedded Linux: find embedded software developers
What is Linux?
In previous posts, we have already made an introduction to embedded systems engineering giving some examples that are on the market as well as listing all possible functionalities. Today we will talk about the operating system par excellence used as a development tool for this type of device: Linux.
Linux is the name given to the kernel and a series of Unix operating systems under GNU GPL. In many respects, Linux is similar to other operating systems such as Windows, macOS (formerly OS X), or iOS. Like them, Linux can have a graphical interface and the same types of desktop software that you are used to, such as word processors, photo editors, video editors, etc.
But Linux also differs in many important ways. First of all, and perhaps its most important feature, it is open-source software. The code used to create Linux is free and available for the public to view, edit, and – for users with knowledge – contribute to it.
Another relevant difference is that Linux, although the core pieces of the Linux operating system are generally widespread, many Linux distributions include different software options. That means that Linux is incredibly customizable. We can install a very light system and add everything necessary later or as we need it. Users can also choose the main components, such as the system that displays the graphics, and other components of the user interface.
You are probably already using Linux, even if you are not aware of it since it is present in the software of a large number of devices that we use on a daily basis. Even most of the Internet web pages that we visit have probably been generated by Linux servers. Similarly, most companies and individuals choose Linux for their servers because it is secure, flexible, and can receive excellent support from a large community of users.
Embedded Linux | What is it? Where to use it?
An embedded system is a set of computer hardware and software based on a microcontroller or microprocessor, controlled by a real-time operating system or RTOS, limited memory, and that can vary both in size and complexity. Embedded Linux is a type of Linux operating system/kernel that was designed to be installed and used in embedded devices or systems.
Although it uses the same kernel, embedded Linux is quite different from the standard operating system. First of all, it gets tailored for embedded systems and, therefore, is much smaller in size, requires less processing power, and has minimal features. The Linux kernel is modified and optimized as an embedded Linux version. Such a Linux instance can only run applications created specifically for the device.
Embedded Linux is flexible, low-cost, open-source, and gets adapted to specific-purpose microprocessors. Compared to proprietary embedded operating systems, Linux allows multiple software, development, and support vendors; it has a stable kernel and provides the ability to read, modify, and redistribute source code. It also allows for a highly modular building block approach to building a custom system, leading to greater flexibility.
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.
Linx on embedded systems | Common applications
For these reasons, and thanks to its versatility, embedded Linux has become very popular among the embedded systems engineers. Many consumer electronics devices such as phones, smart tablets, digital storage devices, personal video recorders, cameras, wearables, and many others typically are developed with Linux. It gets used in cars software, and many other examples such as network equipment, machine control, industrial automation, navigation equipment, spacecraft flight software, and medical instruments in general.
Even Microsoft Windows has Linux components as part of the Windows Subsystem for Linux or WSL. But perhaps the best example of embedded Linux is Android, developed by Google. We will see these last two examples in more detail throughout the post.
How to develop embedded Linux on Windows
Introducing embedded Linux into your organization can mean multiple challenges to overcome. Guides are certainly useful for gaining experience at a good pace, but what about the development environment? Does it need to be completely replaced to support Linux development?
In many cases, embedded Linux product development gets done by using the Linux host itself. The PC version offers more pre-installed libraries and utilities than embedded Linux systems, making Linux development hosts ideal for developing embedded Linux code. But what about engineers who are new to this operating system or who prefer to use Windows as a development host?
The most widespread solution so far has been to use virtual environments such as VirtualBox or VMware Player. This way, the user is allowed to continue working with Windows as the main operating system, and therefore continue browsing in an already familiar environment, and use the virtual machine with Ubuntu or other Linux distributions for the development of embedded Linux-based products.
In addition, there are other options for developing embedded Linux code. Container technology has recently gained a lot of interest, offering another alternative for running a Linux distribution within the Windows operating system.
What is Windows Subsystem for Linux (WSL)?
Source: Microsoft Docs
On the other hand, Microsoft has also taken a step forward into supporting the Linux development environment within its operating system with the introduction of the Windows Subsystem for Linux (WSL), which got included in the Windows 10 version.
The WSL provides a Linux-compatible kernel interface developed by Microsoft, which can then run a GNU userspace on top of it. This way, Linux development tools can get easily installed in the native Linux environment based on the WSL.
What does this mean for developers? It means that those who prefer to develop under the host Windows operating system can stay with the familiar Windows development environment and simply enable the Linux development environment on the same host.
Thanks to this, integrated software tools came out to be used in Windows itself, such as the Timesys IDE TimeStorm. This Eclipse-based program provides users of the Windows 10 operating system with a familiar environment, making it easy to develop embedded Linux products within a Windows environment. This feature makes it an ideal solution for programmers who want to migrate to the development of microprocessor-based Linux devices, since, apart from supporting languages such as C/C++/Python, it uses the same Yocto SDK in Linux operating systems and Windows.
Embedded Linux and Android | How does it work?
The Android operating system is a type of embedded Linux, customized to be used on smartphones. In essence, Android runs the same type of Linux kernel as embedded systems and shares the same drivers, memory management, and networking capabilities. But it also includes some kernel modifications that make it ideal for mobile systems. In addition, it comes loaded with extra functions taken from other open-source projects.
Google built Android as a mobile operating system that comes with its ecosystem, separate from the classic Linux. Its user interface gets optimized for touch-screen devices. In addition, it comes with a set of APIs that allow a more standardized application development environment. Similarly, Android devices can additionally take advantage of a series of Google services such as Google Maps, Fit, Cast, or Awareness, among others.
Some could think that Android becomes a viable replacement for embedded Linux because it standardizes software development for devices such as phones, tablets, or televisions. Even so, Android may be gaining in popularity, but it still has a long way to go before getting used to the same degree as embedded Linux and – even less likely – to replace it. The “classic” varieties of embedded Linux undoubtedly dominate as the operating system of choice for embedded system developers.
What are the advantages of using embedded Linux?
As we have already seen, embedded Linux is a compact version of Linux that offers features and services following the operation and application requirements of the embedded system. Like Linux, its main advantages over other integrated operating systems are – among others – the use of open source and therefore low cost, the existence of multiple software, development and support providers, and openness in terms of copyright or licenses and a stable and robust kernel. In addition, the ability to read, modify and redistribute the source code, coupled with a highly modular building block approach to developing a custom embedded system. This provides greater flexibility in design possibilities.
Open source code.
Multiple software, development, and support providers.
Possible disadvantages of embedded Linux
Among the possible disadvantages of embedded Linux, it is worth noting its complexity. Thanks to its being open-source and having multiple developments, embedded Linux is richer in features than other embedded development environments. Linux’s vast codebase (both within your system and available in the community) results in almost endless complexity.
In addition, we should consider that when developing solutions adapted to the platform to get used, any modification to the hardware can directly affect the software, being reflected in situations of product replacement or even in updates of the software itself. On the other hand, remember that using embedded Linux implies the need to have a comparatively large memory space compared to other environments. That will mostly affect devices with limited resources.
The sum of all these aspects can lead to an increase in money and time for developing new implementations. For this reason, it is extremely important to always rely on expert developers who can optimize the process as much as possible.
Having reacher features can lead to higher complexity.
Modifying the hardware can affect software.
Need for larger memory space.
Embedded Linux: find embedded software developers
So, with all that being said, are you looking for expert C/C++ developers for software and embedded systems development on Linux? You just found them.