Selecting an RTOS, Which Should I Use?

Selecting an RTOS

Introduction

So, you’re kicking off a new embedded project, congrats! Whether you’re wrangling sensors, spinning motors, or just trying to blink an LED and talk to the cloud at the same time, you’ve probably hit the age-old question: which Real Time Operating System (RTOS) should I use? Picking an RTOS can feel like walking into a hardware store with a vague idea of what you need—there are so many options, and they all promise to be just what you’re looking for. In this post, we’ll break down the key considerations to help you navigate the RTOS jungle and make a choice that won’t come back to bite you in the bootloader.

But wait, what is a RTOS?

An RTOS is a lightweight OS designed to run on embedded systems where timing is critical. Unlike general-purpose operating systems, an RTOS is built to respond to events predictably and quickly. At its core, it manages tasks, prioritizes them, and ensures they meet timing deadlines which are often within milliseconds or even microseconds. Common features include task scheduling (usually preemptive), inter-task communication (like queues, semaphores, pipes, or message buffers), and resource management (e.g., memory, peripherals). You’d use an RTOS when your system has to juggle multiple things at once like reading sensors, communicating over a network, and controlling outputs without missing a beat. It helps keep your code modular, responsive, and easier to scale as complexity grows. Let’s go through 5 commonly used RTOS, how they compare to each other and when would you choose one over the other!

Book a Call with Dojo Five Embedded Experts

Common RTOS in the wild

FreeRTOS

FreeRTOS is one of the most widely used open-source RTOS options in the embedded world. It’s lightweight, simple to integrate, and has strong support across a broad range of MCUs. It is managed by Amazon who fully integrated security/connectivity libraries and provides a tight integration with AWS IoT. FreeRTOS is great for smaller systems that need task management without a ton of overhead. It has a massive user base, which means plenty of community help and examples. The FreeRTOS community is also actively working on Safety Certified FreeRTOS which will be certified for use in certain safety-critical systems. 

Zephyr

Zephyr is a scalable, open-source RTOS backed by the Linux Foundation. It targets everything from small embedded devices to more capable IoT nodes and supports a wide range of hardware. Zephyr includes a modern device driver model, a built-in configuration system (via Kconfig and devicetree), and a rich set of features such as networking, file systems, security, and more. Its highly configurable build system allows developers to optimize for minimal memory footprint or expand to include advanced capabilities as needed. The project also offers a broad set of modular components, such as Bluetooth stacks, USB device support, and sensor frameworks, making it a powerful platform for connected and feature-rich embedded applications. Since Zephyr specializes in abstracting hardware-specific logic from application logic using various abstraction methods mentioned above, it is great for cross platform or if you would like to quickly port your applications between different versions/boards.

ThreadX

ThreadX used to be part of Microsoft’s Azure RTOS suite but has now transitioned to an open-source model under the Eclipse Foundation, becoming Eclipse ThreadX. It is a compact, high-performance RTOS with a reputation for speed and simplicity. It features an elegant API and ultra-low context switch times. It’s often found in consumer electronics, medical devices, and IoT products. Eclipse ThreadX also offers components like a file system (FileX), networking (NetX Duo), and USB stack (USBX).

embOS

embOS is a commercial RTOS developed by SEGGER, known for its small footprint, fast context switching, and zero royalties. It’s designed for high reliability and real-time performance. embOS integrates well with SEGGER’s ecosystem, including debugging and trace tools like SystemView and Ozone. While the core kernel is compact and monolithic, it supports modular extensions through SEGGER’s middleware stack. embOS is also available in a safety-certified version (embOS-Safe) and prequalified for standards like IEC 61508, and ISO 26262.

µC/OS & CesiumRTOS

Originally developed by Micrium and widely adopted across safety-critical industries, µC/OS (including µC/OS-II and µC/OS-III) is a proven RTOS known for its deterministic behaviour, clean architecture, and extensive documentation. While Silicon Labs now owns the Micrium brand and maintains Micrium OS for their own hardware platforms, Weston Embedded Solutions is the official maintainer of µC/OS, which is open source now, for general embedded use. Weston Embedded provides ongoing updates and safety-certification packages (such as for FDA, ISO 26262, IEC 61508).

Weston Embedded also offers CesiumRTOS, a modern evolution of µC/OS-III. While µC/OS continues to be maintained for compatibility and long-term support, CesiumRTOS is a clean, enhanced implementation with new features, additional architecture support, and active development. Both options come with safety certification support and commercial licensing, making Weston Embedded a go-to resource for embedded teams building high-reliability systems.

General Differences to Consider

RTOSLicenseFootprint (min ROM)Cloud IntegrationCommunity Support
FreeRTOSMIT (Open Source)~5-10 KBAWSHuge open-source community, very active
ZephyrApache 2.0  (Open Source)~2-8 KBOptional (via modules)Growing open-source ecosystem with Linux Foundation backing
ThreadXMIT (Open Source)~2 KBAzureModerate; small dev community post-transition
embOSCommercial (SEGGER)~1.7 KBNoneVendor-supported, strong tooling, small public community
µC/OSApache 2.0 (Open Source)~6-24 KBNone, manual integrationSmall but stable
CesiumRTOSCommercial (Weston Embedded)~6-24 KBNone, integration-friendlyActively supported by Weston Embedded, commercial access

More Technical Differences to Consider

RTOSKernel Type/SchedulingModularityPortabilityDebugging/TracingSafety/Certification
FreeRTOSSimple, preemptive/cooperative, SMPMinimal, monolithic with optional components/librariesVery portable, wide MCU supportBasic, enhanced via 3rd-party tools like SEGGER SystemViewIn progress. Commercial SAFERTOS pre-certified
ZephyrMicrokernel-like, SMP supportHighly modular with Kconfig/devicetreeModern HAL + devicetree, flexibleBuilt-in tools, setup can be complexIn progress, not fully mature
ThreadXFast context switching, preemptiveTight core, modular Azure RTOS suiteExcellent portability, now under EclipseTraceX included, good visualizationCertifiable, used in regulated industries
embOSPriority-based, preemptive, non-SMPMonolithic, modular via SEGGER toolsHighly portable, SEGGER-supported portsDeep integration with SEGGER SystemView/OzoneCertifiable, used in safety-focused projects
µC/OSDeterministic, preemptive with time slicingHighly modular, legacy structurePortable especially for Cortex-M, customizableAdvanced tools (SEGGER SystemView,  uC/Probe)Certifiable for FDA, IEC 61508, ISO 26262, etc.
CesiumRTOSEnhanced deterministic kernel preemptive with extensionsModular with improved abstraction and integration optionsExtended platform support (ARM, RISC-V, etc)Advanced tools (SEGGER SystemView,  uC/Probe)Certification-ready, with modern compliance packages

Which RTOS Should You Choose?

Choosing the right RTOS depends on your application, hardware, and team experience. Here’s a quick cheat sheet with those RTOSes included in this blog post:

  • Use FreeRTOS if you want fast startup, a huge community, and lightweight scheduling for a small MCU which is battle-tested and well-documented, especially for resource-constrained systems.
  • Use Zephyr if you’re working on a complex or scalable IoT/network platform and want modern tooling, open-source flexibility, cross-platform/portability and an active development community.
  • Use ThreadX if you’re targeting an IoT or consumer device, want performance and a clean, mature API.
  • Use embOS if you’re already in the SEGGER ecosystem and need a small-footprint RTOS with excellent tooling, strong commercial support, and safety certification options.
  • Use µC/OS if you’re building a cost-sensitive or non-critical embedded system and want a proven, open-source RTOS with minimal overhead.
  • Use CesiumRTOS if you’re developing a safety-critical product and need certification artifacts, ongoing support, and a modernized, production-ready RTOS.
Which RTOS Should You Choose?

Remember, these are general recommendations, not strict rules. There are many excellent RTOS options out there, and the best choice always depends on your specific project needs, constraints and ecosystem. Use these recommendations as a starting point, but be sure to evaluate each option carefully based on your needs.

Conclusion

There’s no one size-fits-all answer, but understanding your project’s requirements and the trade-offs of each RTOS will help you make a confident choice. And remember, whichever RTOS you pick, the key is how you use it. Good architecture, solid debugging practices, and clear task design will get you further than any kernel flag or preemption tweak. If you have questions about selecting an RTOS or designing and implementing your RTOS project, Dojo Five can help you with all aspects of your embedded project. 

Book a call with us to get the conversation started. Or, check out our CI build platform and increase your productivity.

We look forward to hearing from you! -D5

References

Discover why Dojo Five EmbedOps is the embedded enterprise choice for build tool and test management.

Sign up to receive a free account to the EmbedOps platform and start building with confidence..

  • Connect a repo
  • Use Dev Containers with your Continuous Integration (CI) provider
  • Analyze memory usage
  • Integrate and visualize static analysis results
  • Perform Hardware-in-the-Loop (HIL) tests
  • Install the Command Line Interface for a developer-friendly experience

Subscribe to our Monthly Newsletter

Subscribe to our monthly newsletter for development insights delivered straight to your inbox.

Interested in learning more?

Best-in-class embedded firmware content, resources and best practices

HIL Raspberry Pi

Hardware-in-the-loop is hard! Sometimes.

By: Ander Galisteo, Ph.D.
The concept of hardware-in-the-loop (HIL) is not new in the embedded space. The basic idea is to automate the functional tests of your device under development to verify if your implementation does what it’s supposed to do.

Read More »
Build Yocto Faster with EmbedOps

Build Yocto Faster with EmbedOps

Ask an embedded engineer what they do while a Yocto image builds and you get a version of the same answer. They switch to something else and forget to come back, or they can’t concentrate because the thing might finish any minute. As one told us, the wait is hard to put to any effective use. On the image we benchmark against, the first build takes an hour and 43 minutes. The ones after it take 8 to 12 minutes

Read More »
Arduino OPTA PLC

Upgrading Your Control System: Replacing your existing PLC with Arduino OPTA

In the world of industrial automation and control systems, Programmable Logic Controllers (PLCs) have been the go-to solution for decades. They offer reliability, stability, and robust performance. However, with advancements in technology, more cost-effective alternatives have emerged. One such alternative is replacing your current PLC with an Arduino OPTA (Open Programmable and Transformative Automation). Follow along as we explore the benefits of making the switch from a traditional PLC to an Arduino OPTA, highlighting the advantages and potential challenges you

Read More »