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

  • Разработка для интернета вещей
  • За последнее десятилетие большое количество проектов ОС с открытым исходным кодом перешли от рынка мобильной связи к «интернету вещей». В этой статье мы рассмотрим какие из открытых проектов нацелены на 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.

    Теги:

    • IoT
    • embedded
    Добавить метки 3 сентября 2014 в 16:07

    Действительно ли вам нужен исходный код?

    • Программирование микроконтроллеров
    • Перевод
    Во многие знания многие печали
    Если вы спросите любого разработчика встроенного ПО, хочет ли он иметь доступ к исходному коду операционной системы реального времени, которую он использует, ответ почти наверняка будет - конечно. Точно так же обстоит дело с любым покупным ПО. Является ли такой ответ разумным для всех случаев и почему исходный код иногда необходим, а иногда его наличие менее полезно, чем ожидалось?

    Есть ряд ключевых критериев, которые инженеры применяют при выборе операционной системы реального времени (ОСРВ). Многие из них - стоимость, функциональность, лицензирование, поддержка - несомненно, весьма важны (особенно стоимость - таковы наши реалии). Тем не менее, еще один критерий - наличие исходного кода - может быть не столь важен, но всегда оценивается как сильный фактор.

    Доступность исходного код не означает, что он поставляется автоматически и бесплатно. Такой подход справедлив только для продуктов с открытым исходным кодом, а в других случаях производители могут взимать плату за исходный код или сделать его доступным по запросу.

    Разработка железа. Здесь тоже есть исходный код, что особенно верно для разработки с использованием VHDL и Verlog. Как дела обстоят здесь? Исторически сложилось так, что при выборе интегральной микросхемы и разработки ее применения инженер опирался на спецификации, в которых указана функциональность, расположение выводов, требования к питанию, и т.д. И при этом никто не ожидал увидеть полную схему внутреннего устройства ИС, хотя часто могли видеть структурную схему (в основном в качестве иллюстративного материала, который облегчал понимание принципов функционирования), а иногда даже и принципиальную схему (для аналоговых ИС типа ОУ), хотя и без номиналов.
    Инженер, которые сегодня разрабатывает ASIC или прошивку FPGA, скорее всего, будет использовать некоторые готовые IP блоки - предварительно упакованный блок, который обеспечивает определенный функционал. При этом, выбор будет основываться на спецификациях, и совершенно не очевидно, что оригинальный HDL для IP будет включен в комплект поставки. Этот подход с использованием «черных ящиков» хорошо известен в мире аппаратного обеспечения.

    Безопасность. Любая технология, которая включена в продукт должен быть выбрана, учитывая возможности будущей технической поддержки. Например, при выборе ИС следует избегать применения уникальных изделий от одного производителя, что может смягчить проблемы при сбоях поставок.
    При использовании IP, будь то аппаратные боки или поставляемое ПО, сбои поставок как таковые вряд ли могут иметь место (за исключением случаев разовых лицензий), но постоянная поддержка должна присутствовать. Поэтому вопрос о том, будет ли Ваш поставщик в бизнесе на протяжении всего срока жизни Вашего продукта, лучше задать до того, как выбрать конкретную реализацию.

    Если исходный код для IP доступен, это дает возможность решения любых (ну почти любых) проблем с программным обеспечением, даже если поставщик больше не в состоянии предложить поддержку. По этой причине, многие покупатели RTOS и т.д. хотели бы иметь исходный код на полке, даже если они никогда не будут смотреть на него, просто на всякий случай.

    Настройка программного обеспечения.Основным различием между встраиваемыми системами и десктопами является изменчивость первых. Большинство ПК похожи на многие другие и выбор только межу средой исполнения: Windows, Mac, или Linux. Встроенные системы, в свою очередь, невероятно изменчивы - различные процессоры, конфигурации памяти и периферийных устройств. В результате, программное обеспечение IP должен быть гибким, так чтобы он мог быть развернут на различных системах. Хотя многие продукты, такие как RTOS поставляются в двоичном виде - обычно библиотеке, которая настроена на конкретную архитектуру, требования к поставке исходного кода могут стимулировать поставщиков, исключая необходимость сохранения и поддержки многочисленных вариаций, поскольку предоставление IP в виде исходного решает многие из этих вопросов. Пользователь может построить код для конкретного процессора, адаптировать к карте памяти устройства, и добавить необходимые расширения устройств. В некоторых случаях, IP блок может быть конфигурирован с помощью условной компиляции - как правило, для определения конфигурации редактируется заголовочный файл.

    Сертификация. Для некоторых типов приложений, таких военные / авиационные и медицина, встроенное ПО должно быть сертифицировано на безопасность и соответствие различным стандартам. Этот процесс является сложным и дорогим и обычно влечет за собой проверку каждой строки кода. Поэтому обычно невозможно купить «предварительно сертифицированные» блоки ПО, так как все приложение является предметом рассмотрения. Таким образом, разработчик критически важных приложений, скорее всего, искать IP, который доступен вместе с исходным кодом, так чтобы полная проверка могла быть проведена.

    Что такое Исходный код?
    Вопрос может показаться странным, но без ответа на него обсуждение каких-либо аспектов его наличия (или отсутствия) превращается в несколько странное занятие. Ответ может показаться очевидным: исходный код некоторой программы представляет собой набор файлов, содержащих инструкции на языке высокого уровня или ассемблере, которые могут быть скомпилированы и собраны в функционирующие двоичные инструкции. Сразу вопрос - необходимые для процесса преобразования программы и среда исполнения для них являются частью исходного кода (в бинарном виде)? Тем не менее данному определению отвечают по меньшей мере 3 формы, в которых «исходный код» может быть поставлен (для примера поговорим о языке С) в порядке ухудшения качества:
    1) Действительно исходный код, с хорошей планировкой, четкими конвенциями именования переменных и хорошо откомментированный (при условии, что такой имеется у разработчика IP, что совершенно необязательно).
    2) Строки кода, которые будут компилировать успешно, НО без комментариев или особенно значимых имен идентификаторов.
    3) Строки кода после обфрускации, которая делает код нечитаемым человеком, но при этом приемлем для компилятора. Это делается с помощью замены имен идентификаторов на бессмысленные и удаления всех комментариев и синтаксически нетребуемых пробелов. Существует обратный процесс, но его результаты трудно назвать приемлемыми.
    Все эти формы используются поставщиков программного обеспечения для следующих целей:
    1) является тем, что большинство покупателей ожидают получить и то, что многие производители действительно обеспечивают. Тем не менее, при принятии решения о покупке, если вам требуется исходный код, важно убедиться что это именно такой вариант, если сомневаетесь, просто попросите образцы.
    2) обычно используется, когда продавец хочет доставить необходимый минимум, который может быть (только) достаточно хорошо для сертификации.
    3) используется для защиты содержимого IIP от посторонних глаз, что означает, что программное обеспечение получает преимущество конфигурируемости, но не более того.

    Недостатки исходного кода.
    Самый главный недостаток того, что исходный код доступен: это сильное искушение. Каждый разработчик хочет сделать свое программное обеспечение как можно лучше (ну есть такая точка зрения). Так, например, если API ОСРВ не работает в точности так, чтобы быть оптимальным для приложения, доступность исходного кода предоставляет возможность изменить его.
    Хотя может показаться, что сделать приложение оптимальным - это здорово, но есть проблема долгосрочной поддержки. Что, если существует проблема с функциональностью RTOS? Поставщик не будет поддерживать модифицированный продукт. Что делать, если выходит новая версия ОСРВ? Включение ее в редизайн может потребовать значительное время на проведение повторных модификаций, особенно если их автор у Вас уже не работает (ну или Вы делали эти модификации 3 года назад и естественно, или, как говорят, разумеется, не озаботились написанием соответствующей документации).

    Рассмотрев ситуации, в которых исходный код может быть желательным, полезным или необходимым, следует сделать вывод, что он не требуется безусловно и всегда. Если вы покупаете IP от большого, хорошо известного и стабильного поставщика, который может предложить долгосрочную поддержку, то наличие исходного кода не является актуальным и может даже быть занесено в недостатки.

    Все современные цифровые устройства работают на определенной операционной системе. Например, это может быть Windows или Linux, а для смартфонов и планшетов – Android и iOS.

    Операционные системы бывают открытого и закрытого типа. Под понятием «открытая операционная система» имеется в виду система с открытым исходным кодом. Этот код открыт для редактирования, и изменять его может любой пользователь (естественно, в рамках лицензии и закона). А закрытая операционная система не позволяет «копаться» в ее исходном коде.

    Открытые ОС, как правило, бесплатные, очень быстро развиваются, и их можно детально подстроить под любое устройство. А все потому, что любой пользователь, который в этом хоть немного разбирается, может исправлять ошибки в системе, писать драйвера и пр. Ошибки в закрытых операционных системах исправляются только сервис-паками, которые выпускают официальные разработчики данной ОС.

    Примеры открытых и закрытых ОС

    Примером открытой операционной системы для смартфонов и планшетов является Google Android. Данная ОС позволяет делать пользователю все, что он захочет – переписать некоторые драйвера, добавить поддержку новых функций и т.д. А вот операционная система Windows Phone считается закрытой, и не дает пользователям никакого права на вмешательство. Им остается только периодически устанавливать сервис-паки, покупать программы или же пользоваться бесплатными.

    Также есть еще условно открытые ОС – iOS и Symbian. В таких ОС тоже нельзя ничего менять, но для них можно писать программы с помощью специального софта, который предоставляют разработчики. Самые популярные ОС для смартфонов – это Google Android и iOS. Для обычного пользователя, который не занимается созданием новых программ, разница между этими ОС будет лишь в интерфейсе.

    Что касается компьютерных операционных систем, то Windows считается закрытой операционной системой, а Linux – открытой. Естественно, изменять под себя можно только Linux. Есть еще одна операционная система – Mac OS, которая очень похожа по архитектуре на Linux, но она считается закрытой ОС.

    Что касается выбора ОС для пользования, то тут каждый пользователь решает сам. Например, в закрытых операционных системах вероятность словить вирус гораздо выше, и в таком случае придется ждать пока разработчики исправят дыру в системе очередным сервис-паком. Кроме того, Windows и Mac OS являются платными операционными системами, а Linux находится в свободном доступе для всех желающих.

    Помимо Android мы с вами наверняка знаем о существовании iOS и Windows Phone. Еще где-то далеко существует BlackBerry OS, и в прошлом осталась Symbian. Это то, что на слуху, однако есть несколько операционных систем, которые известны гораздо меньше, но при этом достойны внимания. Как и Android, они построены на ядре Linux и имеют открытый исходный код. Однако это не помогло им добиться таких же успехов.

    Ubuntu Phone

    Canonical разработала под действием желания стандартизировать все вокруг. Подобно Windows, который автоматически подстраивается под ваш компьютер после установки, Ubuntu готова подстроиться под любые устройства, будь то смартфон, планшет, телевизор или компьютер. В зависимости от типа устройства ОС сама подстроится под размер экрана и тип ввода данных.

    Пользователи Ubuntu Phone могут просто подключить смартфон к компьютеру и использовать на экране компьютера настольную версию Ubuntu. В этом идеология немного совпадает с Microsoft, которая хочет стереть грани между мобильной и настольной ОС, а также приложениями для них.

    HP webOS

    Изначально webOS принадлежала компании Palm, но HP купила Palm в 2010 году. У HP были большие планы на webOS, планировалось выпустить смартфон, планшет, принтер и даже компьютер под управлением этой ОС. Был запущен планшет HP TouchPad, но он не смог конкурировать с iPad, и идея не пошла дальше.


    Позднее компания LG использовала возможности webOS в своем умном телевизоре, и это оказалось неплохой идеей. webOS, несмотря на свою непопулярность, обладает некоторыми интересными особенностями, которые еще можно продать.

    Samsung Tizen

    Tizen построен на ядре Linux, а интерфейс этой ОС полностью копирует TouchWiz от Samsung. Другими словами, в этой системе нет ничего незнакомого и в то же время . Сегодня на этой ОС работают некоторые умные часы компании Samsung, однако больших планов компания на нее не имеет. У них проблема с привлечением разработчиков, а без приложений Tizen никому не нужна.

    Jolla Sailfish

    У этой ОС длинная и интересная история. Как-то в Nokia работали над Maemo-устройствами, построенными на Linux. Позднее Maemo стала частью платформы MeeGo OS, которая принадлежала Intel. Единственным смартфоном, выпущенным на MeeGo, стал Nokia N9, и он пользовался популярностью среди разработчиков. Однако перед сделкой с Microsoft проект MeeGo был закрыт, и компания сконцентрировалась на Windows Phone.

    Большая часть команды, работавшей над MeeGo, ушла из компании и открыла собственную, под названием Jolla. Все права на MeeGo остались у Nokia, и они были вынуждены создать собственную на основе исходных кодов MeeGo. Эта ОС может работать как с Qt-приложениями, так и с приложениями для Android.

    Amazon Fire

    В планшетах Amazon Kindle используется то, что Amazon называет Fire OS. На самом деле это Android, версия AOSP, над которой серьезно поработали в Amazon. Узнать в Fire OS Android просто невозможно. При этом она работает с Android-приложениями, вот только загружать их надо не из Google Play. Amazon не использует сервисы Google, продавая контент через собственный магазин, и он достаточно крупный.

    Firefox OS

    Mozilla давно пытается создать свое решение для смартфонов. То, что они имеют , построено на Gecko и браузере Firefox. Все приложения для Firefox OS поддерживают современные веб-технологии, такие как HTML 5. В Mozilla считают, что эпоха нативных приложений уйдет, и будущее за веб-приложениями. Так же считал Стив Джобс, запуская iPhone.

    Nokia X

    Над этой платформой трудятся в Microsoft. Она представляет из себя смесь Android и Windows Phone, но построена она все же на Android. Смартфоны на этой платформе не встретили большой любви пользователей из-за отсутствия сервисов от Google, но продаются, из-за невысокой стоимости.

    По материалам EFYTimes



    
    Top