Embedded RTOSes & Kernels
Real-time operating systems for MCUs — Zephyr, FreeRTOS, NuttX, ChibiOS, Mbed OS, TinyGo, Mongoose OS.
When loop() isn't enough — when you need preemptive scheduling, networking stacks, file systems, drivers, and proper IPC. RTOSes sit one rung above Arduino & PlatformIO in complexity, often a rung below ESP-IDF in opinionatedness (or the same rung — IDF includes FreeRTOS).
Zephyr (Linux Foundation)
- ★ Zephyr Project — Apache 2.0; LF-hosted RTOS with strong vendor support (Nordic, NXP, Intel, ST, Espressif, Renesas). Kconfig + Devicetree from the Linux world; broad device-driver tree; native networking (TCP/IP, BLE, Thread, Matter); proper power management; secure boot via MCUboot. Zephyr 4.x in 2026 — the fastest-moving general-purpose RTOS, and Nordic's officially-blessed SDK base.
- ★ nRF Connect SDK — Nordic's Zephyr-based SDK; same kernel + Nordic-specific add-ons (BLE controllers, cellular APIs, nRF Cloud client, MCUmgr). The default for nRF52 / nRF53 / nRF54 / nRF91 development.
- Zephyr SDK — bundled toolchains (Arm, RISC-V, Xtensa); use with
westbuild tool. west— Zephyr's meta-tool (manifest manager + CLI build wrapper).- MCUboot — secure bootloader; the Zephyr-blessed bootloader.
- MCUmgr — over-the-air update protocol (BLE / serial / UDP); pairs with MCUboot.
FreeRTOS (most-installed)
- ★ FreeRTOS — MIT; Amazon-stewarded since 2017. The most-deployed RTOS on Earth — every ESP32 firmware, every nRF Connect application (under Zephyr's POSIX layer), and tens of millions of industrial devices use it. Tasks, queues, semaphores, mutexes, software timers; small footprint; portable to nearly any 32-bit MCU.
- AWS IoT Embedded SDK / FreeRTOS LTS — Amazon's curated FreeRTOS bundle with cloud-connectivity libraries (MQTT, OTA, device shadow, defender). Free.
- FreeRTOS+TCP — TCP/IP stack from the same maintainers; older but solid.
- SafeRTOS — commercial-safety-certified FreeRTOS variant from WITTENSTEIN; not free.
Apache NuttX
- ★ Apache NuttX — Apache 2.0; POSIX-compliant RTOS. "Tiny Unix" feel —
printf,pthread,read/write, real shell,procfs, USB stack, networking, file systems. ESP32 family is well-supported; Sony Spresense uses NuttX as its native OS. Less popular for tiny single-MCU projects, very strong for "I want Unix vibes on a chip."
ChibiOS / RT
- ChibiOS/RT — GPLv3 + commercial license; small, fast, deterministic RTOS with HAL covering many chips (STM32 first-class). Hobbyist favorite for STM32 outside the Arduino world.
Mbed OS
- Mbed OS — Apache 2.0; ARM's own RTOS for Cortex-M. Reached end-of-active-development at Arm in 2024; now community-maintained as Mbed-CE. Still works for legacy projects but not recommended for new ones.
TinyGo (Go for MCU)
- ★ TinyGo — BSD-3; LLVM-based Go compiler that targets MCUs (and WASM). Goroutines, channels, GC, all in tens of KB. Supports ESP32 / ESP8266 / RP2040 / RP2350 / nRF52 / SAMD21/51 / STM32 / AVR. Good ergonomics if your team already writes Go on the server side. Slower iterating than Embassy, faster than C boilerplate.
Mongoose OS
- Mongoose OS — Apache 2.0 base + commercial dashboard; targets ESP32 / ESP8266 / STM32 / CC3220. JavaScript (mJS) + C; OTA, mDNS, MQTT/AWS/GCP IoT integrations baked in. Niche today (much overlap with ESP-IDF + Tasmota / ESPHome) but a clean choice for managed-fleet IoT.
RT-Thread
- RT-Thread — Apache 2.0; Chinese-origin RTOS with very wide chip support, scriptable shell (
msh),pkgspackage manager. Niche outside Asia, but solid.
Azure RTOS / ThreadX
- Eclipse ThreadX (formerly Azure RTOS / ThreadX) — MIT (since Microsoft donated it to Eclipse Foundation in 2024). Mature, certified-safety-grade RTOS; FileX / NetX / GUIX / USBX modules. The "Microsoft commercial-grade RTOS, but free now."
Niche / specialty
- embOS (Segger) — commercial; high quality; pairs with J-Link debug stack.
- Nuttx Apache (mentioned above).
- Distortos (C++17 RTOS) — niche; modern C++ feel.
- HermitCore / unikraft — unikernel-flavored systems; not really MCU-class.
- Tock OS — Rust-based capability OS for MCUs; research-y but well-built.
What FreeRTOS-inside-IDF / Zephyr-inside-nRF-Connect-SDK actually means
A common confusion: ESP-IDF is FreeRTOS underneath. Nordic's nRF Connect SDK is Zephyr underneath. You don't have to "choose FreeRTOS" if you're already using IDF — you already are. Same for Zephyr on nRF.
When people say "I want FreeRTOS" outside ESP, they usually mean: STM32 / Cortex-M without ST's CubeMX-flavored SDK, with manually composed FreeRTOS + LwIP + drivers.
Build / config systems by RTOS
- Zephyr — Kconfig + Devicetree + CMake +
west. Kernel-Linux-flavored. - NuttX — Kconfig + Make. Kernel-Linux-flavored.
- FreeRTOS — drop-in source files; you own the build (Make, CMake, Bazel, IDE-internal).
- ESP-IDF (FreeRTOS) —
idf.py+ Kconfig + CMake. - ChibiOS — Make + project skeleton.
- TinyGo —
tinygo flash --target=xiao-rp2040 main.go. Pleasantly Go-flavored.
Wireless / networking baked in?
- Zephyr — yes (Wi-Fi, BLE, Thread, Matter, 802.15.4, USB, Ethernet).
- ESP-IDF + FreeRTOS — yes (Wi-Fi, BLE, Thread, Zigbee, Matter, ESP-NOW).
- NuttX — Wi-Fi (ESP32 port), Ethernet, USB; BLE less mature.
- FreeRTOS bare — pair with LwIP / Mbed-TLS / your own glue.
- TinyGo — depends on chip; Wi-Fi via CYW43439 driver on Pico W; experimental BLE.
- Mongoose OS — yes; the selling point.
Pick this if…
- Default modern open RTOS, vendor-supported: Zephyr.
- Default RTOS underneath (whether you notice or not): FreeRTOS — it's already inside ESP-IDF and AWS's stack.
- Default for nRF52 / nRF53 / nRF54 / nRF91: nRF Connect SDK (= Zephyr).
- POSIX feel on an MCU: Apache NuttX.
- STM32 hobby / professional, small and clean: ChibiOS.
- Your team writes Go: TinyGo.
- JavaScript + cloud IoT in a fleet-managed flavor: Mongoose OS.
- You're allergic to RTOS ceremony and your chip is an ESP32 or Pi Pico: stay with Arduino & PlatformIO or MicroPython.