Операционная система реального времени (RTOS): Краткий справочник

Операционная система реального времени (RTOS)

Если вы увлекаетесь SBC, но не знаете, что такое RTOS, эта статья для вас. Узнайте, что на самом деле представляет собой операционная система реального времени.

Немного предыстории

Старший служитель, заботящийся о своей святыне
Старший служитель, заботящийся о своей святыне (Источник: Silicon.co.uk)

Идея или концепция операционной системы берет свое начало в начале 1960-х годов. Это была эпоха «большого железа» или мейнфреймов.

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

Затем «верховные жрецы», обслуживающие машину, вводили в нее программу пользователя и начинали вычисления. Программа выполнялась до тех пор, пока не получала результат или не терпела крах. Результаты вычислений обычно представлялись в виде распечатанных листов с текстом.

В результате необходимости упростить эти ручные задачи появились операционные системы.

Важнейшие операции

Современные операционные системы выполняют множество важнейших функций. Ниже перечислены некоторые из них (в порядке убывания важности):

  • Планирование
  • Управление памятью
  • Поддержка файловой системы
  • Работа в сети
  • Предоставление интерфейса прикладного программирования (API).

Планирование

Планирование — это вопрос о том, когда и как распределять вычислительные ресурсы между различными задачами и пользователями. Это особенно важно в многозадачных системах и системах реального времени. Некоторые вычислительные ресурсы являются единственными в своем роде. Например, один процессор не может использоваться несколькими задачами одновременно.

В попытке оптимизировать производительность и распределить приоритеты алгоритмы планирования широко изучаются в научных кругах и проектах по разработке программного обеспечения.

Управление памятью

Операционные системы выступают в роли "связующего звена"
Операционные системы выступают в роли «связующего звена» (Источник: MiniTool)

Управление памятью — еще одна важнейшая функция операционных систем, таких как Windows, Mac и Linux. Современные операционные системы используют виртуальную адресацию памяти, при которой каждое приложение имеет свое собственное единое адресное пространство, состоящее из различных типов памяти, таких как оперативная память и накопители (например, жесткий диск или SSD).

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

Микроконтроллеры, как правило, не имеют MMU и, следовательно, не могут запускать Linux и подобные ОС. Однако новые микроконтроллеры семейства ARM Cortex-M оснащены блоком защиты памяти (MPU). Он похож на упрощенный MMU и обеспечивает некоторые из тех же преимуществ, например, защищает пространство памяти задачи от повреждения другой задачей.

API

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

Основы RTOS

Проект термометра Arduino
Проект термометра Arduino (Источник: Arduino Project Hub)

Кому нужна ОС?

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

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

С другой стороны, во встроенной системе с множеством задач с разными приоритетами и временными ограничениями ОС реального времени может быть полезной или даже необходимой.

Что такое реальное время?

Википедия определяет операционную систему реального времени (RTOS) как «операционную систему, в которой время обработки входного стимула меньше, чем время, прошедшее до следующего входного стимула того же типа». Это часто цитируемое определение.

Кроме того, RTOS обычно характеризуются как «жесткие» или «мягкие». Это связано с последствиями пропуска срока реакции на стимул или событие. В жестких RTOS последствия могут быть катастрофическими, например, в системах управления полетом самолетов или самоуправляемых автомобилей. В мягких RTOS пропуск срока может оказать негативное влияние на что-то, но не привести к катастрофе.

Характеристики RTOS

WinAVR, популярное средство разработки
WinAVR, популярное средство разработки (Источник: Instructables)

При выборе RTOS стоит обратить внимание на несколько деталей и важных характеристик.

Лицензирование

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

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

Поддержка

Пакеты поддержки с готовыми примерами очень хороши для быстрого и плавного запуска проекта без особых проблем.

Средства разработки

Интегрированная среда разработки (IDE) — это набор инструментов для разработки встраиваемых приложений. Она включает в себя как минимум редактор кода, компилятор и отладчик. Иногда в комплект входят и другие инструменты, например, библиотека кода.

Протоколы

В Интернете вещей (IoT) большинство устройств связаны между собой беспроводными сетями. Более современные RTOS включают в себя стеки протоколов для нескольких типов беспроводных сетей: WiFi, Bluetooth, Bluetooth Mesh, LoRa и т. д.

Популярные RTOS

RTOS, представленная в виде набора модулей
RTOS, представленная в виде набора модулей (Источник: Micrium)

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

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

Некоторые RTOS начинались как проприетарные продукты, но затем были выпущены в общественное достояние. Одним из таких примеров является операционная система RTEMS с интересной историей, начавшейся в 1980-х годах. Первоначально это была аббревиатура от «Real-Time Executive for Missile Systems», затем RTEMS была переименована в «Real-Time Executive for Military Systems» и, наконец, в «Real-Time Executive for Multiprocessor Systems».

Если посмотреть на последние предложения RTOS с открытым исходным кодом, то наиболее интересные из них явно нацелены на IoT-приложения и включают расширенную поддержку простого подключения устройства к облачной платформе, такой как Amazon Web Services (AWS) или IBM Watson IoT Platform.

Чтобы проиллюстрировать многие из обсуждаемых здесь аспектов, давайте рассмотрим три известных RTOS:

  • Mynewt, разработанная Apache Software Foundation
  • FreeRTOS, 15 лет разрабатываемая инженерами реального времени и управляемая с 2017 года компанией Amazon
  • Mbed OS, одна из составляющих комплексной экосистемы Mbed для быстрой разработки IoT-устройств на базе микроконтроллеров семейства ARM Cortex-M.

Mynewt

Плата Adafruit nRF52 BLE с Mynewt
Плата Adafruit nRF52 BLE с Mynewt (Источник: Adafruit)

ОС Mynewt с открытым исходным кодом находится в активной разработке под руководством Apache Software Foundation. Apache рекламирует себя как «крупнейший в мире фонд открытого кода», в котором более 39 000 добровольцев вносят свой вклад в сотни проектов.

Mynewt особенно силен, когда речь идет о беспроводных протоколах. Он предлагает стек Bluetooth Low Energy (BLE) 5.0 и поддержку Bluetooth Mesh. Также поддерживаются протоколы LoRa и LoRaWAN.

Подробности

  • Лицензия: Apache 2.0
  • Объем ядра: 6 КБ
  • Беспроводные протоколы: BLE 5, BLE Mesh, LoRa, LoRaWAN, 6LoWPAN
  • Другие протоколы связи: CoAP
  • Безопасность: Безопасный загрузчик
  • Средства разработки: Newt Tool
  • Архитектуры микроконтроллеров: ARM Cortex-M0 — M7, MIPS, RISC-V
  • Поддержка плат: Около 40 плат от 10 производителей

FreeRTOS

FreeRTOS используется совместно с AWS
Используется FreeRTOS совместно с AWS (Источник: Medium)

FreeRTOS была разработана организацией Real Time Engineers, расположенной в Бристоле, Великобритания. В 2017 году руководство дальнейшим развитием было передано компании Amazon, которая также предоставляет версию FreeRTOS с библиотеками для поддержки IoT, специально для AWS.

FreeRTOS также доступна в двух других специальных вариантах. Коммерческое лицензирование доступно в виде OpenRTOS, а для критически важных систем доступна версия под названием SafeRTOS, разработанная компанией Wittenstein High Integrity Systems (WHIS), партнером FreeRTOS, специализирующимся на безопасности.

Подробности

  • Лицензия: Лицензия MIT, коммерческое лицензирование также доступно для OpenRTOS
  • Объем ядра: Зависит от конфигурации, мин. 9 КБ
  • Беспроводные протоколы: Wi-Fi, BLE
  • Другие протоколы связи: Не указано
  • Безопасность: SafeRTOS (вариант с сертификатом безопасности)
  • Средства разработки: Поддержка более 15 цепочек инструментов
  • Архитектуры микроконтроллеров: Более 40 вариантов, включая ARM Cortex-M0 — M7, MIPS и RISC-V
  • Поддержка плат: Около 55 плат от 8 производителей

Mbed OS

Концептуальная архитектура Mbed OS 6
Концептуальная архитектура Mbed OS 6 (Источник: Arm Mbed)

ОС Mbed — это часть комплексной экосистемы для быстрой разработки IoT-устройств на базе микроконтроллеров семейства ARM Cortex-M. Mbed включает инструментарий и IDE для онлайн-использования (Mbed Online Compiler), который основан на стандартных инструментах ARM, таких как компилятор версии 6.14. В качестве альтернативы вместо инструментов ARM можно использовать инструменты GNU.

Помимо онлайн IDE, существует также настольная версия Mbed Studio, доступная для Windows, Linux и Mac. Средства разработки также можно использовать через интерфейс командной строки (CLI).

Документация содержит множество примеров и руководств.

Подробности

  • Лицензия: Apache 2.0
  • Объем ядра: Зависит от конфигурации
  • Беспроводные протоколы: Wi-Fi, BLE, BLE Mesh, LoRa, LoRaWAN, 6LoWPAN sub-GHz Mesh, сотовая связь
  • Другие протоколы связи: Ethernet, NFC, RFID
  • Безопасность: ARM PSA, ARM Pelion (для управления устройствами)
  • Средства разработки: Mbed Online Compiler, Mbed Studio, CLI, множество сторонних инструментов
  • Архитектуры микроконтроллеров: Cortex-M0 — M7
  • Поддержка плат: Около 170 плат от 30 производителей

Николай

Я всегда рад вашим комментариям, предложениям или новостям из первых уст.

Оцените автора
Добавить комментарий