Skip to content

Latest commit

 

History

History
97 lines (74 loc) · 9.5 KB

README_RU.md

File metadata and controls

97 lines (74 loc) · 9.5 KB
Coverity Scan Build Status Build Status

Описание

FX-RTOS Lite - это ядро ОСРВ, предназначенное для устройств на микроконтроллерах. Оно написано на языке Си стандарта C99, реализовано в виде статической библиотеки, содержащей сервисы ОС.

Функции

API включает в себя следующие сервисы:

  • потоки
  • программные таймеры (одноразовые и периодические)
  • семафоры
  • мьютексы с защитой от инверсии приоритета
  • очереди сообщений
  • пулы блоков памяти
  • события
  • условные переменные
  • барьеры
  • пулы памяти произвольного размера
  • rw-блокировки

Поддерживаемое оборудование и инструментальные средства

Версия Lite поддерживает наиболее распространенные процессорные архитектуры:

  • ARM Cortex-M3 + (архитектура ARMv7-M, также может использоваться на ARMv8-M)
  • RISC-V (профиль RV32I)

Текущие конфигурации:

Релиз Платформа
async-cortex-m3-GNU-tools.zip Минимальная ОС, использующая процедуры обработки событий вместо потоков, для cortex-m3+
standard-cortex-m3.zip Обычная конфигурация для контроллеров cortex-m3+
standard-riscv32i-GNU-tools.zip Обычная конфигурация для набора команд RISC-V rv32i

Версия ARM поддерживает компиляторы GCC, Keil MDK и IAR EWARM. Версия RISC-V на данный момент поддерживает только GCC.

В качестве ОС для сборки может использоваться Windows или Linux (Mac тоже должен работать, но не тестировался). Никаких внешних зависимостей, кроме компилятора, не требуется.

С чего начать

Этот репозиторий содержит несконфигурированную версию ядра, представленную в виде набора компонентов - исходных текстов. Это полезно, если вы хотите создать специфическую конфигурацию или внести свой вклад в развитие ОС. В случае, если вам просто нужно готовое ядро для использования в своём приложении, подумайте об использовании предварительно сконфигурированных ядер, доступных для ARM и RISC-V.

Как собрать библиотеку из предварительно настроенных источников:

  • Загрузите и распакуйте соответствующий архив выпуска из Releases
  • Убедитесь, что поддерживаемый компилятор доступен через переменную окружения PATH
  • Установите переменную среды GCC_PREFIX, если вы используете GCC (например 'riscv-none-embed-')
  • Войдите в каталог внутри cores, в котором находятся сборочные скрипты build.bat и Makefile
  • Запускаем команду 'build.bat' или 'make'

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

Как собрать библиотеку с нуля:

  • Установить переменные окружения:
    • FXRTOS_DIR как путь к корневой папке ядра
    • GCC_PREFIX в качестве префикса компилятора, если вы используете GCC (например, 'arm-none-eabi-' для ARM, если компилятор доступен через PATH)
    • FXDJ как путь к инструменту внедрения зависимостей fx-dj.py
  • Войдите в каталог для целевого ядра (например, cores/standard-cortex-m3)
  • Запустите 'build.bat' в Windows или 'make src', а затем make lib в Linux / Mac
  • Если сборка зависимостей завершилась неудачей, то перед повторной попыткой необходимо удалить созданный скриптом каталог ./src

Как использовать

ОС может быть связана с проектом как двоичный файл или может быть добавлена как набор исходных файлов в проект IDE. Демонстрации использования находятся в репозитории fxrtos-examples.

Ограничения

Обратите внимание, что версия Lite - это ядро, работающее в режиме мягкого реального времени. Он НЕ предназначен для детерминированной работы в реальном времени. Расширенные функции, такие как детерминированные таймеры, отложенная обработка прерываний с малой задержкой, поддержка многопроцессорности, разделение уровней привилегий и безопасность доступны только в полной версии. За подробностями обращайтесь в отдел продаж EREMEX.

При разработке приложений с критичным временем задержки с использованием версии Lite следует учитывать следующие ограничения:

  • Широковещательная передача (или "уведомление всех") объектов синхронизации, таких как condvar или event. Большее количество ожидающих потоков приводит к увеличению задержки, поскольку процесс уведомления не является вытесняющим. Возможные решения: не использовать широковещательные объекты или ограничивать максимальное количество ожидающих потоков.
  • Политика уведомления на основе приоритетов с объектами синхронизации (например увеличение счётчика семафора и освобождение ожидающего потока с наибольшим приоритетом) использует линейный поиск с отключенным планированием. Это означает, что N ожидающих потоков приводит к неограниченному времени планирования и задержке прерываний O(n). Возможные решения: используйте политику уведомления FIFO или ограничьте максимальное количество ожидающих потоков для любого объекта синхронизации.
  • Очистка очереди сообщений освобождает до N потоков, где N - длина очереди. Возможные решения: не используйте очистку очереди или ограничьте длину очереди разумным значением.
  • Реализация таймеров использует сортированные очереди и линейный поиск, что дает задержку O(n) в зависимости от количества активных таймеров в системе. Возможные решения: Ограничьте максимальное количество программных таймеров и не используйте временные интервалы.

Поддержка

По техническим вопросам использования FX-RTOS Lite обращайтесь через группу Telegram (https://t.me/fxrtos).