What is Yocto?
The Yocto Project provides well-maintained and up-to-date layers that support a wide range of architectures, including ARM, MIPS, PowerPC, and x86/x86 64.
It is a collaborative open-source project that assists developers in creating customized Linux-based systems regardless of the hardware architecture.
The Yocto Project offers a flexible set of tools and space where developers worldwide can share technologies, software repositories, configurations, and recommended workflows that can be used to create Linux images customized for embedded Linux devices and IoT, or anywhere a personalized Linux operating system is required.
The Yocto Project is a dedicated open-source project for the embedded field. While other Linux software is built for servers and workstations and then possibly adapted for embedded use cases, the Yocto Project enables the construction of custom distributions for embedded devices. In a diverse market with heterogeneous requirements, the project aims to define a common denominator for embedded development, regardless of the underlying hardware architecture.
The Yocto Project has evolved and become one of the major communities under the Linux Foundation's collaborative open-source umbrella. It brings together industry leaders, implements recommended workflows for open-source code, and defines the characteristics of embedded system development and the product lifecycle using the tools it offers.
The project provides a standard for delivering hardware and software support, enabling software configuration and building swaps. The tools allow users to build and support personalizations for multiple hardware platforms and software stacks in a maintainable and incremental manner.
Historically, the project has grown and collaborates with the Open Embedded project, from which the build system and some of the metadata are derived.
Yocto Project Components
The Yocto Project integrates, maintains, and verifies three key development components:
- Integrated Toolset: Provides tools for successful work with embedded Linux, including tools for building and automated testing, processes for board support and license compatibility, and component information for customizing Linux-based embedded operating systems. It includes an embedded reference distribution known as Poky.
- OpenEmbedded Build System: Maintained in collaboration with the OpenEmbedded project, it incorporates numerous diverse open-source components within the Yocto Project framework.
- Poky: Poky, the embedded operating system, is essentially a functional Build Example that constructs a small embedded operating system with an integrated build system (BitBake, the build engine, and OpenEmbedded-Core, the core build metadata).
The build system works with Poky to create "recipes" and layers (as defined below). You can modify, copy, or use the Poky build specifics in any way needed to create a customized, embedded Linux.
Layer Model — Key to Customization
The Yocto Project employs a development model for creating embedded Linux that sets it apart from other simple build systems. This model is known as the Layer Model.
The Layer Model aims to support both collaboration and concurrent customization. Layers are repositories containing related sets of instructions that guide the build system on what to do. Users can collaborate, share, and modify layers. Layers can contain changes to instructions or previous definitions at any time.
This powerful abstraction capability allows you to tailor previous layers provided through collaboration or community efforts to match product requirements.
Utilize various layers to logically separate information on your system. For instance, you can have a BSP layer, a graphical user interface layer, a distribution configuration layer, an intermediate software layer, or an application layer. Place all the logic within each layer. The limitation of one layer and complexity implies future customization and recurring use. Isolating information into layers, on the other hand, simplifies future personalizations and facilitates reusability. Utilize BSP layers from silicon providers whenever possible.
Get acquainted with the Yocto Project's Layer Index. There's also the OpenEmbedded Layer Index, containing more layers, but with less universal verification.
Features of the Yocto Project
In addition to its inherent capabilities, the Yocto Project has project features presented in one edition, which are usually expanded and perfected over several editions. In-depth information about the features can be found in "readme" files associated with editions and tools. This area provides a high-level overview of feature updates for the last three editions and general project features.
Key Advantages of the Yocto Project
The project gathers infrastructure, recipes, and tools that are best-in-class for building distributions. This reduces duplication of effort, strengthens collaboration and recurring use between commercial and open-source communities. This leverages the advantages of other open-source projects, such as OpenEmbedded and Eclipse.
The Yocto Project is an open-source project aiming to create tools and processes that enable the creation of Linux distributions for embedded products not dependent on the underlying hardware architecture.
The Yocto Project provides tools, metadata, and processes that allow rapid, customizable deployment of embedded Linux systems, enabling personalization of every aspect of the development process.
Furthermore, it provides the ability to create a toolchain for cross compilation and a software development kit (SDK) that allows the development of:
- User Space Applications
- Kernel Space Modules and Device Drivers
- Boot Loaders
This course teaches how to use open-source tools under the Yocto Project to create a personalized Linux operating system. The course will include integrated use of working on a virtual machine (using QEMU) and working with a Cotrex-A-based development board.
Who is the Yocto course for
The Yocto course is suitable for:
- Software Engineers, developers, and programmers who want to learn embedded system development under a Linux operating system.
- Embedded bare-board engineers who wish to learn how to develop device drivers under a Linux operating system.
- Hardware, software, and computer science engineers who seek practical knowledge in the world of Linux kernel.
Yocto Course Description
The Yocto programming course is a hands-on course that includes frontal lectures and practical exercises.
The course includes:
- Learning Yocto Linux
- Class exercises accompanied by explanations, homework assignments, and solutions on the course website
- Course handbook
- Videos and presentations on the course website
- Utilization of development boards for working with Yocto Linux
Upon completing the course, each student will carry out a practical project that summarizes the knowledge acquired during the course.
Lectures are held once a week in the evening or morning hours.