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-M, RISC-V, Microchip PIC32MX (MIPS32), Atmel AVR32, TI MSP430, Эльбрус. - Поддержка всех популярных инструментов разработки
Поддерживаются все основные средства разработки, начиная от свободных, таких как GNU GCC, и заканчивая проприетарными решениями Keil uVision или IAR Embedded Workbench. - Легкость использования
Для использования совместно с микроконтроллерами, независимо от используемой конфигурации, ОС представляет собой один заголовочный файл и одну библиотеку для компоновки с приложением. Данный подход избавляет от необходимости настройки путей поиска заголовочных файлов и т.д. При необходимости, ОС может быть использована также в виде исходных текстов. ОСРВ не привязана к использованию определенной системы сборки и может быть легко адаптирована как для сборки в IDE, так и совместно с make, CMake и прочими инструментами.
В основе концепции FX-RTOS лежит принцип разделения ядра на независимые программные модули или компоненты, которые в дальнейшем статически связываются между собой с помощью механизма внедрения зависимостей, что позволяет подбирать наиболее подходящие для каждого применения компоненты.
Для реализации этого механизма применен FX-Manager - фреймворк внедрения зависимостей для С собственной разработки, который работает во время сборки и, таким образом, исключает накладные расходы. FX-Manager реализован в виде приложения .NET, которое принимает список папок, содержащих исходные тексты, а в качестве вывода отдает список путей к файлам исходных текстов, которые нужно скомпилировать для сборки заданной конфигурации. Для сборки файлов может использоваться любая система сборки.
Внедрение зависимостей позволяет добиться:
- Слабой связности
Возможна разработка модульных приложений, в которых компоненты являются слабо связанными между собой, что позволяет заменять компоненты, комбинировать их в различных конфигурациях, а также упрощает разработку и поддержку. - Повторного использования кода
Поскольку компоненты слабо связаны, это позволяет использовать многие из них повторно в различных приложениях и продуктах, что особенно важно при разработке линейки продуктов. Все варианты FX-RTOS собираются из единой кодовой базы, для конфигурирования не используется условная компиляция, а функционал можно переносить между конфигурациями без изменения исходных текстов. Например, при необходимости, поддержка многоядерных процессоров может быть добавлена в варианты FX-RTOS для микроконтроллеров. - Универсальной платформы
Код компонентов и код систем, который из этих компонентов собирается, хранится отдельно друг от друга, что упрощает использование репозитория и не требует создания дополнительных ветвей для разработки нового функционала.
Для знакомства с FX-RTOS доступны демо-версии, которые включают скомпилированную библиотеку и заголовочный файл ОС, демо-приложение (которое зависит от возможностей аппаратного обеспечения), а также сконфигурированный проект для использования с определенным инструментарием и оборудованием. Описание функций API и руководство пользователя представлены в разделе документации.
В целях развития платформы компания Eremex выпустила версию FX-RTOS Nanokernel под свободной лицензией, допускающей, в том числе, бесплатное коммерческое использование ОСРВ. Исходные тексты, релизные сборки и демо доступны на нашем аккаунте на github:
https://github.com/eremex
Последнюю версию инструментария GNU для платформы ARM можно скачать на сайте ARM.
Для получения консультации вы можете:
- Задать вопрос на форуме сообщества FX-RTOS
- Задать вопрос в группе FX-RTOS https://t.me/fxrtos
- Отправить запрос с помощью электронной формы
- Связаться с нами по телефону +7 (495) 232-18-64
- Написать на e-mail: info@eremex.ru
Краткое описание особенностей и возможностей каждой из конфигураций FX-RTOS.
Nanokernel
В большинстве устройств на основе микроконтроллеров ОС используется в виде статической библиотеки. Ядро компонуется с приложением в единый исполняемый образ, а затем загружается в энергонезависимую память устройства. Далее создаются пользовательские потоки, которые выполняются независимо друг от друга. В такой архитектуре граница между ОС и приложением размыта: вызовы сервисов ОС являются обычными вызовами функций.
FX-RTOS предоставляет следующие сервисы для приложений: потоки, объекты синхронизации (семафоры, мьютексы, очереди, события, барьеры, RW-блокировки), программные таймеры (однократные и периодические), а также механизмы управления памятью (блоки произвольного или фиксированного размера). Количество любых объектов ограничено только объемом имеющейся памяти и не влияет на производительность ОС. Планировщик поддерживает кооперативные и вытесняющие алгоритмы планирования потоков (Priority, Round-robin, Timeslicing).
ОСРВ реализована с использованием языка С99. Возможно использование непосредственно в виде исходных текстов в любой поддерживаемой IDE, а также использование в виде библиотеки. В последнем случае ОС представляет собой только два файла: библиотеку и заголовочный файл.
Минимальный размер ядра около 2Кб ROM и 1Кб RAM. Функции включаются в результирующий образ, только если они используются.
Secure Nanokernel
Главным минусом использования ОС в виде библиотеки является то, что ядро, драйверы, промежуточное ПО, а также, собственно, пользовательское приложение выполняются в одном режиме процессора без какой-либо защиты. В целях повышения надежности и упрощения отладки можно использовать подход, в котором ядро ОСРВ выполняется в защищенном контексте и не может быть повреждено в результате действий приложений.
При попытке доступа к системным участкам памяти, использовании привилегированных инструкций и т.д., управление перехватывается и приложение аварийно завершается. Привилегированный модуль при этом продолжает работать. В отличие от настольных систем, используется только разделение режимов, для процесса не создается отдельного виртуального адресного пространства, поэтому затрачиваемые ресурсы приемлемы для этого класса устройств - требуется около 15Кб памяти.
Приложению предоставляется подмножество основного API в виде потоков и наиболее часто используемых примитивов синхронизации (семафоры, мьютексы, очереди).
Синтаксически это подмножество полностью совместимо с Nanokernel, поэтому программы можно переносить между этими профилями без изменений.
Microkernel
Опционально возможно построение специализированных ОС, с переносом функциональности одного профиля в другие. Например поддержка многоядерных процессоров в Nanokernel или использование отложенных прерываний для снижения времени отклика. Также возможно применение специальных вариантов Microkernel в системах без MMU, например на основе процессоров семейства Cortex-R.
Nanokernel
В большинстве устройств на основе микроконтроллеров ОС используется в виде статической библиотеки. Ядро компонуется с приложением в единый исполняемый образ, а затем загружается в энергонезависимую память устройства. Далее создаются пользовательские потоки, которые выполняются независимо друг от друга. В такой архитектуре граница между ОС и приложением размыта: вызовы сервисов ОС являются обычными вызовами функций.
FX-RTOS предоставляет следующие сервисы для приложений: потоки, объекты синхронизации (семафоры, мьютексы, очереди, события, барьеры, RW-блокировки), программные таймеры (однократные и периодические), а также механизмы управления памятью (блоки произвольного или фиксированного размера). Количество любых объектов ограничено только объемом имеющейся памяти и не влияет на производительность ОС. Планировщик поддерживает кооперативные и вытесняющие алгоритмы планирования потоков (Priority, Round-robin, Timeslicing).
ОСРВ реализована с использованием языка С99. Возможно использование непосредственно в виде исходных текстов в любой поддерживаемой IDE, а также использование в виде библиотеки. В последнем случае ОС представляет собой только два файла: библиотеку и заголовочный файл.
Минимальный размер ядра около 2Кб ROM и 1Кб RAM. Функции включаются в результирующий образ, только если они используются.
Secure Nanokernel
Главным минусом использования ОС в виде библиотеки является то, что ядро, драйверы, промежуточное ПО, а также, собственно, пользовательское приложение выполняются в одном режиме процессора без какой-либо защиты. В целях повышения надежности и упрощения отладки можно использовать подход, в котором ядро ОСРВ выполняется в защищенном контексте и не может быть повреждено в результате действий приложений.
Использование Secure Nanokernel предполагает разделение приложения на доверенную и недоверенную части, которые компилируются в два независимых бинарных файла. Доверенная часть компонуется в один образ с ядром и используется точно так же, как и с библиотекой. Это приложение работает в привилегированном режиме работы процессора и имеет полный доступ к периферии. Недоверенная часть загружается в устройство отдельно и работает в непривилегированном режиме процессора.
Приложению предоставляется подмножество основного API в виде потоков и наиболее часто используемых примитивов синхронизации (семафоры, мьютексы, очереди).
Синтаксически это подмножество полностью совместимо с Nanokernel, поэтому программы можно переносить между этими профилями без изменений.
Microkernel
FX-RTOS Microkernel - микроядро реального времени с полной поддержкой процессов, которые могут создаваться и завершаться во время работы. Каждый процесс имеет собственное виртуальное адресное пространство и взаимодействует с другими процессами с помощью передачи сообщений.
Ядро ОС и приложения компилируются и загружаются в устройство отдельно. В отличие от предыдущих вариантов, ОС используется в виде бинарного образа и выполнение прикладного кода в привилегированном режиме процессора не предполагается. Тем не менее, при необходимости, возможно использование так называемых "приложений ядра" (kernel-based applications), которые статически компонуются с ядром.
Этот вариант ОСРВ поддерживает многоядерные процессоры (до 64 ядер) и предназначен для использования в системах имеющих от 512Кб оперативной памяти. Несмотря на ряд дополнительных сервисов, таких как передача сообщений и управление процессами, интерфейс потоков и объектов синхронизации является общим для всех вариантов ОС, поэтому многие приложения могут быть легко перенесены с одного профиля ОС в другой.Опционально возможно построение специализированных ОС, с переносом функциональности одного профиля в другие. Например поддержка многоядерных процессоров в Nanokernel или использование отложенных прерываний для снижения времени отклика. Также возможно применение специальных вариантов Microkernel в системах без MMU, например на основе процессоров семейства Cortex-R.
-
Документы
-
FX-RTOS. Руководство по сборке и установке
680.23 КБ 15.09.2023 -
FX-RTOS. Руководство по эксплуатации
1.22 МБ 06.12.2023 -
Описание API FX-RTOS
3.58 МБ 24.08.2022 -
Брошюра FX-RTOS
3.57 МБ 11.04.2022
-
-
Вопросы/ответы
-
Сколько стоит лицензия?
FX-RTOS -
Имеет ли FX-RTOS сертификаты безопасности?
FX-RTOS -
Можно ли использовать Secure Nanokernel с микроконтроллерами "Миландр"?
FX-RTOS -
Поддерживается ли Cortex-M производства "Миландр" (NXP, ST, Atmel, ...)?
FX-RTOS
-
-
Публикации
-
Заглянем под капот FX-RTOS
15.11.2023FX-RTOS -
Уровни привилегий и защита памяти в FX-RTOS для микроконтроллеров (OSDay 2022)
FX-RTOS -
Книга "Разработка встроенных ОСРВ"
FX-RTOS -
Статическое внедрение зависимостей в C/C++ (OSDay 2019)
FX-RTOS
-