Антон Бондарев
Генеральный директор @ Embox
Санкт-Петербург

Немного об операционных системах в embedded

  • День выступления: 27.09.2024
  • Время начала: 11:05
  • Время окончания: 11:35
  • Зал: Разработка-1 [Green6]
  • Категории: Разработка
  • Секции: Embedded
  • Сложность: Senior

Описание:

Современный мир предъявляет все новые вызовы для создателей информационных систем. Чтобы отвечать на них, индустрии ИТ приходится быстро развиваться. Одним из самых быстро растущих сегментов являются встроенные системы. Развитие происходит настолько быстро, что даже меняет само понятие встраиваемой системы. К примеру, еще несколько лет назад трудно было себе представить встроенную систему, которая имеет 4-ядерный процессор и оперативную память в несколько гигабайт. С другой стороны, как и прежде множество встроенных систем основаны на микроконтроллерах имеющих несколько килобайт памяти.

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

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

Условно ОС для встроенных систем можно отнести к трем большим классам:

ОС на базе Линукс (И других универсальных но конфигурируемых ОС);

ОС для микроконтроллеров (LibOS);

ОС реального времени (ОС РВ).

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

Одной из главных современных тенденций является увлечение функциональных требований к встроенным системам, в следствии чего, более 70 процентов всех встроенных систем основываются на различных вариация ОС Линукс. Более того постоянно делаются попытки улучшить характеристики ОС Линукс, чтобы применять ОС Линукс и в остальных 30 процентах, несмотря на существенных трудности в некоторых случаях.

В качестве примера можно привести марсолёт Ingenuity, который построен на существенно доработанном ядре Линукс. Трудность и доработка связанны с тем, что цикл управления, должен был гарантированно выполняться за 100мс.

Еще одним существенным фактом для применения ОС Линукс в embedded является фактор открытости. Компании, которые производят встроенные системы, не хотят быть зависимыми от производителя ОС, а как минимум иметь возможность влиять на ход разработки и вносить свои изменения в код проекта. В частности, это оказалось очень востребованным на фоне санкций.

Аналогично из-за стремления к независимости от производителя, все большее распространение получает открытая процессорная архитектура RISC-V. В России в последнее время фактически все производители процессоров отказываются от использования ядер ARM и переходят на архитектуру RISC-V.

Возвращаясь к попыткам использования ОС Линукс в embedded и связанных с этим улучшений в ядре, нужно выделить следующие:

KBuild билд систему позволяющую конфигурировать ядро в широких пределах;

DevTree систему спецификации оборудования, которая очень хорошо подходит для разнообразного железа применяемого в embedded;

Yocto Project (OpenEmbedded) & BuildRoot конфигурируемая сборка для корневой файловой системы;

Linux-RT система патчей модифицирующих планировщик и позволяющих получить более стабильное управление потоками в системе;

ucLinux (NOMMU режим) версия ядра позволяющая исполняться на системах без аппаратного MMU (микроконтроллерах).

Стоит отметить, что существуют ряд попыток движения со стороны LibOS в сторону увеличение функциональности и удобства разработки, то есть в сторону ОС Линукс.

NuttX - позволяет использовать POSIX ПО на микроконтроллерах. Сейчас слой POSIX добавляется в ряд LibOS в том числе наиболее популярную FreeRTOS.

ZephyrOS использует DevTree в синтаксисе Linux.

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

Использование данного предположения и позволило добиться в ОСРВ Embox сочетания преимуществ LibOS и ОС Linux. Embox - это открытая конфигурируемая ОС для встроенных систем. Основная идея Embox заключается в использовании прикладного ПО Линукс в более безопасном и детерминированном, менее энергопотребляемом и ресурсоемком окружении, в том числе на микроконтроллерах.

Embox имеет оригинальную систему сборки на основе собственного специализированного языка (DSL) описания модулей (Mybuild). Позволяющего строить граф модулей исходя из требовании к системе и зависимостям. Далее происходит генерация ряда артефактов для сборки, а так же сама сборка конечного образа. Сборка происходит статически и происходит анализ всей системы в целом, включая ядро, различные службы и библиотеки, прикладное ПО и так далее. Это позволяет добиться хороших характеристик оптимизации и создать образ максимально эффективно выполняющий указаные в описании системы требования.

С другой стороны, Embox имеет всю необходимую функциональность для построения современных emdedded систем: кросс-платформенное ядро, сетевой стек, файловую подсистему, графическую подсистему и так далее. Что позволяет создавать системы практически не ограниченные по функциональности. Из за этих свойст мы называем Embox - Linux без Linux.

История Embox начиналась с двух направлений: Студенческий проект по практике архитектуры ОС и ограниченная замена втроенному Линукс на специализированном устройстве. В дальнейшем обнаружились потребительские свойства позволяющие эффективноно создавать специализированные embedded-решения практически любой сложности и запускать из на широком спектре оборудования. В частности на российских процессорах, влкючая Эльбрус.

Портирование на Embox некоторых прикладных проектов привело к выявлению ошибок и исправлению. Например, была улучшена библиотека для создания VoIP телефонии PJSIP.

Кроме того, Embox является единственной платформой, которая позволяет использовать фреймворк для компьютерного зрения OpenCV на микроконтроллерах ARM cortex-m.

Разработка под Embox может вестись под ОС Линукс и является кросс-платформенной. Таким образом, разработанные проекты под микроконтроллеры STM были прозрачно перенесены под российские МК на базе RISC-V K1921DU015.

Встроенные системы имеют очень широкий спектр применения. Чтобы удовлетворить взаимоисключающим требованиям, высокой функциональности с одной стороны и предсказуемости поведения и низким потреблением ресурсов, можно использовать конструктор ОС, позволяющий создавать узкоспециализированные, но полнофункциональные ОС нацеленные на выполнение только заявленного функционала. Этими свойствами обладает ОС Embox.

О спикере

Антон Бондарев

Генеральный директор @ Embox
Санкт-Петербург

Один из основателей открытого проекта по созданию конфигурируемой ОС для встроенных систем Embox (https://github.com/embox/embox )

Похожие доклады