Embedded operating system



An Embedded Operating System (EOS) is an operating system designed specifically for embedded computer systems. These systems aim to enhance functionality and reliability to perform dedicated tasks. When the multitasking method employed allows for timely task execution, such an OS may qualify as a real-time operating system (RTOS).

Overview
Embedded Operating Systems are integral to consumer electronics such as cameras and mobile phones. Additionally, they power automotive electronics, aiding in functions like cruise control and navigation. Moreover, they are essential for factory automation infrastructure. Everyday applications of EOS include office automation devices such as image scanners, photocopiers, and wireless access points. Home automation systems, including security systems, also depend on EOS.

Design
Embedded systems comprise a processor and corresponding software. Embedded software requires storage for executables and temporary data processing during runtime. Embedded systems typically utilize ROM and RAM as main memory components. For functionality, embedded systems necessitate input and output interfaces. Embedded hardware configurations are often unique, varying according to the application. Given the resource limitations of embedded system hardware, operating systems are designed with a narrow scope, tailored to specific applications to ensure optimal operation within hardware constraints. The choice of embedded operating system, which organizes and controls the hardware, often dictates the additional required embedded hardware components.

Software developers might write essential code in assembly language to harness the full processing power of the Central Processing Unit (CPU). Assembly language, being machine-efficient, can enhance speed in deterministic systems but may reduce portability and maintainability. Frequently, embedded operating systems are coded in portable programming languages like C.

Early embedded Operating Systems
The concept of a real-time multitasking kernel emerged in the late 1970s. During the 1980s, as embedded systems applications grew in complexity, operating systems with real-time multitasking kernels struggled to meet the evolving demands of embedded development. This led to the evolution of the real-time multitasking kernel into a comprehensive Operating System (RTOS), encompassing networking, file management, development, and debugging capabilities.

Today, RTOS constitues a global industry. In 1981, Ready System developed VRTX32, the world’s first commercial embedded real-time kernel. In 1993, following a merger, Ready System and Silicon Valley’s Microtec Research developed two new RTOS kernels, VRTX32 and VRTXsa, building upon VRTXmc. Concurrently, the VRTX integrated development environment, Spectra, was introduced.

In 1996, Microsoft released its embedded operating system, WinCE, which supported various processor architectures including x86, ARM, SH4, and MIPS. WinCE has since become obsolete, with mainstream support having ended in 2018.

OS-9 and VxWorks are also notable embedded operating systems.

Modern embedded Operating Systems
In the current landscape of the Internet of Things (IoT), embedded devices are ubiquitous, with cars alone utilizing hundreds of sensors. IoT systems, in contrast to traditional embedded systems, necessitate lower power consumption, enhanced safety and reliability, and the capability for ad hoc networking. The communication layer must facilitate the conversion between diverse protocols, while the application layer should enable cloud computing capabilities over the Internet.

Contemporary embedded Operating Systems
As a result, several new embedded operating systems have gained popularity, such as Embedded Linux variants (OpenWrt, Zeroshell, Android, LineageOS, LEDE, LibreCMC), OpenHarmony, Oniro OS, HarmonyOS, NetBSD, PX5 RTOS, ThreadX, FreeRTOS, among others.

Linux-based projects
Numerous Linux-based projects, toolkits, and frameworks have been developed for creating operating systems that operate on a variety of embedded systems. Prominent examples of these include OpenEmbedded, BusyBox, uClibc, musl libc, and Buildroot.