When starting a new project for an embedded product, one of the most important decisions you will make, in addition to choosing the right System on Module, is choosing the most suitable operating system (OS). Just as the foundation of a building determines its resilience and longevity, your OS choice can profoundly influence the performance, scalability, and ease of use of your final product. With so many options available, it can be overwhelming to weigh the trade-offs and benefits of each.

In this article, we summarize the key features, advantages, and disadvantages of Yocto, Boot to Qt, Debian, and Android, for use as embedded software platforms in “smart products” designs. Our goal is to offer insights that can guide and help you make an informed decision when deciding the right OS for your embedded project.

Note: There are typically additional considerations that are not listed below, and developers will also have differing opinions. What follows is a high-level summary of the pros and cons of each option.

 

Yocto Project

The Yocto Project is an open-source collaboration project that helps developers create custom Linux-based systems regardless of hardware architecture.

Here are some key strengths of Yocto:

  • Yocto’s key advantage is its ability to build packages from source code using a “manifest.” With this manifest, you can easily recreate an image, even if it was made five years ago, ensuring consistent replication of specific software versions.
  • The software configuration on all deployed devices is known and reproducible from the source code.
  • Since all packages are built from source, they can be patched as needed for the application.
  • Package versions are aligned on all deployed devices.
  • Updates are atomic and protected against power loss when using frameworks like SWUpdate or Mender.
  • The final image can be easily customized with only the packages required for the application, leading to more efficient use of RAM/Storage/CPU.

However, Yocto comes with its own set of challenges:

  • For those new to Yocto, the learning curve might appear steep.
  • Building an image can be time-consuming and resource-intensive since most packages are compiled from source.
  • New packages can be built and installed on a running device. However, if the new package requires additional dependencies, it may require the entire image to be rebuilt and reinstalled on the target device.

Note: Yocto images typically do not include a package management system like apt-get. To install new packages, they must be added to the image recipe and the image rebuilt. This ensures that the OS image is consistently reproducible from a manifest file, a deliberate design choice that emphasizes stability and predictability.

 Check out an example of a Yocto release for DART-MX8M-PLUS based on the NXP i.MX 8M Plus processor.

 

 

DART-MX8M-PLUS System on Module (SoM)

DART-MX8M-PLUS System on Module

 

 

Boot to Qt

Boot to Qt (pronounced “cute”) is a solution offered by The Qt Company. Rooted in the Yocto Project, it is a streamlined layer on top of Yocto, optimized for deploying Qt-based applications on embedded devices.

  • Boot to Qt is built on Yocto, so most of the pros and cons of Yocto (as mentioned earlier) also apply here.
  • Boot to Qt is provided by Qt, so it offers the best integration for Qt-based applications.
  • Boot to Qt offers a newer Qt version as compared to the same version of Yocto (e.g., Boot to Qt Hardknott versus Yocto Hardknott).
  • Qt provides clear documentation for building toolchains for application development on Linux and Windows computers. This simplifies the process for developers who are accustomed to Windows development environments.
    Note: Boot to Qt also supports application development on macOS by using Qt’s Docker-based toolchains. For more information, see: https://doc.qt.io/Boot2Qt/b2qt-requirements-mac.html

Note: When developing a commercial product with Boot to Qt as its embedded OS, commercial licensing is required, so be sure to review Qt’s licensing terms.

 Check out an example of a Boot to Qt release for DART-MX8M-PLUS based on the NXP i.MX8M Plus processor.

 

Debian GNU/Linux

Debian GNU/Linux is a renowned Linux distribution known for its robustness and simplified software management through the Advanced Package Tool (APT). Its long-standing reputation makes it a trusted choice for many developers across various applications.

  • Debian’s Advanced Package Tool (APT) facilitates rapid prototyping, allowing developers to effortlessly install a vast array of precompiled packages and their dependencies. This capability, as demonstrated by Variscite’s Debian image, means that packages can be installed on the target device just as you would on a traditional computer.
  • Being one of the oldest and most popular Linux distributions, Debian has a large, active community and extensive documentation, which can be beneficial for troubleshooting and gaining insights.
  • It is easy to deploy minor updates via new Debian packages, and the availability of Debian repositories ensures that software packages can be effortlessly upgraded, keeping systems secure and up to date.

However, employing Debian GNU/Linux for embedded devices does present certain challenges:

  • Depending on when updates are run, package versions can be mismatched between different devices. This can make it difficult to reproduce problems on systems in the field.
  • Updates are not atomic. Therefore, power loss during an update can cause a misconfiguration.
  • Debian’s stability can be a concern in certain contexts or use cases, especially since you, as the developer, are not compiling the packages from the source code. This may make it challenging to reproduce an image in the future.

Check out an example of a Debian release for DART-MX8M-PLUS.

 

Android OS

Originally designed for mobile devices, Android has expanded its influence to various platforms and devices. Its widespread use and developer familiarity make it a popular choice for many projects beyond just phones and tablets.

  • Many customers will select Android because their developers are familiar with it, and already have an ecosystem built on Android.
  • Android OS natively supports Widevine, enabling the decryption of DRM-protected content such as videos.
  • The dominance of Android in the phone and tablet market has resulted in a vast pool of developer resources and community-driven solutions.

However, Android OS, like its counterparts, presents certain challenges:

  • In terms of system resources like RAM, CPU, and storage, Android typically has heftier requirements compared to the other OS alternatives previously discussed.
  • Upgrading from one Android version to another can be complex; sometimes necessitating the re-partitioning of storage devices.

Check out an example of a Android release for DART-MX8M-PLUS.

 

Conclusion

Choosing the right operating system for an embedded project is crucial. Each option — Yocto, Boot to Qt, Debian, and Android — brings its own set of strengths and challenges. It is essential to align your OS choice with your project’s specific needs and long-term goals. While no single solution fits every scenario, informed decision-making can pave the way for a successful product.