TECHNOLOGY IN SYSTEMS
The Yocto Project: Corralling Linux for Embedded
The Yocto Project—Portability, Compatibility, Support
Adoption of the Yocto Project is the forward looking way to develop embedded Linux-based systems.
BY JON ALDAMA, ENEA
Page 1 of 1
For a number of years, Embedded Market Forecasters’ surveys have reported that acquisition cost and source code availability are main factors when choosing an OS for embedded systems. Hence, it is not surprising that Linux is the most widely used OS in embedded devices. Through source code access and collaboration, product developers have the best opportunity to achieve great productivity as well as software quality, thus focusing on creating highly differentiated and competitive products.
However, operating systems struggle to keep up with exponentially complex computer architectures. For the last decade, we have been facing a continuously increasing number of available CPUs based on MIPS, x86, PowerPC and ARM architectures, with respective 8-, 12-, 32- and 64-bit processor solutions. In addition to that, there is a high degree of flexibility that is required to deal with either constrained or purposely optimized embedded systems. And all of this together with the lack of standardization leaves embedded Linux developers with over 200 different Linux distributions to choose from with the added complexity of corresponding kernel versions, build systems and tools. Distributions focused on specific purposes lack the flexibility required to accomplish target footprint sizes and functionality needs, often requiring developers to manually “hack” existing distributions, or even roll their own. The result is increasingly complex Linux operating systems that became a nightmare to scale, port and maintain.
If this “embedded meal” does not seem succulent enough, add a Greek salad of software licenses (e.g., Google’s Linux-based mobile OS involves over twenty different licenses) with the corresponding license compliance issues and let your legal department deal with it. Visualize a confused team of platform developers sitting in a skyscraper’s top floor glass office discussing license incompatibilities with a group of lawyers. These involve “contamination” (as they refer to the copyleft effect), digital rights management risks, patent retaliation and other license compliance matters, as if they were speaking completely different languages.
All these issues represent a significant risk in getting an embedded solution to market, and the way to mitigate them is standardization. But this is nothing new. There have been a number of efforts to standardize embedded Linux since 1999, starting with the creation of the Embedded Linux Consortium. ELC’s efforts focused on a platform specification meant to define application programming environments for Linux-based embedded systems with a sound footing in industry-standard behavior. This work, known as ELCPS, was eventually transferred to the Open Source Development Labs (OSDL) in 2005, an organization that two years later would merge with the Free Standards Group and become the Linux Foundation. This last one is well known for being the biggest non-profit organization that supports the kernel development community, and for employing Linus Torvalds himself.
The Linux Foundation promotes, protects and standardizes Linux. And in order to spread collaborative Linux development to new fields, it also hosts a number of other projects. In 2010, as an attempt to reach out to the embedded world, the Linux Foundation kick-started the Yocto Project, which, after aligning itself with the OpenEmbedded community a year later, became what it is today: a collaborative universal starting point for creating custom Linux distributions.
The Yocto Project is basically an umbrella project where the open source community and industry come together to collaborate on a set of tools and best practices for developing custom Linux distributions for just about any embedded system out there. See the “Cooking Analogy” box on page 26. In practice, one just chooses a CPU architecture (supported are x86, PowerPC, ARM and MIPS), selects footprint size and builds a working Linux system, in little time. The development environment (Figure 1) provides a validated set of software applications and libraries that let you add and remove thousands of components to get exactly the features you needed. Additionally, it provides a set of custom application development tools specific to your cross-environment (including emulated ones), as well as integration with Eclipse plug-ins for debugging, profiling and even features like power consumption analysis.
The Yocto Project development environment.
It’s important to understand that Yocto is not an embedded Linux distribution; it helps you create your own. It does that by enabling a high degree of flexibility and customization while avoiding distribution-specific software policies that could ultimately interfere with product development. And this is particularly important when you are building Linux-based embedded products, since it is critical to have full control over the software running on your device.
The Yocto Project is the next step for embedded Linux. The Linux open source model has revolutionized the world. But now with Linux’ increasing dominance in the commercial world, it is becoming less about the open source model and more about the ability to quickly build, configure and rapidly deploy Linux. That’s why adopting the Yocto Project holds many benefits for companies. The most important one is being able to reuse your development efforts regardless of the hardware device you are working with. Yocto’s Board Support Package (BSP) layer maintains a high level of independence from the underlying architecture. This means that rebuilding your software stack across a wide range of software platforms is often as easy as changing one line in a configuration file. One can only guess at how much time and money this saves from organizations that need to port a solution to a new board.
The next benefit is particularly interesting for your company’s legal department. The Yocto Project has some skilled developers with legal understanding—the so called License Infrastructure Interest Group. This group works on making a license-aware build system, making it possible to include or remove software components based on specific license groups and the corresponding restriction levels (potential license propagation, etc.). It helps identify license incompatibilities such as the fact that the second version of the GNU Public License and the Apache License 2.0 are incompatible. It can even generate SPDX reports, which are basically a standardized way to make Free and Open Source Software (FOSS) inventories. So, if you are a lawyer working at a patent department of a company, and you have a couple of software licenses that keep you awake at night, you can just give a call to your integrator and share your particular license black list, so that packages released under the undesired licenses are not included in the resulting distribution.
The Yocto Project involves hundreds of developers around the world with a wide variety of members from huge corporations to small companies, and even individuals. Yocto has support from silicon vendors such as Intel, Freescale, Texas Instruments and Renesas as well as software operating system vendors such as Enea, Wind River, MontaVista and Mentor Graphics. The list goes on. Companies that normally compete with each other come together and cooperate in a symbiotic manner, helping make the project compatible with almost all popular processors available for embedded designs. But do not forget the fact that the Yocto Project is hosted by the Linux Foundation, which means that it remains independent from any particular company or vendor.
There is no doubt that the Yocto Project has improved and continues to improve platform development a great deal. Not surprisingly, a recent report from the Linux Foundation shows that collaborative practices are increasing exponentially. Open source projects are unquestionably paving the future for computing. The only weakness of the open source model is the lack of defined support. While software communities are often replete with helpful folks, the support provided is still on a best effort basis. This might not be good enough for companies dealing with tight production schedules or angry customers. The good news is that when you make a Yocto-based solution, it automatically shares the framework with OSV members that provide commercial distributions from the project. And thanks to the project’s high degree of portability, commercial support is within arm’s reach without forcing you to adapt to a completely different build system. The only thing you need to do is choose the OSV profile that is best suited for your solution.
The Swedish company, Enea, whose operating systems have dealt with the telecom industry for over 40 years, is a supporting member of the Yocto Project. Its commercial distribution, Enea Linux 4.0 (Figure 2), is the result of its involvement and collaboration, and is the key for providing commercial support. Enea Linux targets the networking and communication market segment and focuses on and has contributed to such real-time extensions as PREEMPT_RT, core isolation techniques and the so-called NOHZ patch. A recent contribution from Enea aims at taking the project one step further toward carrier grade level. The goal is to unify efforts in order to collaboratively provide Carrier Grade Linux (CGL) compliance for Yocto-based distributions. CGL is a set of specifications that detail standards of availability (“five-nines,” “six-nines”), scalability, manageability and service response characteristics for use within the telecommunications industry.
Enea Linux 4.0 product offering.