Yocto Project: Changing the Linux Embedded World

Domarys Correa
O.S. Systems
Published in
4 min readApr 12, 2021

This is the first article of a series about the Yocto Project, which will cover the Yocto Project definitions, how it works, how to use it, and finally a use case.

In this first article of the series, we’ll explain how the Yocto Project started and a little bit of the synergy between OpenEmbedded and the Yocto Project.

What is the Yocto Project?

First, we should recall that the operating system is a fundamental part, responsible for resource management such as memory, IO, and CPU time.

Different machines and devices have different needs, and we can see this in the variety of operating systems available like Windows, iOS, UNIX, and all Linux flavors. The choice is made according to the intended use case of each machine.

But what to do in the case of small-size machines, with specific applications and limited resources?

In IoT and Embedded businesses, devices handle specific tasks, and most of the time, the role of each one is very different from the other. To machines like these, a custom operating system is a better answer. Coding an operational system is very hard and slow. The options are: to use a generic operating system not so tailored or use a tool that helps us build a custom-made operating system. And here comes the Yocto Project.

The Yocto Project is an open-source collaboration project that provides templates, tools, and methods to create a custom Linux-based system for embedded products regardless of the architecture. It was founded in 2010 as a collaboration among many hardware manufacturers, open-source operating system vendors, and electronics companies.

Do you need more assurance? The Yocto Project is maintained and supported by devs with high skills and is managed by a workgroup of Linux Foundation. Moreover, this group even counts with silicon manufacturers, software vendors, and the other devs and users of open projects. Its importance is so big that various companies keep teams to support the tool, such as Freescale, Intel, Texas Instruments, Renesas, Enea, Wind River, MontaVista, Mentor Graphics, and of course our team at O.S.Systems. =)

Briefly, the Yocto Project is an umbrella project which provides the infrastructure and manages the resources provided by its members. But what about the history behind the Yocto Project?

A bit of history

Knowing the history behind Yocto Project development is important to understand the endeavor put on it, to make it a great and reliable tool.

Looking closer, the Yocto project was structured on top of the build system used by OpenEmbedded Project, but much more improved. The OpenEmbedded build system is composed of a task scheduler (BitBake) and a set of metadata, including a software collection and BSP packages.

In short, OpenEmbedded Project and Yocto Project bring together the best of both.

OpenEmbedded is a build automation framework and cross-build environment.

Like Yocto Project, its focus is the creation of Linux systems for embedded devices. At this time, its fast and uncoordinated growth turned it unstable to be used in some products. That was the great motivation to create the Poky build system, nowadays used internally by Yocto Project, and one of its most important parts.

Poky offered a more polished, useful, and stable codebase, but with a limited set of supported BSPs. But thanks to its qualities, such as its reduced size, the comfort of extensible metadata, and the reliable task scheduler, the project stood out. Since then, many developers have started to add support like IDE plugins and QEMU integration, turning the project into a success.

The Yocto Project and the OpenEmbedded Project consolidated their efforts in a central construction system called OpenEmbedded-Core, generally known as OE-Core. OpenEmbedded-Core emphasizes and increases the reuse of components, metadata, and submodules to form a central and common build system among all the different derivatives of OpenEmbedded.

The Poky build system has also been revamped to use OpenEmbedded-Core. BSPs support and extra configurations have been moved to a set of Yocto Project’s specific submodules metadata. This rework facilitated the collaboration between the OpenEmbedded Project and the Yocto Project, reducing the work duplication.

The OpenEmbedded Project and the Yocto Project share the maintenance of the OpenEmbedded-Core, promoting a central construction system aimed at the community, allowing the active interaction of companies through the Yocto Project contributors and members of the Advisory Board.

If you want to read more …

The best way to know the Yocto Project better is by digging it. To do that, the project offers a big and completed documentation, besides tutorials learning how to add it to your board. So a good tip is to search on website documentation.

Besides the official documentation, the recipes (the code that adds support, capacity, and more) are constantly updated by the community, so the best way to keep yourself inside the news is to follow the mailing lists.

We also published a tutorial on how to add UpdateHub in an RPI3. The UpdateHub is a full firmware update tool, and its integration is made with the Yocto Project. It’s a good way to see how the Yocto Project works.

In case of doubts, the forums are always available to those who need a hand.

The next article covers how Yocto Project works in detail and explain the essential flow of the Yocto Project building.

Take a look there.

--

--

Domarys Correa
O.S. Systems

I am a computer scientist, a geek, rock music fan, terror games and movies addict, chocolate lover and the crazy cat lady.