Sign up for the KDAB Newsletter
Stay on top of the latest news, publications, events and more.
Go to Sign-up
Nathan Collins
5 December 2024
Choosing the ideal software stack for your embedded device is a decision that influences both its performance and long-term value. With so many tools available, the burden of figuring out where to start can feel overwhelming. This blog aims to help you streamline your software selection, focusing primarily on the lowest level of the software stack: the operating system.
Linux, with its robustness and flexibility, is a popular choice for many embedded developers. However, it is not suited for all applications. While Linux can handle device responses within a reasonable timeframe, it lacks guarantees for time-critical responsiveness. This limitation makes Linux unsuitable for products requiring deterministic control over hardware responses, which can be crucial in sectors like automotive and industrial automation.
For projects demanding precise, time-critical operations, a real-time operating system (RTOS) like QNX Neutrino, GreenHills INTEGRITY, or VxWorks may be necessary. These systems provide deterministic performance essential for managing hardware that requires strict timing. Despite some unique commands and APIs, all three are POSIX compliant, offering a Linux-like environment and the ability to compile most Linux source code without significant changes.
If you have time-critical constraints but you’d really prefer Linux over an RTOS, there are a few enhancements you can consider:
While these solutions add complexity and require careful integration, they can help you to add real-time capabilities beyond what Linux can achieve alone.
The choice of an embedded file system impacts both functionality and performance. Considerations include:
Choosing the right Linux distribution and board support package (BSP) is crucial. While some board vendors provide Linux distributions, not all are suitable for production use. Building your own Linux using tools like Yocto and Buildroot can offer greater control and customization, so you can cater the build specifically to your project's needs.
Each decision in the software stack from the OS to the application layer involves numerous considerations. By understanding the trade-offs and leveraging suitable technologies and strategies, developers can create robust, efficient, and future-proof embedded devices. The key is to align the technology with the specific requirements and constraints of your project.
This paper is a short distillation of our whitepaper, Embedded Linux: Choosing Your Software Stack. In it, you’ll find more details on the topics above as well as other such as optimizing browser performance, mobile UI design, and flash filesystem considerations.
About KDAB
The KDAB Group is a globally recognized provider for software consulting, development and training, specializing in embedded devices and complex cross-platform desktop applications. In addition to being leading experts in Qt, C++ and 3D technologies for over two decades, KDAB provides deep expertise across the stack, including Linux, Rust and modern UI frameworks. With 100+ employees from 20 countries and offices in Sweden, Germany, USA, France and UK, we serve clients around the world.