In this post we talk about IoT OS (Internet of Things Operating Systems) and RTOS (Realtime Operating systems). You can find a list of IoT os and RTOS for IoT and Embedded devices in this article.
What is IoT OS ?
An Internet of Things Operating System is an operating system that is designed to perform within the constraints that are particular to Internet of Things devices, including restrictions on memory, size, power and processing capacity.Actually this is an Embedded Operating system but by definition are designed to enable data transfer over the internet. IoT OSes control systems in cars, traffic and streets lights, Smart TVs, ATMs, airplane controls, point of sale (POS) terminals, digital cameras GPS navigation systems, elevators, digital media receivers and smart meters among many other possibilities. While IoT OS are an evolution of embedded OS, IoT brings its own additional set of constraints that need to be addressed. A mix of open source and closed source IoT OS exist today.
What are the parameters for selecting a suitable IoT OS?
Given below some parameters may be considered for selecting an IoT OS:
- Footprint: Since devices are constraint, we expect OS to have low memory, power and processing requirements. The overhead due to the OS should be minimal.
- Portability: OS isolates applications from the specifics of the hardware. Usually, OS is ported to different hardware platforms and interfaces to the board support package (BSP) in a standard way, such as using POSIX calls.
- Modularity: OS has a kernel core that’s mandatory. All other functionality can be included as add-ons if so required by the application.
- Connectivity: OS supports different connectivity protocols, such as Ethernet, Wi-Fi, BLE, IEEE 802.15.4, and more.
- Scalability: OS must be scalable for any type of device. This means developers and integrators need to be familiar with only one OS for both nodes and gateways.
- Reliability: This is essential for mission-critical systems. Often devices are at remote locations and have to work for years without failure. Reliability also implies OS should fulfil certifications for certain applications.
- Security: OS has add-ons that bring security to the device by way of secure boot, SSL support, components and drivers for encryption.
What certifications might an IoT OS require?
- DO-178B for avionics systems
- IEC 61508 for industrial control systems
- ISO 62304 for medical devices
- SIL3/SIL4 IEC for transportation and nuclear systems
What are the open source IoT OS?
TinyOS, RIOT, Contiki, Mantis OS, Nano RK, LiteOS, FreeRTOS, Apache Mynewt, Zephyr OS, Ubuntu Core 16 (Snappy), ARM mbed, Yocto, Raspbian are some Popular open Source OS.
What are the closed or commercial IoT OS?
Android Things, Windows 10 IoT, WindRiver VxWorks, Micrium µC/OS, Micro Digital SMX RTOS, MicroEJ OS, Express Logic ThreadX, TI RTOS, Freescale MQX, Mentor Graphics Nucleus RTOS, Green Hills Integrity, Particle.
RIOT OS: The friendly Operating System for IoT
RIOT OS powers the Internet of Things like Linux powers the Internet. RIOT is a free, open source operating system developed by a grassroots community gathering companies, academia, and hobbyists, distributed all around the world.
RIOT supports most low-power IoT devices and microcontroller architectures (32-bit, 16-bit, 8-bit). RIOT aims to implement all relevant open standards supporting an Internet of Things that is connected, secure, durable & privacy-friendly.
RIOT is free software: you can redistribute it and/or modify. Software developed by the RIOT community is available under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 (LGPLv2.1).
Comparison of Current Operating Systems
According to https://www.riot-os.org
Mongoose OS – an IoT firmware development framework
Mongoose OS is an Internet of Things Firmware Development Framework available under Apache License Version 2.0. It supports low power, connected microcontrollers such as: ESP32, ESP8266, TI CC3200, STM32. Its purpose is to be a complete environment for prototyping, development and managing connected devices.
Contiki OS : The Open Source OS for IoT
Contiki is an open source operating system for the Internet of Things. Contiki connects tiny low-cost, low-power microcontrollers to the Internet. Contiki is a powerful toolbox for building complex wireless systems.
Contiki provides powerful low-power Internet communication. Contiki supports fully standard IPv6 and IPv4, along with the recent low-power wireless standards: 6lowpan, RPL, CoAP. With Contiki’s ContikiMAC and sleepy routers, even wireless routers can be battery-operated.
Contiki provides multitasking and a built-in Internet Protocol Suite (TCP/IP stack), yet needs only about 10 kilobytes of random-access memory (RAM) and 30 kilobytes of read-only memory (ROM). A full system, including a graphical user interface, needs about 30 kilobytes of RAM.
Contiki applications are written in standard C, with the Cooja simulator Contiki networks can be emulated before burned into hardware, and Instant Contiki provides an entire development environment in a single download.
Contiki is open source, which means that the source is and always will be available. Contiki may be used in both commercial and non-commercial systems without restrictions.
Windows 10 IoT
Windows IoT, formerly Windows Embedded, is a family of operating systems from Microsoft designed for use in embedded systems. Microsoft currently has different subfamilies of operating systems for embedded devices targeting a wide market, ranging from small-footprint, real-time devices to point of sale (POS) devices like kiosks. Windows Embedded operating systems are available to original equipment manufacturers (OEMs), who make it available to end users preloaded with their hardware.
Windows 10 IoT is a member of the Windows 10 family that brings enterprise-class power, security and manageability to the Internet of Things. It leverages Windows’ embedded experience, ecosystem and cloud connectivity, allowing organizations to create their Internet of Things with secure devices that can be quickly provisioned, easily managed, and seamlessly connected to an overall cloud strategy.
So Microsoft Simplify the Internet of Things (IoT) with a rich device platform, world class developer tools, enterprise grade support and a global partner ecosystem. Do more at the edge with machine learning capabilities and scale with the power of Azure IoT.
Windows IoT come with closed Source, Hybrid kernel and Commercial proprietary software license.
Android Things – OS for IoT and embedded devices
Android Things lets you build smart, connected devices for a wide variety of consumer, retail, and industrial applications. It is an operating system released by Google for IoT and embedded devices. It’s based on Android, which in turn uses the Linux kernel. It therefore has support for multitasking and virtual memory. It’s meant to fit on devices with a limited memory footprint, although 512 MB is the minimum RAM requirement. AndroidThings therefore targets a different IoT segment compared to microcontroller-based IoT devices. It was back in May 2015 that Google announced Project Brillo as its IoT operating system, but having looked at the feedback it received from developers about Brillo, Google decided to ditch it and create Android Things. IoT Developers can creates and builds IoT apps easily via Android Things.
ARM Mbed OS
Arm Mbed OS is a free, open-source embedded operating system designed specifically for the “things” in the Internet of Things. It includes all the features you need to develop a connected product based on an Arm Cortex-M microcontroller, including security, connectivity, an RTOS, and drivers for sensors and I/O devices. Mbed OS is now a Thread Certified Component. Using IPv6 with 6LoWPAN as the foundation, Thread technology provides a low-power, self-healing mesh network designed for the home
Amazon FreeRTOS is an IoT microcontroller operating system that simplifies development, security, deployment, and maintenance of microcontroller-based edge devices. Amazon FreeRTOS extends the FreeRTOS kernel, a popular real-time operating system, with libraries that enable local and cloud connectivity, security, and (coming soon) over-the-air updates.
Ubuntu Core, a minimalist rendition of Ubuntu, is a lightweight, transactionally updated operating system designed for deployments on embedded and IoT devices, cloud and more. It runs a new breed of super-secure, remotely upgradeable Linux app packages known as snaps. The strict separation between kernel and device drivers, OS and applications means embedded engineers and application developers can easily work in parallel.
Zephyr Project : Scalable Open Source RTOS for IoT
The Zephyr Project, a Linux Foundation hosted Collaboration Project, is an open source collaborative effort uniting leaders from across the industry to build a best-in-breed small, scalable, real-time operating system (RTOS) optimized for resource-constrained devices, across multiple architectures.
he Zephyr Project’s goal is to establish a neutral project where silicon vendors, OEMs, ODMs, ISVs, and OSVs can contribute technology to reduce the cost and accelerate time to market for developing the billions of devices that will make up the majority of the Internet of Things
The Zephyr Project is perfect for building simple connected sensors, LED wearables, up to modems and small IoT wireless gateways. Because the Zephyr OS is modular and supports multiple architectures, developers are able to easily tailor an optimal solution to meet their needs. As a true open source project, the community can evolve the project to support new hardware, developer tools, sensor and device drivers. Enhancements in security, device management capabilities, connectivity stacks and file systems can be easily implemented.
The Zephyr kernel is derived from Wind River’s commercial VxWorks Microkernel Profile for VxWorks. Microkernel Profile has evolved over 20 years from DSP RTOS technology known as Virtuoso. The RTOS has been used in several commercial applications including satellites, military command and control communications, radar, telecommunications and image processing. The most recent example of the technology’s success is the successful Philae Landing on Comet Churyumov–Gerasimenko and the accompanying Rosetta Orbiter.
Nucleus RTOS – a real-time operating system (RTOS)
Nucleus RTOS is a real-time operating system (RTOS) offered by the Embedded Software Division of Mentor Graphics, a Siemens Business, supporting 32 and 64 bit embedded platforms. The Nucleus RTOS is designed for real-time embedded systems for use in medical, industrial, consumer, aerospace, and IoT applications. Nucleus RTOS was first released in 1993. The latest version of Nucleus RTOS is v3.x which includes features such as Power Management, Process Model, 64 bit support, Safety Certification, and support for heterogeneous multicore SOCs.
Nucleus Process Model adds space domain partitioning for task and module isolation on SOCs with either a Memory Management Unit (MMU) or Memory Protection Unit (MPU), such as those based on ARMv7/8 Cortex-A/R/M cores.
The Nucleus RTOS is deployed in over 3 billion devices and provides a highly scalable micro-kernel based real-time operating system designed for scalability and reliability. System reliability can be improved using lightweight memory partitioning support that can function with or without MMU/MPU assisted protection in systems spanning the range of aerospace, industrial, and medical applications. Developers can make full use of multi-core solutions across the spectrum of Microcontroller and Microprocessor SoCs using SMP and AMP configurations to integrate multiple operating systems.
NuttX Real-Time Operating System
NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller environments, the primary governing standards in NuttX are Posix and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()). NuttX was first released in 2007 by Gregory Nutt under the permissive BSD license.
NuttX is a POSIX RTOS. You don’t need to learn a new API to program it. You can write an application in a POSIX Operating System like Linux or MacOS, validate it, and then compile it to run on NuttX. If you don’t want to create an application from scratch, you can grab some small Linux libraries and perform some minor modifications to get them working on NuttX.
NuttX also has many subsystems that resemble equivalent subsystems in Linux. For instance, Virtual File System (VFS), Memory Technology Device (MTD), Audio subsystem, USB system with USB Composite support, and many others. Actually, you can run a basic version of NuttX on low cost microcontrollers with less than 32KB of Flash and less than 8KB of RAM. Of course, if you want to include additional features in your firmware — USB, Ethernet/WiFi with IPv6, CAN, etc. — then it will be better to use a microcontroller with more than 64KB of Flash and at least 32KB of RAM.
You may like also:
TinyOS -an embedded, component-based operating system
TinyOS is an embedded, component-based operating system and platform for low-power wireless devices, such as those used in wireless sensor networks (WSNs), smartdust, ubiquitous computing, personal area networks, building automation, and smart meters. It is written in the programming language nesC, as a set of cooperating tasks and processes. It began as a collaboration between the University of California, Berkeley, Intel Research, and Crossbow Technology, was released as free and open-source software under a BSD license, and has since grown into an international consortium, the TinyOS Alliance. TinyOS is written in nesC, a dialect of C.
LiteOS – an IoT operating system and middleware
Huawei LiteOS is an IoT-oriented software platform integrating an IoT operating system and middleware. It is an open source operating system for IoT smart terminals. It supports ARM (M0/3/4/7, A7/17/53, ARM9/11), X86,RISC-V, Microcontrollers of different architectures, follow the BSD 3. It is lightweight, with a kernel size of under 10 KB, and consumes very little power — it can run on an AA battery for up to five years! It also allows for fast startup and connectivity and is very secure. These capabilities make Huawei LiteOS a simple yet powerful one-stop software platform for developers, lowering barriers to entry for development and shortening time to market. It has launched a number of open source development kits and industry solutions.
Huawei LiteOS enabling IoT terminals to quickly access the network. It will make intelligent hardware development easier. Thereby accelerating the realization of the interconnection of all things. It provides a unified open-source API that can be used in IoT domains as diverse as smart homes, wearables, Internet of Vehicles (IoV), and intelligent manufacturing. It enables an open IoT ecosystem, helping partners to quickly develop IoT products and accelerate IoT development.
Apache Mynewt – A real-time operating system
Apache Mynewt is a real-time operating system with a rich set of libraries intended to make prototyping, deploying, and managing 32-bit microcontroller based IoT devices easy that must operate for long times under power, memory, and storage constraints. It is highly composable, to allow building embedded system applications (e.g., locks, medical devices, industrial IoT) across different types of microcontrollers. The name Mynewt is wordplay on the English word minute, meaning very small: the kernel is only 6 KB in size. It is free and open-source software incubating under the Apache Software Foundation, with source code distributed under the Apache License 2.0, a permissive license that is conducive to commercial adoption of open-source software.
The OS is designed for connectivity, and comes with a full implementation of the Bluetooth low energy 4.2 stack. With the addition of BLE (supporting all Bluetooth 4.2 compliant security features except privacy) and various utilities such as the default file system, console, shell, logs, stats, etc., the image size is approximately 96 KB for the Nordic nRF51822 Bluetooth SoC. This size metric excludes the boot loader image.
Balena OS has been designed to include the minimal set of required components to reliably support operation of the Docker engine in embedded scenarios. It uses the Yocto framework as a foundation, systemd as the init system. The networking stack consists of Network Manager, DNSmasq and Modem Manager. We have found these components to be a robust stack for dealing with the diversity of hardware and unpredictability of configuration of networks in which a device may be booted. In addition, This OS include Avahi, Dropbear, and OpenVPN, which add support for mDNS, SSH, and VPN connections respectively.
ChibiOS/RT – A compact and fast real-time operating system
ChibiOS/RT is a compact and fast real-time operating system supporting multiple architectures and released under the GPL3 license. It is the high performance RTOS part of the ChibiOS/RT embedded collection. RT has been designed with the idea of creating a very feature-complete RTOS that could excel in performance and code size. It is developed by Giovanni Di Sirio.
One of the most strong points of the RT kernel is the extremely high performance in realtime-related parameters like context switch time and ISR latency. The performance is not just matter of well written code, a series of design solutions make RT the fastest RTOS for deeply embedded applications.
Nano-RK : A Wireless Sensor Networking Real-Time Operating System
Nano RK is a fully preemptive reservation-based real-time operating system (RTOS) from Carnegie Mellon University with multi-hop networking support for use in wireless sensor networks. Nano-RK currently runs on the FireFly Sensor Networking Platform as well as the MicaZ motes. It includes a light-weight embedded resource kernel (RK) with rich functionality and timing support using less than 2KB of RAM and 18KB of ROM. Nano-RK supports fixed-priority preemptive multitasking for ensuring that task deadlines are met, along with support for CPU, network, as well as, sensor and actuator reservations. Tasks can specify their resource demands and the operating system provides timely, guaranteed and controlled access to CPU cycles and network packets. Together these resources form virtual energy reservations that allows the OS to enforce system and task level energy budgets.
OS IoT : Simplified development for IoT devices
ATIS Open Source – Internet of Things (OS-IoT) is an open source software library that simplifies the development of IoT devices that connect to an open, interoperable ecosystem.
Many IoT solutions are built as vertical silos which involves duplication of development effort and multiple, incompatible, solutions that perform similar functions like data collection and access control. The global oneM2M standard defines a common, interoperable platform for IoT systems which provides application-independent building blocks that fulfill the core tasks of data collection, management and distribution needed by IoT solutions.
I hope you like this post “IoT OS and RTOS for Internet of Things devices”. Do you have any questions? Leave a comment down below!
Thanks for reading. If you like this post probably you might like my next ones, so please support me by subscribing my blog.
We have other tutorials with ESP32 that you may find useful:
- Dynamic WLAN configuration for ESP32 Board | AutoConnect
- ESP32 BLE on Arduino IDE with UART Test
- ESP32 Bluetooth Low Energy (BLE) on Arduino IDE
- ArduinoOTA ESP32: Wi-Fi (OTA) Wireless Update from the Arduino IDE
- ESP32 with LoRa using Arduino IDE
- How To Use Grove-LCD RGB Backlight with NodeMCU
- NodeMcu to DHT Interface in Blynk app
- How To ON/OFF a bulb by Google voice assistant
- Arduino IDE | Arduino | Open Source Hardware/Softawre | Arduino Vs RPi
- WiFi LoRA 32 (V2) ESP32 | Overview | Introduction
- DHT11 sensor with ESP8266/NodeMCU using Arduino IDE
- Arduino Support for ESP8266 with simple test code
You may like also:
- Raspberry Pi – Introduction | Overview | Setup and Management | Tutorials
- MQTT | What is MQTT | MQTT in Depth | QoS | FAQs | MQTT Introduction
- How to set up Windows 10 IoT Core on the Raspberry Pi
- Best IoT Visual Programming Tools
- Arduino ESP32 support on Windows and Ubuntu