Open IoT Operating Systems

Over the past decade, a large number of open source OS projects have moved from the mobile market to the Internet of Things. In this article, we will consider which of the open source projects are targeting IoT ( Internet of Things ).

Keep in mind that almost all modern open OSs to one degree or another declare their suitability for use in IoT. But we will only look at those that really pay attention to such things as: low memory consumption, high energy efficiency, a modular and customizable communication stack, and strong support for wireless and sensor technologies. Also, some projects emphasize their groundwork in the field of IoT security and realtime. Real time can be really important in industrial IoT, although it is almost useless in everyday life.

Here we will not consider the so-called lightweight distributions, even if they are really lightweight, but do not set themselves IoT tasks, but are limited to ordinary use in ordinary workstations.

Also, we will not look towards Windows 10 for IoT Core. Although this project is capable of performing the tasks specific to IoT, it has nothing to do with open source.

So, let's begin.

Linux based OS


Brillo is Google’s development, which is lightweight Android and has gained some popularity over the past year, such as the one used on Intel Edison and Dragonboard 410c. However, this OS is tied to the Weave protocol, which is a development of Google and is not used anywhere else. The system is capable of working on equipment with 32MiB RAM and 128MiB flash.

Huawei LiteOS- Huawei’s LiteOS is based on Linux, but there aren’t many from Linux. They started talking about the system about a year ago and it is claimed that the kernel can be from 10KB in size. LiteOS can be used on a wide range of equipment from MCU devices to Android-compatible. Key features: trivial configuration, automatic detection of anything and everything, wide support for a variety of networks (LTE and mesh-networks including), fast download.

OpenWrt / LEDE / Linino / DD-Wrt is a well-known project that is most in demand on routers and other MIPS network equipment. Given the initial network confinement, he could not get past the IoT. These forks have no fundamental differences from each other and were born due to the NIH syndrome or organizational squabbles.

Ostro Linux- Based on the Yocto Project (to be discussed separately) and became known after Intel chose it for the Intel Joule, based on the Atom SoC T5700. Ostro Linux is compatible with IoTivity, supports many wireless technologies, and also provides a framework for working with a variety of sensors. Particular attention is paid to security, including cryptography.

Raspbian - Debian sharpened to run on the Raspberry Pi. Although there are other distributions for Raspberry that are more focused on IoT nuances, it was Raspbian that became the de facto standard for DIY projects based on Raspberry Pi.

Snappy ubuntu core--Ubuntu Core version with Snap packages. Canonical claims that this system is capable of running on "any Linux desktop, server, cloud or device." In principle, it is able to work on the Raspberry Pi, but generally requires a 600MHz CPU, 128MiB RAM, 4GiB flash. Pretty widely used. For example: Erle-Copter drones, Dell Edge Gateways, Nextcloud Box, and LimeSDR.

Tizen - Developed with support from Samsung. It was originally planned as an OS for smartphones, but something went wrong and now can only be found on TVs, and so on. smart watch. The project is not going to die, but its future is not clear. Able to start on "raspberries."

uClinux- the only more or less sane and common version of Linux that can work on microcontrollers. But so far only on some: Cortex-M3, M4, and M7. And there, for work, an external RAM connection is required.

Yocto Project is not a distribution, but a set of supported and developed Linux Foundation utilities, templates and methods for developing embedded distributions. A very successful project, which is the basis for most successful commercial distributions, sharpened under IoT.

Some famous non-Linux distributions


Apache Mynewt - Developed by Runtime for 32-bit microcontrollers with support from the Apache Software Foundation. It stands out for its good wireless support, extensive debugging capabilities and fine-tuning of power consumption. It is anticipated that it will be available soon for Arduino.

ARM Mbed - targets low-power, battery-powered motherboards based on Cortex-M microcontrollers. Enough for 8KiB of RAM. First appeared on BBC Micro: bit SBC. Initially, it was a single-threaded semi-proprietary piece of blob, but now it is a project open under Apache 2.0 with support for multithreading and real time.

Contiki- cannot compete with Tiny OS or RIOT OS, however, it only requires 10KiB RAM and 30KiB flash to work, it works great with wireless connectivity and is friends with IPv6. The OS is accompanied by an impressive set of utilities for development and testing, including the Cooja Network Simulator for debugging wireless networks. The main feature is low memory consumption.

FreeRTOS is a major competitor to Linux among embedded platforms. And although it experiences problems with drivers, user accounts, and other pleasant things from the world of full-fledged OSs, it is capable of working on 1KiB memory and 5-10 KiBROM. Although full network interaction with normal TCP / IP requires 24KiB RAM and 60KiB flash.

Fuchsia- Another development from Google. Little data, but the company claims that their OS can compete with FreeRTOS. Noodle buckets bring your own. Rakes for removing noodles from the ears also do not give out. We are waiting for the marketers to shut up and talk techies.

Minoca - The code is open under the GPLv3 license. The assemblies were prepared for x86, ARMv6, and ARMv7 architectures, including boot images for Raspberry Pi 2, Raspberry Pi, BeagleBone Black, Asus C201, PandaBoard and Galileo boards, as well as a QEMU emulator. The system is modular - the kernel subsystems are separated from each other, and the interaction with the equipment is abstracted. Device drivers are not tied to the kernel and are executed as universal executable files that are independent of the kernel version. 5 MiB RAM is enough to start.

Nuttx- It is widely used among developers of quadrocopters and other drones. BSD license. Powered by x86, Cortex-A5, -A8 and Cortex-M MCU. It is positioned by developers as "looks almost like Linux with only limited capabilities."

RIOT OS - for 8 years now this OS is known for its energy efficiency and the widest support for wireless networks. 1.5KiB RAM and 5KiB flash are enough to work, which is almost the same as Tiny OS. At the same time, the system offers multithreading, memory management, partial POSIX compatibility and other things that are more typical for Linux than for light RTOS. By the way, you can also develop for this OS from under Linux or OS X.

TinyOS- This OS is developed under a BSD license and requires the least amount of resources from all sane systems. The system is written in a C dialect called nesC. Main application: low-performance microcontrollers, although work is currently underway to support the Cortex-M3.

Zephyr - Developed by the Linux Foundation and consumes 2-8KiB RAM. It works on x86, ARM, ARC, but the focus is on microcontrollers with Bluetooth / BLE and 802.15.4 radio stations like 6LoWPAN. Zephyr is based on River's Rocket OS, which in turn is based on Viper, which is nothing more than a stripped-down version of VxWorks.

Also popular now: