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.
Read this article on my personal Blog https://iotbyhvm.ooo/iot-os/
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
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
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.
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
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
Originally published at My blog https://iotbyhvm.ooo 
 
No comments:
Post a Comment