Many developers either lack experience or academic degrees but has capabilities to develop various Libre Hardware embedded projects. Of we hear about Real Time OS (RTOS) and Embedded OS. At worst, Linux based Embedded OS are named as Embedded Linux. What is the difference between Real Time OS (RTOS) and Embedded Linux? Which one will be effective, optimum for which purpose? We are trying to explain in an easy way. We need to know these to develop a full operating system for an application instead of a standalone application for any General Purpose operating system.
Difference Between Real Time OS (RTOS) and Embedded Linux
Although technically incomplete, yet Real Time OS (RTOS) are type special Embedded OS. If such Embedded OS is based on Linux kernel, they are referred as Embedded Linux for easy indication. Microprocessors are mainly intended for the embedded. Any type of computers are not embedded systems but are for general purpose and most simple can perform complex tasks. Microcontrollers are smallest “special computers”.
Embedded are small, cheaper and built for a special purpose to make it efficient for performing only the purpose they are built. Car’s touch screen running something runs Embedded OS, you can take it that some of them are Embedded Linux. But some of these embedded systems need to perform serious computing very well in a limited amount of time, like patient monitor. Later example runs Real Time OS (RTOS). Normally on laptop, desktop etc there can delay in responsiveness. Those OS are called General Purpose OS. Again Real Time OS (RTOS) can be hard real-time and soft real-time. Hard real time systems if fails to execute task within the expected time can crash unlike soft real time. Patient monitor is hard real time. Various entertainment things can be soft real time. Non real time embedded OS are not time bounded but needs no user intervention and can execute a limited number of tasks. Non real time embedded OS and Embedded OS/Embedded Linux are quite closer by end result but no way comparable.
GNU/Linux which we use on computers, servers are general-purpose OS (GPOS); their application to embedded systems is usually motivated by the availability of device support, file-systems, network connectivity, and UI. All these things can be available in an RTOS, but often with less broad support, or at additional cost or integration effort.
Difference Between Real Time OS (RTOS) and Desktop/Server Linux
Many RTOS are not full OS in the sense that Linux is, in that they comprise of a static link library providing only task scheduling, IPC, synchronisation timing and interrupt services and little more – essentially the scheduling kernel only. Such a library is linked with application code to produce a single executable that your system boots directly (or via a bootloader). Most RTOS do not directly support the loading and unloading of code dynamically from a file system. Normal Linux Kernel is intended for full OS and is a preemptive kernel but not real time. In most multithreading environments (aka multitasking), a preemptive kernel allows the thread that has higher priority to receive longer time on the processor and a lower priority thread will have less time with the processor. In the normal kernel, no particular thread can monopolize the services of the resident processor all the time, no matter what its priority. So, the programs will never hang up even if an arbitrary thread of the program goes into a forever loop. Conversely, with almost any real time OS (such as FreeRTOS, Micrium uC/OS, and ThreadX), the kernel supports both preemption and real-time features. Here is a good PDF on the topic :
Resource Links of Real Time OS (RTOS) and Embedded Linux
Following few examples are of “Open Source” Real Time OS (RTOS) :
http://www.freertos.org http://mynewt.apache.org http://www.ukos.ch http://www.ti.com/tool/dspbios
Following few examples are of “Open Source” Embedded Linux or Embedded Linux Building tool :
https://librecmc.org https://www.openwrt.org https://buildroot.org https://www.mozilla.org/en-US/firefox/os/ http://web.archive.org/web/20090215152839/http://ipodlinux.org/