ОСРВ FX-RTOS

FX-RTOS

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

  • FX-RTOS Nanokernel
    Представляет собой статическую библиотеку для использования совместно с микроконтроллерами. Использует одно адресное пространство, не используется разделение режимов процессора (ядро и приложение выполняются в одном режиме). Максимальная компактность и скорость работы.
  • FX-RTOS Secure Nanokernel
    Многие микроконтроллеры, несмотря на ограниченные ресурсы, нуждаются в повышенном уровне безопасности. Поскольку реализация полноценных изолированных процессов для таких систем избыточна, FX-RTOS использует подход с одним процессом: одно адресное пространство, но выполнение ядра и приложения происходит в kernel mode и user mode соответственно. Привилегированная часть приложения работает в режиме ядра и его скорость реакции близка к скорости работы системы без разделения режимов. Непривилегированное приложение использует механизм системных вызовов для обращения к функциям ОС.
  • FX-RTOS Microkernel
    Флагман семейства операционных систем Eremex. Предназначена для использования совместно с процессорами имеющими механизмы защиты памяти MPU/MMU. ОС построена с использованием классической микроядерной архитектуры. Поддерживаются изолированные процессы и межпроцессное взаимодействие на основе синхронного обмена сообщениями.

  • Масштабируемость
    Архитектура FX-RTOS построена на основе использования независимых компонентов и внедрения зависимостей. Это позволяет получить не просто настраиваемые параметры ядра, как у большинства других ОСРВ, но и реализовать концепцию конфигурируемой архитектуры с целью идеального соответствия требованиям приложения. Например, для некоторых приложений необходимо обеспечить максимальную производительность или минимальный размер занимаемой памяти, для других - латентность и скорость реакции на события. Кроме того, этот подход позволяет объединить в рамках одного API устройства различных классов: FX-RTOS способна работать в системах начиная с 16-битных микроконтроллеров с всего 1Кб оперативной памяти, до многоядерных процессоров с устройством защиты памяти (MMU) и изоляцией процессов.
  • Переносимость
    Количество платформенно-зависимого кода в FX-RTOS сведено к минимуму, поэтому она не только поддерживает все популярные микроконтроллеры, но и может быть легко портирована на любую платформу, в том числе на специфические процессоры, реализованные на базе FPGA.
  • Детерминизм
    FX-RTOS изначально проектировалась как система жёсткого реального времени, поэтому время реакции на внешние события является абсолютным приоритетом и не зависит от количества системных объектов или нагрузки. Во всех вариантах конфигурации ядро является полностью вытесняемым.
  • Эффективность
    Модульная структура ОСРВ позволяет добиться эффективности использования ресурсов. В минимальных конфигурациях для использования с микроконтроллерами FX-RTOS занимает всего 2-4Кб ROM и менее 1Кб RAM.
  • Надежность
    В любой конфигурации ОСРВ уделяется особое внимание надёжности. Начиная от невозможности проигнорировать ошибки (вместо возврата кода ошибки из функций, вызывается функция, определенная пользователем), контроля целостности системных объектов во время работы, и заканчивая изоляцией потенциально ненадёжных компонентов прикладного ПО в отдельных процессах с использованием механизмов защиты памяти. В этом случае приложение разделяется на доверенную и недоверенную части; последняя не может нарушить работу доверенной части или ядра ОСРВ.
  • Поддержка всех популярных процессоров
    FX-RTOS поддерживает наиболее распространенные микроконтроллеры ARM Cortex-M0/M3/M4/M7, Microchip PIC32MX (MIPS32), Atmel AVR32, TI MSP430.
  • Поддержка всех популярных инструментов разработки
    Поддерживаются все основные средства разработки, начиная от свободных, таких как GNU GCC, и заканчивая проприетарными решениями Keil uVision или IAR Embedded Workbench.
  • Легкость использования
    Для использования совместно с микроконтроллерами, независимо от используемой конфигурации, ОС представляет собой один заголовочный файл и одну библиотеку для компоновки с приложением. Данный подход избавляет от необходимости настройки путей поиска заголовочных файлов и т.д. При необходимости, ОС может быть использована также в виде исходных текстов. ОСРВ не привязана к использованию определенной системы сборки и может быть легко адаптирована как для сборки в IDE, так и совместно с make, CMake и прочими инструментами.

В основе концепции FX-RTOS лежит принцип разделения ядра на независимые программные модули или компоненты, которые в дальнейшем статически связываются между собой с помощью механизма внедрения зависимостей, что позволяет подбирать наиболее подходящие для каждого применения компоненты.
DI.jpg
Для реализации этого механизма применен FX-Manager - фреймворк внедрения зависимостей для С собственной разработки, который работает во время сборки и, таким образом, исключает накладные расходы. FX-Manager реализован в виде приложения .NET, которое принимает список папок, содержащих исходные тексты, а в качестве вывода отдает список путей к файлам исходных текстов, которые нужно скомпилировать для сборки заданной конфигурации. Для сборки файлов может использоваться любая система сборки.
Внедрение зависимостей позволяет добиться:
  • Слабой связности
    Возможна разработка модульных приложений, в которых компоненты являются слабо связанными между собой, что позволяет заменять компоненты, комбинировать их в различных конфигурациях, а также упрощает разработку и поддержку.
  • Повторного использования кода
    Поскольку компоненты слабо связаны, это позволяет использовать многие из них повторно в различных приложениях и продуктах, что особенно важно при разработке линейки продуктов. Все варианты FX-RTOS собираются из единой кодовой базы, для конфигурирования не используется условная компиляция, а функционал можно переносить между конфигурациями без изменения исходных текстов. Например, при необходимости, поддержка многоядерных процессоров может быть добавлена в варианты FX-RTOS для микроконтроллеров.
  • Универсальной платформы
    Код компонентов и код систем, который из этих компонентов собирается, хранится отдельно друг от друга, что упрощает использование репозитория и не требует создания дополнительных ветвей для разработки нового функционала.

Подробнее о механизме внедрения зависимостей в С можно прочитать в нашем блоге. Фреймворк опубликован под open-source лицензией (BSD) допускающей модификацию и свободное использование. Исходные тексты доступны на нашей странице GitHub.


Для знакомства с FX-RTOS доступны демо-версии, которые включают скомпилированную библиотеку и заголовочный файл ОС, демо-приложение (которое зависит от возможностей аппаратного обеспечения), а также сконфигурированный проект для использования с определенным инструментарием и оборудованием.

Краткое описание особенностей и возможностей каждой из конфигураций FX-RTOS.

Nanokernel
В большинстве устройств на основе микроконтроллеров ОС используется в виде статической библиотеки. Ядро компонуется с приложением в единый исполняемый образ, а затем загружается в энергонезависимую память устройства. Далее создаются пользовательские потоки, которые выполняются независимо друг от друга. В такой архитектуре граница между ОС и приложением размыта: вызовы сервисов ОС являются обычными вызовами функций.
FX-RTOS предоставляет следующие сервисы для приложений: потоки, объекты синхронизации (семафоры, мьютексы, очереди, события, барьеры, RW-блокировки), программные таймеры (однократные и периодические), а также механизмы управления памятью (блоки произвольного или фиксированного размера). Количество любых объектов ограничено только объемом имеющейся памяти и не влияет на производительность ОС. Планировщик поддерживает кооперативные и вытесняющие алгоритмы планирования потоков (Priority, Round-robin, Timeslicing).
ОСРВ реализована с использованием языка С99. Возможно использование непосредственно в виде исходных текстов в любой поддерживаемой IDE, а также использование в виде библиотеки. В последнем случае ОС представляет собой только два файла: библиотеку и заголовочный файл.
Минимальный размер ядра около 2Кб ROM и 1Кб RAM. Функции включаются в результирующий образ, только если они используются.

Secure Nanokernel
Главным минусом использования ОС в виде библиотеки является то, что ядро, драйверы, промежуточное ПО, а также, собственно, пользовательское приложение выполняются в одном режиме процессора без какой-либо защиты. В целях повышения надежности и упрощения отладки можно использовать подход, в котором ядро ОСРВ выполняется в защищенном контексте и не может быть повреждено в результате действий приложений.
Использование Secure Nanokernel предполагает разделение приложения на доверенную и недоверенную части, которые компилируются в два независимых бинарных файла. Доверенная часть компонуется в один образ с ядром и используется точно так же, как и с библиотекой. Это приложение работает в привилегированном режиме работы процессора и имеет полный доступ к периферии. Недоверенная часть загружается в устройство отдельно и работает в непривилегированном режиме процессора.
Secure_nanokernel_arch
При попытке доступа к системным участкам памяти, использовании привилегированных инструкций и т.д., управление перехватывается и приложение аварийно завершается. Привилегированный модуль при этом продолжает работать. В отличие от настольных систем, используется только разделение режимов, для процесса не создается отдельного виртуального адресного пространства, поэтому затрачиваемые ресурсы приемлемы для этого класса устройств - требуется около 15Кб памяти.
Приложению предоставляется подмножество основного API в виде потоков и наиболее часто используемых примитивов синхронизации (семафоры, мьютексы, очереди).
Синтаксически это подмножество полностью совместимо с Nanokernel, поэтому программы можно переносить между этими профилями без изменений.

Microkernel
FX-RTOS Microkernel - микроядро реального времени с полной поддержкой процессов, которые могут создаваться и завершаться во время работы. Каждый процесс имеет собственное виртуальное адресное пространство и взаимодействует с другими процессами с помощью передачи сообщений.
Ex.png
Ядро ОС и приложения компилируются и загружаются в устройство отдельно. В отличие от предыдущих вариантов, ОС используется в виде бинарного образа и выполнение прикладного кода в привилегированном режиме процессора не предполагается. Тем не менее, при необходимости, возможно использование так называемых "приложений ядра" (kernel-based applications), которые статически компонуются с ядром.
Этот вариант ОСРВ поддерживает многоядерные процессоры (до 64 ядер) и предназначен для использования в системах имеющих от 512Кб оперативной памяти. Несмотря на ряд дополнительных сервисов, таких как передача сообщений и управление процессами, интерфейс потоков и объектов синхронизации является общим для всех вариантов ОС, поэтому многие приложения могут быть легко перенесены с одного профиля ОС в другой.

Опционально возможно построение специализированных ОС, с переносом функциональности одного профиля в другие. Например поддержка многоядерных процессоров в Nanokernel или использование отложенных прерываний для снижения времени отклика. Также возможно применение специальных вариантов Microkernel в системах без MMU, например на основе процессоров семейства Cortex-R.

Будьте в курсе новостей и спецпредложений

Авторизация
Чтобы продолжить покупку, пожалуйста, авторизируйтесь на сайте.
Забыли пароль?