Over the past decade, a large number of open source operating system projects have moved from the mobile market to the “Internet of things”. In this article we will look at which of the open projects are aimed at IoT ( Internet of Things ).
Keep in mind that almost all modern open source operating systems declare their suitability for use in IoT to one degree or another. But we will consider only those who really pay attention to such things as: low memory consumption, high energy efficiency, modular and customizable communication stack and strong support for wireless and touch technologies. Also, some projects highlight their developments in the field of IoT security and realtime. Realtime 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 the task of IoT, but are limited to the usual use in ordinary workstations.
Also, we will not look in the direction of Windows 10 for IoT Core. This project, although capable of performing the tasks peculiar to IoT, has nothing to do with the open source.
')
So, let's begin.
Linux based OS
Brillo is a development by Google, which is a lightweight Android and which has gained some popularity over the year of its existence. For example, it is used on Intel Edison and Dragonboard 410c. However, this OS is tied to the Weave protocol, which is developed by Google and is not used anywhere else. The system is able to work on equipment with 32MiB RAM and 128MiB flash.
Huawei LiteOS - Huawei's LiteOS is based on Linux, but not much is left of Linux. The system was talked about a year ago and it is argued that the core can be 10KB in size. LiteOS can be used on a wide range of equipment from MCU-devices to Android-compatible. The main features are: trivial configuration, automatic detection of everything and everyone, broad support for various networks (LTE and mesh networks including), fast loading.
OpenWrt / LEDE / Linino / DD-Wrt is a well-known project most demanded on routers and other MIPS network equipment. Given the initial network impenetrability, he could not pass by IoT. These forks have no fundamental differences from each other and were born due to the NIH syndrome or organizational squabbles.
Ostro Linux is based on the Yocto Project (to be reviewed 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. Special attention is paid to security, including cryptography.
Raspbian - Debian, honed to work on Raspberry Pi. And although there are other distributions for “raspberries” that more purposefully deal with the nuances of IoT, but 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 can work on “any Linux desktop, server, cloud or device”. In principle, it can work on Raspberry Pi, but generally requires a 600MHz CPU, 128MiB RAM, 4GiB flash. Quite widely used. For example: Erle-Copter drones, Dell Edge Gateways, Nextcloud Box, and LimeSDR.
Tizen - developed with the support of Samsung. It was originally planned as an OS for smartphones, but something went wrong and now you can only find it on TVs and so on. smart watch. The project is not going to die, but its future is not clear. Able to run on the "raspberry".
uClinux is the only more or less sane and popular version of Linux that can run on microcontrollers. But so far only on some: Cortex-M3, M4, and M7. Yes, and there is required to connect an external RAM.
Yocto Project is not a distribution kit, 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 the majority of successful commercial distributions, sharpened by IoT.
Some famous non-linux distros
Apache Mynewt - developed by Runtime for 32-bit microcontrollers with support from the Apache Software Foundation. It stands out for good support for wireless connections, extensive debugging capabilities and fine-tuning of power consumption. It is assumed that it will soon be available for Arduino.
ARM Mbed - targets low-power, battery-powered Cortex-M based microcontrollers. For work, 8KiB of RAM is enough. First appeared on BBC Micro: bit SBC. Initially, it was a single-stream semi-proprietary blob, but now it is a project with multithreading and realtime that is open under the Apache 2.0 license.
Contiki - can not compete with Tiny OS or RIOT OS, however, it only requires 10KiB RAM and 30KiB flash, it works perfectly with a wireless connection and is friendly 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 "chip" - low memory consumption.
FreeRTOS is the main Linux rival among embedded platforms. And although it has problems with drivers, user accounts and other pleasant things from the world of full-fledged operating systems, it can work on 1KiB memory and 5-10 KiBROMs. Although for full network interaction with normal TCP / IP requires 24KiB RAM and 60KiB flash.
Fuchsia is another development from Google. There is 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, too, do not give out. We are waiting for the marketers to shut up and techies talk.
Minoca - the code is open under the GPLv3 license. The builds are prepared for x86, ARMv6 and ARMv7 architectures, including boot images for the Raspberry Pi 2, Raspberry Pi, BeagleBone Black, Asus C201, PandaBoard and Galileo boards, as well as the 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 designed as universal executable files that are independent of the kernel version. For launch, 5 MiB RAM is enough.
NuttX - widely used among developers of quadcopters and other drones. BSD license. Powered by x86, Cortex-A5, -A8 and Cortex-M MCU. Developed by developers as "looks almost like Linux only with reduced capabilities."
RIOT OS - for 8 years now this OS has been known for its energy efficiency and the broadest support for wireless networks. 1.5KiB RAM and 5KiB flash are enough for work, which is almost the same as in 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, it is possible to develop for this OS from under Linux or OS X.
TinyOS - this OS is developed under the BSD license and requires the least amount of resources from all sane systems. The system is written in C dialect called nesC. The main application: inefficient microcontrollers, although currently working on support for Cortex-M3.
Zephyr - Developed by the Linux Foundation and consumes 2-8KiB RAM. Powered by 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.