Selecting an Embedded OS

Choice of operating system has a long and significant impact on any project, especially embedded systems.

There is no perfect option. It helps to first identify what factors are most important to you:

  • Capabilities
  • Long term support (security updates)
  • Time to market
  • Hardware compatibility
  • Touch screen features
  • License cost
  • Commercial support
  • Component customization
  • Core OS modifications


Windows/Linux/BSD systems are all general purpose operating systems. They are not well suited to some specialized use cases:

  • If you need to be very small or draw very little power then you are likely to use a microcontroller such as the ARM Cortex-M on Arduino. These have their own instruction sets that you interact with directly, often supporting just a single C program.
  • For high reliability in a harsh environment with precise control of timing, Programmable Logic Controllers are your friend. For safety critical systems, the simpler the better.
  • If you need more logic horsepower than a PLC but still have strict timing requirements (i.e. vehicle automation), then look at Real Time Operating Systems (RTOS) such as FreeRTOS.

The remainder of this post is focused on deciding among general purpose operating systems.

Long Term Support

Embedded systems typically have longer life cycles and need to be updated in place for years. Particularly security updates. With any OS, be sure to use the Long Term Service Branch (LTSB) or Long Term Support (LTS) edition. Years of support are determined by (X + year of release) so newer releases will get you more mileage. Long term support releases come with more stability at the expense of not having the latest features.

  • Microsoft offers 10 years of security updates for the Windows 10 IoT Enterprise LTSB. 2016 is the current LTSB edition with another expected in 2019.
  • You can find most Linux life cycle information all in one place at Both CentOS and Red Hat Enterprise Linux offer 10 year support, but their latest release is getting a bit old (2014). Debian and Ubuntu only provide 5 years but have newer release starting points, providing you more modern features.

Time to Market

Some systems provide better productivity for developers, shortening your time to market. Having good development tools and being able to use the same OS for development and the released system will help in this dimension.

  • Windows 10 IoT Enterprise: Visual Studio is well regarded for development productivity. The IoT Enterprise binary is the same as you would use on a workstation, just licensed for use on embedded systems, so you can debug real world problems on your local machine. The Microsoft technology stack often presents just one (or a small number) of ways to do something, which reduces the analysis paralysis that can bog down a Linux team.
  • But don’t count Linux out here. Both Debian and Ubuntu can be used in both dev and production systems and provide lots of modern tooling options.

Hardware Compatibility

If you have particular hardware attachments in mind, check the operating systems supported by their device drivers. Particularly for USB devices and internal components like graphics cards. Microsoft Windows tends to have the best hardware driver support, both for internal components and peripherals. Especially if you are using high end graphics cards or USB devices.

Touch Screen Features

Android has the best support for touch screens. If you go with something else, even if it has driver support, be prepared to build your own UI for things like an on-screen keyboard.

Being focused on consumer devices, Android support periods and manufacturing runs can be very short. You are highly dependent on both the OS and the manufacturer of the hardware to maintain support. Expect to have to change what hardware you are buying every couple of years and consider what this will do to your support chain. That free on-screen keyboard might not be worth it.

License Cost

Windows IoT Enterprise licensing cost is based on the performance of the CPU ranging from $39 TO $139. Red Hat Enterprise Linux pricing varies by usage.

All other general purpose systems discussed in this post are free.

Commercial Support

If you have a big system and a big budget, consider an OS with commercial support backing. Windows and Red Hat Enterprise Linux are the big contenders here.

Component Customization

Tools are now available to build your own custom Linux distribution, such as Yocto and Buildroot. This gives you the most control of what is on your system, at the expense of being more technically complex to create and manage. You will not have the curated updates and security patches that come with using a formal distribution like CentOS.

Core OS Modifications

If you need to make proprietary modifications to the core of an OS, using one of the BSD flavors is effectively your only choice. You would be in violation of license agreements if you did that with any Linux flavor.

Odds and Ends

Note that extended support of Windows Embedded Standard 7 SP 1 ends late 2020. I would not consider this an option for a new system.

Windows 10 IoT Core edition is a bit of an oddball. It has no license cost, runs on lower power devices (Raspberry Pi scale), integrates with Azure IoT device management services, and can run C# UWP apps. But it has much more limited hardware compatibility than we are used to seeing for Windows, can only run a single foreground app (with multiple headless background apps), and is missing features like MSMQ found on the full version of Windows. It has mostly supplanted the .NET Micro Framework which has had no updates in several years.

Featured Image Credit

Photo by Albin Berlin.

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.