Зачем IoT-устройству RTOS
Если ваш датчик считывает температуру раз в минуту и отправляет значение по UART — RTOS не нужна. Хватит суперцикла (while(1)) и пары прерываний. Но как только появляется второе, третье, десятое требование — BLE-стек, OTA-обновления, TLS-шифрование, работа с датчиками по нескольким интерфейсам одновременно — bare-metal превращается в спагетти из флагов и state-машин.
RTOS решает три задачи:
- Многозадачность: несколько потоков работают «параллельно» с предсказуемым поведением
- Детерминизм: гарантированное время реакции на событие (прерывание → обработка за N микросекунд)
- Абстракция железа: драйверы, сетевые стеки, файловые системы — готовые, отлаженные, с API
В 2026 году два основных кандидата для IoT — FreeRTOS и Zephyr. Оба бесплатные, оба с открытым исходным кодом, оба поддерживают десятки микроконтроллеров. Но философия и возможности у них принципиально разные.
FreeRTOS: ветеран embedded-мира
FreeRTOS появился в 2003 году. С 2017 года принадлежит Amazon (AWS). Это минимальное ядро реального времени: планировщик задач, очереди, семафоры, таймеры. Всё остальное — опционально.
Архитектура
Ядро FreeRTOS — это ~9 000 строк кода на C. Настолько компактно, что его можно прочитать за выходные. Это и сильная сторона, и ограничение:
- Планировщик: приоритетный, с вытеснением (preemptive) или кооперативный
- Память: статическое или динамическое выделение (5 схем heap на выбор)
- Синхронизация: семафоры, мьютексы (с наследованием приоритетов), очереди, event groups
- Таймеры: программные, с выделенным daemon-потоком
Минимальный бинарник FreeRTOS занимает 6–10 КБ Flash и ~1 КБ RAM. Это позволяет запускать его на самых маленьких Cortex-M0 с 16 КБ Flash.
Экосистема (FreeRTOS+)
Amazon выстроил вокруг ядра экосистему FreeRTOS Libraries:
- FreeRTOS+TCP: TCP/IP стек (IPv4/v6)
- coreMQTT: MQTT-клиент для AWS IoT Core
- corePKCS11: криптография и сертификаты
- AWS IoT OTA: обновления прошивок через облако
- FreeRTOS+FAT: файловая система
Проблема: эти библиотеки хорошо интегрированы с AWS, но за пределами экосистемы Amazon начинаются сложности. BLE-стек? Нужен NimBLE или vendor-specific. Thread/Matter? Не поддерживается из коробки. LoRa? Сторонняя библиотека.
Кому подходит FreeRTOS
- Проекты с жёсткими ограничениями по Flash/RAM (менее 64 КБ)
- Интеграция с AWS IoT Core
- Команда, которая привыкла к FreeRTOS и не хочет переучиваться
- Простые устройства с 1–2 интерфейсами связи
Zephyr: Linux-подход к embedded
Zephyr стартовал в 2016 году под эгидой Linux Foundation. За ним стоят Intel, Nordic Semiconductor, NXP, Texas Instruments и ещё 1 000+ участников. Это не просто ядро — это полноценная операционная система для embedded.
Архитектура
Zephyr использует Linux-подобную модель:
- Device Tree: описание железа в отдельном файле (
.dts), а не в коде. Один и тот же драйвер работает на разных платах без #ifdef - Kconfig: конфигурация системы через menuconfig, как в ядре Linux
- West: мета-инструмент для сборки, прошивки, управления зависимостями (аналог repo/cmake/west в одном)
- Модульная архитектура: ядро, драйверы, стеки — всё подключается через Kconfig
Ядро Zephyr поддерживает:
- Потоки: приоритетный планировщик с вытеснением
- Синхронизация: мьютексы, семафоры, condition variables, mailboxes, pipes
- Memory domains: изоляция памяти между потоками (на MCU с MPU)
- Userspace: разделение привилегированного и пользовательского кода
Сетевой стек — главное преимущество
Здесь Zephyr доминирует:
| Протокол | FreeRTOS | Zephyr |
|---|---|---|
| TCP/IP (IPv4/v6) | FreeRTOS+TCP | Встроенный |
| BLE 5.3+ | NimBLE (сторонний) | Встроенный |
| 802.15.4 (Thread/Zigbee) | Нет | Встроенный |
| Matter | Нет | Официальная платформа |
| LoRaWAN | Сторонний | Встроенный |
| Wi-Fi | Vendor-specific | Встроенный (с драйверами) |
| 6LoWPAN | Нет | Встроенный |
| CoAP | Сторонний | Встроенный |
| LwM2M | Нет | Встроенный |
| CAN / CAN FD | Нет | Встроенный |
Zephyr — официальная референсная платформа для Matter (протокол умного дома от Apple, Google, Amazon). Если вы делаете устройство для экосистемы Matter — выбор очевиден.
Безопасность
Zephyr серьёзно подходит к безопасности IoT-устройств:
- MCUboot: безопасный загрузчик с проверкой подписи, A/B-обновлениями, откатом
- TF-M (Trusted Firmware-M): изолированное выполнение на Cortex-M33/M55 с TrustZone
- PSA Certified: Zephyr сертифицирован по PSA Level 1
- Crypto API: единый интерфейс к mbedTLS, tinycrypt, hardware-ускорителям
FreeRTOS предлагает corePKCS11 и интеграцию с AWS, но без MCUboot, без TF-M, без PSA-сертификации.
Сравнение по критериям
1. Размер и ресурсы
| Параметр | FreeRTOS | Zephyr |
|---|---|---|
| Минимальный бинарник | 6–10 КБ Flash | 30–50 КБ Flash |
| Минимум RAM | ~1 КБ | ~8 КБ |
| С BLE-стеком | 80–120 КБ (NimBLE) | 150–200 КБ |
| С TCP/IP + TLS | 100–150 КБ | 200–300 КБ |
| Целевые MCU | Cortex-M0 и выше | Cortex-M3 и выше (реально) |
FreeRTOS выигрывает на маленьких чипах. Если у вас STM32F0 с 32 КБ Flash — Zephyr просто не влезет.
2. Поддерживаемые платформы
| Архитектура | FreeRTOS | Zephyr |
|---|---|---|
| ARM Cortex-M | Все | Все |
| ARM Cortex-A | Да | Да |
| RISC-V | Да | Да |
| Xtensa (ESP32) | Да (ESP-IDF) | Да |
| x86 | Ограниченно | Да |
| ARC | Нет | Да |
| MIPS | Да | Нет |
| Количество BSP | ~40 портов | 600+ плат |
Zephyr поддерживает в 15 раз больше плат. Новые чипы от Nordic, NXP, STM появляются в Zephyr в первую очередь — вендоры поддерживают свои BSP в upstream.
3. Инструменты разработки
| Параметр | FreeRTOS | Zephyr |
|---|---|---|
| Система сборки | CMake / Make / IDE-зависимая | CMake + West |
| Конфигурация | #define в header | Kconfig (menuconfig) |
| Описание железа | В коде (HAL/BSP) | Device Tree |
| Отладка | GDB, J-Link, любая IDE | GDB, J-Link, VS Code (extension) |
| Тестирование | Нет встроенного | Ztest (юнит-тесты), Twister (CI) |
| Статический анализ | Внешний | Встроенный (с Kconfig) |
Порог входа в FreeRTOS ниже: скачал, добавил файлы в проект, написал xTaskCreate(). Zephyr требует установки west, SDK, изучения Kconfig и Device Tree — кривая обучения круче.
Но для серийного продукта инструменты Zephyr окупаются: Device Tree позволяет портировать прошивку на новую плату за часы, а Twister запускает тесты на сотнях конфигураций в CI.
4. Коммерческая поддержка и сообщество
| Параметр | FreeRTOS | Zephyr |
|---|---|---|
| Владелец | Amazon (AWS) | Linux Foundation |
| Лицензия | MIT | Apache 2.0 |
| Коммерческая поддержка | AWS, WITTENSTEIN (SafeRTOS) | Nordic, Intel, Golioth, Foundries.io |
| GitHub stars | ~5 500 | ~10 000+ |
| Релизный цикл | Нерегулярный | Каждые 4 месяца (LTS каждые 2 года) |
| Сертификации | SafeRTOS (IEC 61508, DO-178C) | PSA Certified Level 1 |
| Вендорский buy-in | AWS | Nordic, NXP, Intel, TI, Renesas |
FreeRTOS имеет сертифицированную версию SafeRTOS для safety-critical систем (автомотив, медицина, авиация). Zephyr пока не сертифицирован по IEC 61508, но работа ведётся.
NuttX: третий вариант
Стоит упомянуть NuttX — POSIX-совместимую RTOS, которую использует Sony (камеры), Samsung (Tizen) и Xiaomi (умный дом). NuttX предоставляет полный POSIX API — ваш embedded-код выглядит как обычная Linux-программа: open(), read(), write(), pthread_create().
Когда NuttX имеет смысл:
- Переносите код с Linux на MCU
- Команда знает POSIX, но не знает FreeRTOS/Zephyr API
- Нужна файловая система, сеть, USB — всё в одной ОС
Минус: сообщество меньше, документация слабее, поддержка новых чипов медленнее.
Матрица выбора
| Ваш проект | Рекомендация | Почему |
|---|---|---|
| Датчик на батарейке, Cortex-M0, 32 КБ Flash | FreeRTOS | Zephyr не влезет |
| BLE-устройство на Nordic nRF52/nRF53 | Zephyr | Nordic поддерживает Zephyr как основную платформу |
| Matter-устройство для умного дома | Zephyr | Официальная референсная платформа |
| AWS IoT интеграция | FreeRTOS | Нативные библиотеки для AWS |
| Thread/Zigbee mesh-сеть | Zephyr | Встроенный 802.15.4 стек |
| Промышленный контроллер с CAN | Zephyr | CAN/CAN FD из коробки |
| Носимое устройство (фитнес-трекер) | Zephyr | BLE + Display + Sensors — всё встроено |
| ESP32 проект | ESP-IDF (FreeRTOS внутри) | Лучшая интеграция с Espressif |
| Safety-critical (IEC 61508) | SafeRTOS | Единственный сертифицированный |
| Быстрый прототип, малая команда | FreeRTOS | Ниже порог входа |
| Серийный продукт 100K+ шт. | Zephyr | Device Tree, CI, LTS, вендорская поддержка |
Тренд: куда движется индустрия
В 2024–2026 годах наблюдается явный сдвиг в сторону Zephyr:
- Nordic Semiconductor перевёл nRF Connect SDK полностью на Zephyr (nRF5 SDK устарел)
- NXP активно коммитит в upstream Zephyr
- Matter (бывший Project CHIP) использует Zephyr как основную embedded-платформу
- Golioth, Foundries.io, Memfault — экосистема IoT-сервисов строится вокруг Zephyr
FreeRTOS никуда не денется — у него огромная installed base и поддержка Amazon. Но для новых проектов с BLE, Thread, Matter, OTA — Zephyr становится стандартом де-факто.
Итого
- FreeRTOS — когда нужно минимальное ядро, мало ресурсов, простое устройство или привязка к AWS. Проверенное решение с 20-летней историей.
- Zephyr — когда нужен полноценный сетевой стек, безопасность, Matter/Thread, серийное производство. Будущее embedded IoT.
- NuttX — когда нужен POSIX API и портирование Linux-кода на MCU.
Главная ошибка — выбирать RTOS по знакомству. FreeRTOS проще начать, но если через полгода понадобится OTA с подписью, BLE mesh или Thread — придётся переписывать с нуля. Закладывайте требования на 2 года вперёд.
Проектируете IoT-устройство и не уверены в выборе платформы? Мы делаем экспресс-аудит IoT-идеи за 25 000 ₽: архитектура, компоненты, RTOS, стоимость прототипа — за 5 рабочих дней. Или посмотрите наши услуги по IoT и embedded-разработке.