Have you heard about the Yocto Project? Even if you use Linux or write applications for Linux you may not know about it. It is essentially tools for making tools. In this case, it is for making Linux to run on that custom piece of hardware you just designed so you can write the software to make it work.
The Yocto Project is an open source endeavor that is supported by a wide range of commercial vendors. This means you can roll your own, on your own, or get the tools as part of a supported commercial package. The tools have been used with popular open source hardware like the BeagleBone Black (see Interview: Jason Kridner Discusses The BeagleBone Black). The tools include packages like BitBake that has a graphica front end, HOB (Fig. 1), for building a custom Linux image.
To get a better handle on the Yocto Project I talked with Mike Woster, COO and Vice President at The Linux Foundation. The Linux Foundation supports the Yacto Project. You can also check out an animated video they did (watch Introducing the Yocto Project).
Wong: What is the Yocto Project?
Woster: The Yocto Project provides open source, high quality templates, tools and methods to help anyone create custom Linux-based systems for embedded products regardless of hardware architecture. Besides its product, the Yocto Project is a vibrant ecosystem of corporate and individual contributors as well as other supporting open source projects that provide compliant hardware and software solutions.
- Practical Advice on Running uClinux on Cortex-M3/M4 7
- Interview: Jason Kridner Discusses The BeagleBone Black
- Accelerate Embedded Development With Lua
- Interview: Joel Hoffmann Discusses Infotainment And The GENIVI Alliance
Wong: How is it associated with The Linux Foundation?
Woster: The Yocto Project is a Linux Foundation Collaborative Project. Linux Foundation Collaborative Projects are independently funded software projects that harness the power of collaborative development to fuel innovation across industries and ecosystems. We provide the essential infrastructure, guidance and services needed to support a project, while participants can focus on innovation and results.
Wong: Does the Yocto Project target BSP developers, embedded developers or application developers?
Woster: The Yocto Project is useful and targets all of these folks.
Woster: Embedded system developers who are tasked with building a Linux operating system stack will find with the Yocto Project all of the necessary tools to create a custom Linux distribution for their target device.
Board Support Package (BSP) developers appreciate the Yocto Project providing a standardized platform for BSPs. That alleviates them from having to adapt their BSPs to different cross-development toolchains and build system environments. Consequently, for SoC vendors the Yocto Project has become the de-facto standard for SoC companies to support their BSPs, spanning all four major architecture families.
For application developers the Yocto Project builds an Application Development Toolkit (ADT) that includes a cross-development toolchain and root file systems for hardware and emulated targets. Together with the available plugin for the popular Eclipse IDE, the ADT provides a powerful roundtrip application development experience with remote target debugging and performance profiling from within a single developer’s workbench.
Wong: What are the basic technologies and tools being provided by the project?
Woster: The Yocto Project is a collection of multiple open source projects that are hosted and actively developed under one umbrella (Fig. 2).
The most prominent representative from this family is the Poky Build System, which is a self-contained build environment that creates custom Linux distributions all the way from source code to kernel and root file system images that boot on actual hardware as well as inside emulators. Poky includes multiple “blueprints” for creating Linux operating system stacks. These blueprints allow system engineers to quickly ramp up building their own custom stacks by modifying and extending them.
Other technologies maintained by the Yocto project include:
- BitBake - the build engine behind Poky
- OpenEmbedded Core - common recipes and BitBake classes shared between the Yocto Project and OpenEmbedded
- Autobuilder - a QA automation environment built on BuildBot
- EGLIBC - the embedded version of the GNU C Library
- HOB - a graphical user interface for BitBake
- Application Development Toolkit (ADT) - a development environment for user space applications to run on OS stacks built by Poky
- Eclipse IDE Plugin - integration of ADT with the Eclipse IDE
- Matchbox - an X Windows based graphical reference UI for embedded devices
- Build Appliance - a virtual machine image to try out the Yocto Project
- Swabber and Pseudo - tools for cross-developments which are integrated with Poky
Wong: Basically, how would I use the tools?
Woster: Anyone can start using these tools right now to build custom Linux-based embedded Linux products. You can participate in the community and/or download the tools at Yacto Project website. The easiest way is to download the build appliance and launch it in a virtual machine environment. That does not require the installation of any software on the test system. The test system does not even have to be a Linux system. Another option is to download the current Poky release right away, use the quickstart manual and build your first custom Linux distro on your Linux build host.
Wong: What is a time limited kernel?
Woster: A Yocto Project-compliant BSP contains reference binary kernel and root file system images built with the Yocto Project for the hardware supported by the BSP. Engineers can use those images to quickly bring up their hardware and it provides them with a reference for their own system images.
The binary kernel images contained in the BSPs provided by Intel for their embedded hardware and evaluation boards have a built-in 10-day timer that will reboot the kernel after it has been running for that period of time. That makes these kernel images unsuitable for embedded devices. Intel wants to encourage engineers to use the Yocto Project to build their own Linux system with the Yocto Project and the BSP rather than relying on the provided reference binaries. Intel is currently the only silicon vendor using this practice.
Wong: How does the Yocto Project fit with respect to embedded developers?
Woster: The Yocto Project is an embedded developer’s dream, because it brings together the elements needed to make the normally difficult embedded Linux development process a lot easier. Also, because of the alignment with the OpenEmbedded community, developers have access to an integrated, common build framework for embedded Linux.
Wong: What about commercial support?
Woster: A variety of companies support Yocto Project and commercial support for embedded Linux distributions and systems built using the project are available from a number of embedded Linux vendors. You can see who is supporting the project today at the Yacto Project Ecosystem page.
Wong: If I am looking for commercial support, what should I be asking for?
Woster: Operating System Vendors (OSVs) and ISVs are providing commercial support for their build environments, distributions, BSPs and other components that are based on the Yocto Project. Software consultancies provide services to help companies getting started with the Yocto Project for their embedded projects.
What should you ask for? Carefully interview the provider on their expertise with consideration of the targets for your embedded project. For instance: processor architecture, specific SoCs, graphical subsystems and UI, network connectivity, etc.
Wong: How can the Yocto Project technology be incorporated into a product for developers?
Woster: Several companies are integrating the Yocto Project, or more specifically one or more projects from the Yocto Project family, into their commercial offerings such as developer workbenches. They also extend the Yocto Project with their own tools for embedded software development. The Yocto Project Compliance Program provides guidelines on how to accomplish this.
Benefits for organizations participating in the Yocto Project Compliance Program include strong recognition by the Yocto Project ecosystem, market relevance and competitive advantages through interoperability. Benefits for companies utilizing Yocto Project-compliant components include a potential reduction on R&D costs and and shorter time-to-market.