Открытые операционные системы для интернета вещей

За последнее десятилетие большое количество проектов ОС с открытым исходным кодом перешли от рынка мобильной связи к «интернету вещей». В этой статье мы рассмотрим какие из открытых проектов нацелены на IoT (Internet of Things).

Имейте в виду, что почти все современные открытые ОС в той или иной степени заявляют о своей пригодности для использования в IoT. Но мы рассмотрим только тех, которые действительно уделяют внимание таким вещам как: низкое потребление памяти, высокая энергетическая эффективность, модульный и настраиваемый коммуникационный стек и сильная поддержка беспроводных и сенсорных технологий. Также некоторые проекты подчеркивают свои наработки в области безопасности IoT и реалтаймовости. Реалтайм может быть действительно важен в промышленном IoT, хотя и почти бесполезен в бытовом.

Мы тут не будем рассматривать так называемые lightweight-дистрибутивы, даже если они действительно лёгкие, но не ставят перед собой задачи IoT, а ограничиваются обычным применением в обычных рабочих станциях.

Также мы не будем смотреть в сторону Windows 10 for IoT Core. Этот проект хоть и способен выполнять свойственные для IoT задачи, но к опенсорсу не имеет никакого отношения.

Итак, начнём.

ОС, основанных на Linux


Brillo — разработка Google, представляющая собой облегчённый Android и которая за год своего существования завоевала некоторую популярность.Так, например, она используется на Intel Edison и Dragonboard 410c. Однако эта ОС завязана на протокол Weave, который является разработкой Google и нигде больше не используется. Система способна работать на оборудовании с 32MiB RAM и 128MiB flash.

Huawei LiteOS — LiteOS компании Huawei основана на Linux, но от Linux там осталось не так уж и много. О системе заговорили где-то год назад и утверждается, что ядро может быть размеров от 10KB. LiteOS может использоваться на широком спектре оборудования от MCU-устройств до Android-совместимых. Основные фишки: тривиальная настройка, автоматическое обнаружение всего и вся, широкая поддержка разнообразных сетей (LTE и mesh-сети в том числе), быстрая загрузка.

OpenWrt/LEDE/Linino/DD-Wrt — всем известный проект, наиболее востребованный на маршрутизаторах и другом MIPS сетевом оборудовании. Учитывая изначальную сетевую заточенность он не мог пройти мимо IoT. Эти форки не имеют принципиальных отличий друг от друга и родились из-за NIH-синдрома или организационных склок.

Ostro Linux — основан на Yocto Project (будет рассмотрен отдельно) и стал известен после того, как Intel выбрала его для Intel Joule, базирующемся на Atom SoC T5700. Ostro Linux совместим с IoTivity, поддерживает множество беспроводных технологий, а также предоставляет фреймворк для работы с разнообразными датчиками. Особое внимание уделяется безопасности, включая криптографию.

Raspbian — Debian, заточенный для работы на Raspberry Pi. И хотя для «малины» существуют и другие дистрибутивы, которые более целенаправленно занимаются нюансами IoT, но именно Raspbian стал стандартом de facto для DIY-проектов на базе Raspberry Pi.

Snappy Ubuntu Core --версия Ubuntu Core со Snap-пакетами. Canonical утверждает, что эта система способна работать на «any Linux desktop, server, cloud or device». В принципе способна работать на Raspberry Pi, но вообще требует 600MHz CPU, 128MiB RAM, 4GiB flash. Довольно широко используется. Например: Erle-Copter drones, Dell Edge Gateways, Nextcloud Box, and LimeSDR.

Tizen — развивается при поддержке Samsung. Изначально планировался как ОС для смартфонов, но что-то пошло не так и сейчас можно встретить лишь в телевизорах и т.н. смарт-часах. Проект умирать не собирается, но и будущее его не ясно. Способен запуститься на «малине».

uClinux — единственная более или менее вменяемая и распространённая версия Linux, способная работать на микроконтроллерах. Но пока лишь на некоторых: Cortex-M3, M4, и M7. Да и там для работы требуется подключение внешней RAM.

Yocto Project — это не дистрибутив, а набор поддерживаемых и развиваемых Linux Foundation утилит, шаблонов и методов для разработки embedded-дистрибутивов. Весьма успешный проект, который является базисом для большинства успешных коммерческих дистрибутивов, заточенных под IoT.

Некоторые известные не-Linux дистрибутивы


Apache Mynewt — разработан компанией Runtime для 32-bit микроконтроллеров при поддержке Apache Software Foundation. Выделяется хорошей поддержкой беспроводных соединений, широкими возможностями для отладки и тонкой настройкой энергопотребления. Предполагается, что скоро будет доступен для Arduino.

ARM Mbed — нацелен на маломощные, работающие от батареек, платы на базе Cortex-M микроконтроллеров. Для работы достаточно 8KiB of RAM. Впервые появился на BBC Micro:bit SBC. Изначально представлял из себя однопоточный полупроприетарный кусок блоба, но теперь это открытый под Apache 2.0 лицензией проект с поддержкой многопоточности и реалтайма.

Contiki — не может соревноваться с Tiny OS или RIOT OS, однако для работы требует всего лишь 10KiB RAM and 30KiB flash, отлично работает с беспроводной связью и дружит с IPv6. ОС сопровождается внушительным набором утилит для разработки и тестирования, в том числе и Cooja Network Simulator для отладки беспроводных сетей. Основная «фишка» — малое потребление памяти.

FreeRTOS — основной конкурент Linux среди встраиваемых платформ. И хотя испытывает проблемы с драйверами, учётными записями пользователей и прочими приятными вещами из мира полноценных ОС, но зато способен работать на 1KiB памяти и 5-10 KiBROM. Хотя для полноценного сетевого взаимодействия с нормальным TCP/IP требуется 24KiB RAM and 60KiB flash.

Fuchsia — ещё одна разработка от Google. Данных мало, но компания утверждает, что их ОС может конкурировать с FreeRTOS. Вёдра для лапши приносить свои. Грабли для снятия лапши с ушей тоже не выдают. Ждём когда замолчат маркетологи и заговорят технари.

Minoca — код открыт под лицензией GPLv3. Сборки подготовлены для архитектур x86, ARMv6 и ARMv7, в том числе сформированы загрузочные образы для плат Raspberry Pi 2, Raspberry Pi, BeagleBone Black, Asus C201, PandaBoard и Galileo, а также эмулятор на основе QEMU. Система модульная — подсистемы ядра отделены друг от друга, а взаимодействие с оборудованием абстрагировано. Драйверы устройств не привязаны к ядру и оформляются в виде универсальных исполняемых файлов, не зависящих от версии ядра. Для запуска достаточно 5 MiB RAM.

NuttX — широко используется среди разработчиков квадрокоптеров и прочих дронов. BSD лицензия. Работает на х86, Cortex-A5, -A8 и Cortex-M MCU. Позиционируется разработчиками как «выглядит почти как Linux только с урезанными возможностями».

RIOT OS — вот уже 8 лет как эта ОС известна своей энергоэффективностью и широчайшей поддержкой беспроводных сетей. Для работы достаточно 1.5KiB RAM and 5KiB flash, что почти так же, как и у Tiny OS. При этом система предлагает многопоточность, управление памятью, частичную POSIX-совместимость и прочие вещи, которые более типичны для Linux, нежели для лёгких RTOS. Кстати, разрабатывать под эту ОС можно и из-под Linux или OS X.

TinyOS — эта ОС разрабатывается под BSD лицензией и требует наименьшее количество ресурсов из всех вменяемых систем. Система написана на диалекте Си, называемом nesC. Основное применение: малопроизводительные микроконтроллеры, хотя в настоящее время проводится работа над поддержкой Cortex-M3.

Zephyr — разрабатывается Linux Foundation и потребляет 2-8KiB RAM. Работает на x86, ARM, ARC, но основное внимание уделяется микроконтроллерам с Bluetooth/BLE и 802.15.4 радиостанциям вроде 6LoWPAN. Zephyr базируется на River’s Rocket OS, которая в свою очередь базируется на Viper, который не что иное как урезанная версия VxWorks.
  • +26
  • 13.8k
  • 3
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 3

    0
    С недавних пор существует MinocaOS (только что на хабр о ней сообщили) — советую добавить.
      0
      Выглядит неплохо. Добавил. Спасибо.
      0
      Вот еще: https://github.com/embox/
      https://habrahabr.ru/company/embox/blog/259721/

      З.Ы.: использовали ее в своем проекте — довольны)

      Only users with full accounts can post comments. Log in, please.