Embedded Linux

As the default embedded OS, the adoption of Embedded Linux puts high expectations on the development team, because “default” equals “easy”, right?

Not always.  With hundreds of versions and distributions, software stacks, configurations, and an almost infinite selection of middleware, even the most dedicated Linux expert is familiar with only a fraction of what is out there.

Fortunately, the Yocto Project defines a system which simplifies the creation of a build which is suitable for many (but not all) embedded applications. A particular Yocto build may reduce hardware-specific complexity, but equally may add restrictions which are not suitable to the task at hand, or may simply “break” in any particular situation (not Yocto’s fault – like any recipe, a certain set of quality ingredients and cooking skills are assumed!).

Inevitably, Yocto or any other set of instructions will become a guide to rather than a substitute for proper understanding of what’s going on “under the hood”. At this point, either you need to be an expert, or have someone on hand who is.

Meeting the challenge of “making Linux easy”

The “quality ingredients” mentioned above necessarily include a couple of vital assets.

A high quality Board Support Package, which can easily be adapted to production-readiness for your specific platform is the first, ensuring that the required hardware-specific elements fall into place without additional work. In addition, one reason to choose Linux is the vast quantity of off-the-shelf add ons – GUI frameworks, imaging systems, wireless modules etc. – and these won’t work unless platform-specific integration has been done.

The second vital asset is readiness for cybersecurity compliance. This means that the required support for specific requirements such as secure boot, encryption and security updating are in place, as well as a starting-point image which is “free from exploitable vulnerabilities”, and can be subject to appropriate monitoring to maintain that state.

Should I be considering a commercial OS?

We’ve worked extensively with Linux, QNX, and Windows CE so here’s the answer in 100 words:

Linux offers the broadest support – you can use any hardware or software and benefit from the experience of those who have gone before.  Initiatives like the Yocto project tame the considerable complexity of Linux, which has rightly become the default choice for most embedded projects.

So when to consider QNX? High Availability is one advantage of QNX – it’s microkernel based, so doesn’t “crash” as such. There is real-time support out of the box. Cybersecurity compliance is built in as regulations like CRA mandate that commercial software must conform. Support for functional safety to the highest levels means that QNX is extensively used in many automotive, medical, robotics, and industrial applications.