What is it?
Alongside the Linux Foundation, the OpenEmbedded project and its OECore are also part of the workgroup and the Yocto technology offering.
The current Yocto Project release is tagged 1.2.1. A new release is due in October 2012.
What were the motivations?
The project was set up in response to fragmentation of the embedded linux market and customers’ resulting concerns over the time and difficulty consequently involved in realizing custom projects.
In addition, customers increasingly want to be able to re-use images and distributions (or subsets of them) across multiple projects and hardware platform.
The Yocto Project is therefore intended to support projects targeting the x86, PowerPC, ARM and MIPS architectures, and others according to the so-called ‘board support packages’ that are made available either openly by Yocto itself or through commercial partners.
It is not intended to be a Linux distribution in itself. Rather, the Yocto Project brings together tools, reference designs and templates, methodologies, documentation, support infrastructure and other fundamental technologies and services that allow companies to build their own distributions as quickly as possible.
What is the overriding philosophy?
The Yocto Project takes a modular approach to resolving the complexities and other time-consuming obstacles faced by custom embedded Linux developers.
The key idea running through its technologies is that of ‘layers’. These can vary in complexity from being a number of ‘recipes’ collected together in a single block to achieve a particular box or the more simple – sometimes one-line expression – of the target silicon in a ‘board support package’ (BSP).
The BSP offers a good idea of the simplicity that Yocto is seeking. Previously developers usually had to undertake large scale rewrites and recompiles of legacy embedded products when moving them from, say, the x86 to the ARM hardware platform. The idea behind Yocto is that the transition could be as simple as one line of code inserted in the build, and the BSP and other tools will do everything else.
The recipes are maintained in the project’s online code repository – git.yoctoproject.org – as are a number of preformatted layers, such as the currently open source BSPs (some of these are also provided by commercial vendors).
What is Poky?
Poky is the Yocto Project build tool, and was itself originally the result of the efforts of another Linux Foundation workgroup.
As such, it facilitates the creation of the kernel, system and application software for the target custom image.
Maintaining the simplicity theme of the project, the idea is that anyone familiar with the basics of Linux compilation should be comfortable with Poky.
Poky has two main elements:
BitBake executes and manages all the build steps.
Metadata describes what gets built and how it is built. There are three main subsets:
- Configuration (.conf) files provide global definitions (i.e., the machine architecture) and standard defaults for the project.
- Class (.bbclass) files do most of the hard work in that they define how a kernel is built, handing the encapsulation and inheritance of build logic, packaging and so on.
- Recipe (.bb) files define the individual pieces of software that will be included within your final image.
Viewing one of the various tutorials based around how Poky (and how some open sources and commercial plug-ins) simplifies image development is a good way to understand The Yocto Project. As an inherently ‘practical’ approach to embedded system development, it is most clearly understood via demonstrations.
Intel’s Scott Garman provides an excellent introduction here (this tutorial can also be downloaded via Vimeo and viewed offline).
Mentor Graphics Chris Hallinan gives a thorough overview both of Poky functionality and how it dovetails into his company’s embedded Linux platform here, in a good example of where the open source and commercial aspects of the Yocto Project meet.
Further introductory and more advanced manuals are available here.
The Yocto Project has launched a Compliance Program that defines a minimum level of standardization and is denoted by a ‘Yocto Project Compatible’ label within the branding of a qualifying product.
Enea, Mentor Graphics and Wind River are among the first companies to be Yocto Project compliant.
Roadmap for embedded consumer electronics
In September 2012, the Yocto Project aligned its roadmap with that of the Long Term Support Initiative operated by the Linux Foundation’s separate workgroup on consumer electronics.
LTSI supports both an annual release of a Linux kernel aligned with the lifespan of consumer electronics products and regular updates of those releases for two years.
October 2012’s Yocto Project release will include support for the Linux 3.4 kernel release, the basis for the next LTSI kernel release. The subsequent Yocto Project v1.4 release, tentatively scheduled for the first half of 2013, will support the LTSI 3.4 kernel, as well as the most recently released mainline Linux kernel version.
Subsequent releases of the Yocto Project will maintain this regular cadence of supplying recipes for both the most recently released mainline Linux kernel and the most recently released LTSI kernel.