FreeRTOS vs Zephyr vs Embedded Linux: How to Choose the Right OS for Your Embedded Product

FreeRTOS vs Zephyr vs Embedded Linux

Choosing between FreeRTOS, Zephyr, and Embedded Linux comes down to three questions: how much RAM and flash your hardware has, how strict your timing requirements are, and how long the product needs to stay in the field.

Pick FreeRTOS when you have a low-memory microcontroller, want full control over the code, and need a firmware team productive fast. Pick Zephyr when the product needs Bluetooth, Wi-Fi, or Thread built in and might move across hardware vendors during its life. Pick Embedded Linux when the product needs a full software stack — networking, file systems, containers, over-the-air updates — and the hardware budget to support it.

Many 2026 designs use more than one: Linux runs the application logic on one processor core while Zephyr or FreeRTOS handles the timing-sensitive work on a second core. The rest of this guide walks through why, with real numbers and named hardware, not just general advice.

Why This Choice Is Hard to Undo

The operating system you pick early shapes almost everything that follows: your hardware abstraction layer, your debug workflow, which engineers you can hire, how you handle a chip shortage, and how you patch security holes five years from now. Most teams spend more time picking a lunch spot than they spend on this call, then live with it for the life of the product.

The Real Trade-Off

FreeRTOS

FreeRTOS gives you a small, dependable scheduler and gets out of the way. You write your own logic on top of it using your vendor’s HAL. Nothing is hidden from you, and nothing is done for you either. On a typical Cortex-M part, a bare FreeRTOS build fits in tens of kilobytes of flash — small enough that memory is rarely the limiting factor.

Zephyr

Zephyr is a full embedded platform, not just a kernel. Out of the box it comes with networking, Bluetooth, file systems, power management, and a device driver model borrowed from Linux. A minimal Zephyr kernel image lands close to 18–20 KB of flash and 4 KB of RAM on hardware like Nordic’s nRF52840 — close to FreeRTOS at the kernel level. The gap opens once you add networking, security, and Bluetooth middleware, where Zephyr can add 15–25 KB of flash and several KB of RAM over an equivalent FreeRTOS build. On a 256 KB flash part that gap barely matters. On a 64 KB part, it can decide the whole design.

The trade for that capability is setup time. Most engineers coming from FreeRTOS or bare-metal C need two to four weeks before they’re comfortable with Kconfig, devicetree files, and the west build tool — versus about a week to get productive in FreeRTOS.

Embedded Linux

Embedded Linux gives you the deepest software library of the three, along with memory protection, a full debugging toolchain (GDB, strace, valgrind, perf), and — with PREEMPT_RT patches — timing good enough for most real-time work. The cost is hardware: Embedded Linux needs tens of megabytes of RAM and flash at minimum, and boot time is measured in seconds, not milliseconds. That rules it out for coin-cell devices and puts it firmly in application-processor territory.

A Quick Correction

The idea that FreeRTOS is always “light” and Zephyr is always “heavy” is out of date. FreeRTOS has added MQTT, TLS (via mbedTLS), and multi-core support over the past few release cycles. Zephyr’s minimal kernel builds have shrunk in parallel. If your mental model of either OS is from 2022 or 2023, verify against the current release before you commit hardware around it.

Comparison at a Glance
FreeRTOS Zephyr Embedded Linux
Typical base flash/RAM Tens of KB ~18–20 KB flash / 4 KB RAM (kernel only) Tens of MB minimum
Boot time Milliseconds Milliseconds Seconds
Time to productive About a week Two to four weeks Depends on prior Linux experience
Built-in networking/Bluetooth Add-on libraries, manual integration Included, first-party (BLE host stack is qualification-ready) Included, wide package support
Debugging tools GDB, vendor IDE GDB, native_sim (host-side testing), tracing subsystem GDB, strace, valgrind, full toolchain
Governance / long-term support Maintained by Amazon Linux Foundation, LTS windows around 2.5 years Large open community, longest track record
Board support Vendor-specific, manual porting 600+ boards with official definitions Broadest hardware range, application processors
Best hardware fit Cortex-M, low pin count, cost-sensitive Cortex-M and up, connected products Cortex-A, application processors

Where Each One Actually Wins

FreeRTOS fits simple, cost-sensitive products — sensor nodes, motor controllers, basic wearables — where you know exactly what the device needs to do and don’t want extra weight in flash or RAM. It also fits teams with junior firmware engineers who need to be useful fast.

Zephyr fits connected products that need Bluetooth, Wi-Fi, or Thread out of the box, and products expected to move across hardware vendors over their life. Its devicetree model means a codebase built for one microcontroller can retarget to a different vendor’s chip — say, moving from a Nordic nRF5340 to an NXP RT1060 — by changing a board definition rather than rewriting application logic. Teams that lived through the 2021–2023 chip shortages and had to swap silicon mid-production found this out directly: the ones on Zephyr had a measurably easier time.

Embedded Linux fits products that need real software depth: full networking stacks, a file system, containers, or over-the-air update tooling that would take months to build from scratch on an RTOS. It also fits products with a long service life — ten years or more — where a large maintenance community gives more confidence that patches will still exist a decade out.

The Hybrid Pattern

Many 2026 designs don’t pick a single OS at all. A common setup: Linux runs on an application processor (a Cortex-A core) handling the user interface, cloud connection, and general software, while a real-time co-processor (a Cortex-M core on the same chip) runs Zephyr or FreeRTOS for timing-sensitive work — motor control, safety interlocks, sensor sampling. The two sides communicate over shared memory using RPMsg or OpenAMP.

This pattern shows up on chips like the NXP i.MX 8M Mini, which pairs four Cortex-A53 cores for the application stack with a Cortex-M4 for real-time motor control. It’s now common in safety-related systems specifically because it keeps timing-sensitive code physically separate from the general-purpose Linux side.

Picking between these three comes down to what your specific product needs to do, what your team already knows, and how long the device has to stay in the field. If you’re scoping an embedded project and want a second opinion on which fits, PQ Angels’ embedded systems team is happy to talk it through — book a discovery call.

Questions Worth Asking Before You Commit

Can I switch operating systems partway through a project?

Technically yes, but it’s expensive. Task structure, drivers, and build tooling are all tied to your OS choice. Most teams that switch do it after a first prototype shows the original pick doesn’t fit — not mid-production.

Not at the kernel level. A bare Zephyr build runs close to FreeRTOS in flash and RAM. The gap opens once you add networking, security, or Bluetooth — features FreeRTOS doesn’t include by default and has to bolt on separately.

Yes, for the right product. It remains the fastest way to get a firmware team productive, and it’s still the default on many low-cost microcontroller boards. It’s the wrong choice only when the product needs the connectivity or portability that Zephyr or Linux handle natively.

It helps. Flash and RAM budgets, power targets, and which chip you’ve already picked all shape which OS makes sense — this isn’t a software-only decision.

What do you think?
From our blog

Articles & insights