В триллионные бизнесы – на белом коне под знаменем Open Source

12 март, 2015 - 09:35Андрей Зубинский

Не один раз писал – IoT и Open Source неразделимы, – кажется, наступило время обозреть хоть с высоты птичьего полёта эту картину, не столько для доказательства утверждения, сколько в качестве какого-то минимального «справочника». Постараюсь воздержаться от обстоятельных комментариев ко всему последующему, у меня есть вполне (и хорошо) обоснованная система взглядов на IoT, но она для справочных целей даже вредна. Ограничусь только одним очевидным замечанием – на этом этапе развития IoT почти всеми забыты два фундаментальных принципа инженерии – декомпозиция (разбиение большого сложного на минимально возможный набор простого) и нейтральность (максимальная независимость любого из полученного набора простого от любой локальной инженерной культуры). Почти все стараются повторить историю IBM PC и создать этакую «одну систему для всего IoT вообще». Ну, такой период развития сейчас, что поделать. Эволюционный процесс очень многое поставит на свои места.

(К слову, продолжение о тестировании IoT-устройств непременно будет, мне нужно было какое-то время, чтобы всерьёз «пощупать» довольно красивую и доступную технологическую цепочку)

Итак, преамбулы и отступления закончились, дальше будут короткие обзоры самых важных (по моему скромному мнению) open source масштабных системообразующих IoT-проектов (всякое косвенное, что создаётся на базе перечисленного, даже не буду касаться). Начинаем с самого низкого уровня, который в IoT ожидается самым бесчисленным – с уровня конечных устройств, всех этих «умных сенсоров и актуаторов», «управляемых радиомаячков» (beacons), бытовых устройств, простых роботов etc.

ARMmbed

Совсем недавно это было просто и скромно «mbed». Но в ARM рассмотрели важность проекта до необходимости приобретения пусть малых, но весьма значимых в своей области компаний, и интеграции продуктов этих приобретений в open source комплект mbed.

ARMmbed – сквозной технологический стек, начинающийся от самого нижнего уровня, от «железа». Это же ARM, так что уровень «железа» - процессорные ядра семейств Cortex M, шины ARM, универсальный для семейств уровень абстракции аппаратных средств CMSIS (этакий супер-HAL от ARM, независимый от конечных производителей и призванный внести порядок в грозящую огромному миру ARM сегментацию) и аппаратная «обвязка», которую лицензиаты ARM создают в конкретных микроконтроллерах. Над CMSIS и драйверами периферии – пока всё ещё ожидаемая операционная система реального времени mbed™ OS, с которой ARM явно по технологическим, конкурентным и репутационным причинам очень не спешит, не желая выдавать за production ready код нечто «сырое» весьма чувствительной к качеству индустрии (это же не для конечного потребителя). План выхода mbed™ OS до второго стабильного релиза «затянут» аж до февраля 2016 года (не думайте, что это будет «гигантский продукт», исходные тексты самой популярной RTOS FreeRTOS – всего 4 файла очень скромных масштабов, речь идёт ведь о «железе» микроскопических по нынешним временам мастштабов). В mbed™ OS будет входить весь стек «модных» IoT-протоколов, и, что важно, стек, реализующий безопасность транспортного уровня, для этого ARM не так давно купила голландскую компанию Offspark, производителя TLS (SSL) встраиваемого стека для малых вычислителей, работающих под управлением RTOS (то есть, этот TLS-стек не требует POSIX-совместимости от ОС и учитывает весь спектр ограничений embedded-программирования).

Итоговое о ARMmbed – этим проектом ARM пытается создать полноценную сквозную IoT-систему для реализации «всего на уровне оконечных устройств IoT с помощью встраиваемого компьютера архитектуры ARMmbed, использующего весь стек mbed™ OS». Предлагаемая (или даже навязываемая) таким решением модель предусматривает полный отказ разработчиков конечных IoT-устройств от фактически всех предыдущих наработок, освоение ими всего технологического стека ARMmbed и «вписывания» своих задач в код реального времени, разделяющий это самое время со всеми программами стека mbed™ OS. То есть, это мир, в котором всё «завязано на ARM, всё зависит от ARM, в том числе, и все конструкторские решения при разработке конечной продукции в областях, никакого отношения к ARM и её лицензиатам не имеющих». Учитывая мощь ARM (не надо смотреть на объёмы продаж в деньгах, ARM – феноменально мощная системообразующая компания мирового уровня), заключающуюся в умениях её конструкторов создавать парализующие волю индустрии очень яркие и талантливые решения, а её сейлз-подразделений – добиваться благосклонности лицензиатов, сверхзадача компанией может быть решена. Не факт, что это будет «одна система для одного мира», но безоговорочно, без всяких прогнозистских предположений – свою территорию (очень большую) в мире IoT ARMmbed завоюет. Хотя бы потому, что проект mbed уже давольно давно работает на «образование» и «тренировку» будущих массовых IoT-разработчиков.

FreeRTOS

Это насколько возможно в embedded-мире платформенно-независимый программный стек, включающий собственно ядро ОС реального времени FreeRTOS, IoT-микростек Nabto (радикально отличающийся от решений, основанных на «традиционных унаследованных протоколах»), свои реализации традиционных сетевых стеков (TCP/IP, конечно) и стеков безопасности транспортного уровня. А также почти что угодно ещё, включая инструментальную поддержку вплоть до симуляторов кода реального времени для «обкатки» в POSIX-совместимых «настольных» ОС и поддержанной трассировки исполнения кода реальным вычислителем, инструментальную поддержку фактически всеми производителями «железа» и кросс-средств разработки для него (например, компания Microchip поддерживает программирование для FreeRTOS на уровне интегрированного программного фреймворка Harmony и IDE). В общем, это целый мир, в котором исходные тексты всего всегда доступны всем, а коммерческое лицензирование стоит на традиционных для индустрии принципах. Кроме того, у проекта есть сертифицированная для самых требовательных ко всему приложения ветка SafeRTOS (естественно, это уже очень недешёвое удовольствие, но такой скромный пакет сертификатов и инструментальная поддержка тотального контроля собственного кода на соответствие требованиям стандартов прикладных областей, существенно упрощают разработчику конечных устройств вход на очень специфические рынки.

Итоговое о FreeRTOS – почти что очень хорошая для embedded-мира независимость от аппаратной платформы (для реального разработчика это означает свободу выбора и возможность сохранения собственных наработок и опыта), стабильное развитие, принятие embedded-индустрией (годами FreeRTOS значится в лидерах этого мира, «выедая» примерно 80% рынка невидимых вычислителей, и картина не меняется), хорошая поддержка разработчиками «железа» (для них доступность и бесплатность тиражирования, royalty-free, продукции с кодом FreeRTOS – стимулятор продаж), хорошая поддержка на уровне кросс-средств разработки сторонних производителей, полнота доступных программных стеков и возможность использования собственных стеков и фреймворков от производителей «железа». Естественно, FreeRTOS не может быть такой же «идеально завершённой системой», как «полностью своё от ARM» (расплата за кросс-платформенность), и уж точно не может быть такой же «хорошей во всём на любом «железе»» (по той же самой причине). Естественно, система требует глубинного её понимания, адаптации её кода к конкретным применениям, etc, чудес не бывает.

NuttX

Малозаметный, малошумный проект, сравнительно давно начавшийся как «разработка одного человека». Поразительный не только в дерзком демонстративно-воодушевляющем «один в поле воин» (автор, Грегори Эллис Натт создавал первый релиз системы три года, с 2004 по 2007й, в 2011м система доросла до открытия автором компании NX Engineering, занимающейся сопровождением коммерчески используемой NuttX, версия которой на момент написания текста – 7.8), но и в ряде особенностей.

NuttX – редкая open source POSIX-совместимая BSD-лицензированная (то есть, делай с кодом что хочешь, только уважай автора упоминанием) полноценная ОС (со всеми программными стеками «всего») реального времени. При этом ещё и кросс-платформенная со спектром аппаратных платформ от 8-битовых до 32-битовых. Полнота программных стеков достойна удивления и уважения (не буду пересказывать всё это, смысла нет), разве что упомяну совсем уж редкие в мире RTOS командный интерпретатор и собственную графическую подсистему c оконным менеджером и библиотекой виджетов. В общем, это такой BSD-лицензированный аналог то ли знаменитой QNX, то ли VxWorks (естественно, со всеми «вытекающими» из особенностей проекта следствиями, как-то: отсутствием серьёзных сертификаций, базовым характером кросс-платформенной поддержки, совсем слабенькой реализацией драйверов модной и востребованной радиочастотной периферии etc etc etc).

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

Итоговое о NuttX – абсолютно выбивающаяся из общего ряда уникальная полноценная система, поставляемая в виде пригодного для реального портирования на выбранное «железо» комплекта исходных текстов (очень грамотно написанных, к слову) и документации, не вводящая никаких ограничений ни на что вообще, допускающая коммерческую поддержку разработок непосредственно её автором (это, кстати, большой плюс в реальности, потому что никакой «менеджер службы поддержки» не знает систему так, как её автор), при реальном проектировании требует значительной работы и затрат, но не обязует делиться результатами с потенциальными конкурентами, аналог QNX и VxWorks для тех, у кого время изучения и разработки дешевле затрат на лицензирование, изучения и разработку, реально работоспособна и применима в реальных конечных продуктах.

Contiki

Платформа-легенда, ещё одна взрывная разработка одного человека (Адам Дункельс не только автор концепции и фундаментальных узлов Contiki, но и один из первопроходцев «встраиваемого интернета»), превратившаяся в международное сообщество разработчиков и весьма успешную компанию Thingsquare. Системообразующий стек для конечных устройств IoT – собственная даже не совсем RTOS, её «тонкий» заменитель, сетевой стек (но штатных средств безопасности нет), кросс-платформенность (но сравнительно скромная), замечательный свой симулятор беспроводных сетей, свой MAC-уровень для беспроводных сетей, собственные средства тестирования embedded-кода, пересказывать сайт нет смысла. О влиятельности Contiki достаточно упомянуть одну «мелочь» - код IPv6 этой платформы разработан в Cisco, сертифицирован и передан в «общую копилку» платформы.

Итоговое о Contiki – более простые в освоении механизмы, заменяющие «ядро» RTOS, хорошо знакомые опытным embedded-программистам, чем RTOS, отличные сетевые стеки, особенно реализация 6LoWPAN (IPv6 для встраиваемых систем), очень серьёзная поддержка беспроводных сетей (это «конёк» Contiki), скромные кросс-платформенные «из коробки tar.gz файла исходных текстов» возможности, отсутствие в стеке собственных подсистем безопасности, стабильное не очень быстрое развитие, лучшие во всём классе средства высокоуровневого моделирования беспроводных сетей, возможность реализации беспроводных роутеров на основе общей платформы, доказанная применимость и работоспособность в реальных коммерческих конечных устройствах IoT, развитые средства тестирования, не очень хорошая (как и у NuttX) «безболезненность» использования стороннего кода из стеков производителей.

Riot

IoT-стек с глубокими академическими корнями, многократно менявший названия с 2008 года. Молодая разработка, начинавшаяся с ядра RTOS, но весьма амбициозная и быстро «наполняющаяся IoT-содержимым». К сожалению, до сих пор не доходили руки с ней разобраться всерьёз, поэтому просто её упоминаю, больше напоминая – это уже не RTOS, а именно IoT-платформа c рядом интересных решений (если поверхностно судить), достойная внимания.

Micrium Spectrum

Понимаю, что лицензионные отчисления и модель лицензирования компании Micrium (известной многим по RTOS µC/OS) примерно так же соответствуют возможностям наших разработчиков, как smart watch соответствуют реальным потребностям жителей наших спальных районов, но сугубо справедливости (и ознакомления) ради.

Ещё одна полная IoT-платформа от одной из королев коммерческих программных embedded-систем. Всё, что душа может пожелать, включая микро-Java. Какое угодно сертифицирование, дающее вход во всё, что требовательно к надёжности (авионика, медицина, ядерные технологии, автопром, космос). Поддержка пристойного списка «железа» (но не такого, какого бы хотелось, опять же, чудес не бывает – требования и сертификация надёжности неизбежно сокращают список поддерживаемого «железа»), инструментарий до уровня аппаратных симуляторов, версия «ОС в железе» (для конструкторов, использующих программируемую логику), соответствие промышленным стандартам etc, это всё из большого серьёзного мира M2M, это всё дорого, но для решения целых классов задач такая дороговизна оборачивается существенной экономией.

Естественно, всё ПО Micrium поставляется с открытыми исходными текстами.

Старая (с 1992 года) заслуженно уважаемая в embedded-мире компания с настолько стабильным положением, обусловленным качеством продукции, что её платиновый партнёр ARM вроде как грозной разработкой ARMmbed совершенно ей не угрожает.

tbc

Откланиваюсь