Real-time Kernel

Real-time Kernel

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

Предоставляется богатый набор сервисов для реализации многопоточных приложений:

  • Потоки (нити)
  • Программные таймеры
  • События
  • Флаги событий
  • Семафоры (бинарные и считающие)
  • Мьютексы (рекурсивные, с защитой от инверсии приоритета)
  • Очереди сообщений
Кроме того, доступны примитивы POSIX:
  • Барьеры
  • RW-блокировки (rwlocks)
  • Условные переменные
Для управления памятью могут использоваться как пулы объектов фиксированного размера, так и произвольного.:

Количество объектов ограничивается только размером свободной памяти. Все имеющиеся примитивы синхронизации используют общий API ядра, которое допускает также реализацию пользовательских примитивов.

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

Поддержка аппаратных платформ: ARM Cortex M, Microchip PIC32MX, Atmel AVR32, Texas Instruments MSP430.

    Масштабируемость. Архитектура FX-RTOS построена на основе использования независимых компонентов и внедрения зависимостей. Это позволяет получить не просто настраиваемые параметры ядра, как у большинства других ОСРВ, но и реализовать концепцию конфигурируемой архитектуры с целью идеального соответствия требованиям приложения. Например, для некоторых приложений необходимо обеспечить максимальную производительность или минимальный размер занимаемой памяти, для других - латентность и скорость реакции на события. Кроме того, этот подход позволяет объединить в рамках одного API устройства различных классов: FX-RTOS способна работать в системах начиная с 16-битных микроконтроллеров с всего 1Кб оперативной памяти, до многоядерных процессоров с устройством защиты памяти (MMU) и изоляцией процессов.
  • Переносимость. В отличие от многих ОСРВ для микроконтроллеров, архитектура которых предполагает использование определенного типа устройств, FX-RTOS проектировалась как переносимая система, поэтому не только поддерживает все популярные микроконтроллеры, но и может быть легко портирована на любую платформу, в том числе на специфические процессоры, реализованные на базе FPGA.
  • Детерминизм. FX-RTOS изначально проектировалась как система жёсткого реального времени, поэтому время реакции на внешние события является абсолютным приоритетом и не зависит от количества системных объектов или нагрузки.
  • Эффективность. Модульная структура ОСРВ позволяет добиться эффективности использования ресурсов. В минимальных конфигурациях для использования с микроконтроллерами FX-RTOS занимает всего 2-4Кб ROM и менее 1Кб RAM.
  • Поддержка многоядерных процессоров. Ядро не содержит никаких глобальных блокировок, поэтому, для хорошо распределяемых задач, достигается линейный рост производительности при увеличении количества процессоров в системе.
  • Защита памяти. Для приложений, имеющих особые требования к безопасности, предоставляется также защищенная конфигурация ОСРВ. В этом случае приложение разделяется на доверенную и недоверенную части; последняя не можетнарушить работу доверенной части или ядра ОСРВ.
  • Поддержка всех популярных инструментов разработки. Помимо поддержки всех популярных процессоров и контроллеров, FX-RTOS поддерживает также все основные средства разработки, начиная от свободных, таких как GNU GCC, и заканчивая проприетарными решениями Keil или IAR.
  • Легкость использования. Для использования совместно с микроконтроллерами, независимо от используемой конфигурации, ОС всегда представляет собой один заголовочный файл и одну библиотеку для компоновки с приложением. Данный подход избавляет от необходимости настройки путей поиска заголовочных файлов и т.д. При необходимости, ОС может быть использована также в виде исходных текстов.
  • Надежность. Возможны различные стратегии обработки ошибок: как классическая, предполагающая возврат кода ошибки из функции, так и централизованная, при которой в случае возникновения любой ошибки вызывается специальная пользовательская функция. Это исключает возможность проигнорировать ошибки.

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

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

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

FX-RTOS - ядро реального времени для широкого спектра устройств, реализующее приоритетное вытесняющее планирование (preemptive multitasking). Опционально может использоваться также карусельное планирование (round-robin). Количество приоритетов конфигурируется, и, как правило, лежит в диапазоне от 32 до 1024. ОСРВ реализована с использованием стандарта С99. Для удобства отладки исходные тексты FX-RTOS входят в поставку вместе с бинарными файлами, что также позволяет ее использовать с различными инструментами и компиляторами, а также вносить изменения, если таковые потребуются.

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


Поддержка многопроцессорных конфигураций
FX-RTOS изначально проектировалась с учетом поддержки симметричных многопроцессорных систем (SMP). Для большего детерминизма ядро не распределяет потоки по процессорам самостоятельно, хотя автоматическая балансировка нагрузки доступна как опция. Поэтому исключается фактор влияния миграций потоков на временные характеристики приложения; в то же время доступна миграция потоков по запросу, что позволяет реализовать балансировку нагрузки на стороне приложения.

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

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

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

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