"The Yocto Project is an open source collaboration project that provides templates, tools and methods to help you create custom Linux-based systems for embedded and IOT products, regardless of the hardware architecture." (quoted from: About the Yocto Project).
OpenEmbedded is a build framework for embedded Linux. It is adopted as the Yocto build system and is co-maintained by the Yocto Project and the OpenEmbedded Project.
Often Toradex documentation refers to OpenEmbedded instead of Yocto. When using the developer website search, please search for both terms for a better result overview.
Toradex is a Yocto Project participant company that makes use of the main Yocto infrastructure - especially the OpenEmbedded build system - to provide production-quality BSP Layers for Yocto Project, which makes it simple to get started. You can leverage Toradex's Reference Images for Yocto Project as a base for developing your embedded Linux systems with the Yocto Project, or use TorizonCore which is a ready-to-use distribution maintained by Toradex and built on top of our BSP Layers.
Keep in mind that our Reference Images for Yocto Project are not ready for deployment in production environments, whereas TorizonCore is. You are discouraged from building your own version of TorizonCore unless you have a strong reason for doing it.
How to Build a Yocto / OpenEmbedded Image
The comprehensive Toradex guides to building a Yocto/OpenEmbedded embedded Linux image are:
- Build a Reference Image with Yocto Project for building from our Reference Images for Yocto Project.
- Custom meta layers, recipes and images in Yocto Project (hello-world examples) for integrating your application.
- Build TorizonCore With Yocto for building TorizonCore.
A summary of the steps to follow from configuration to deployment is provided below. Please see the technical articles above for the actual commands and exact steps you have to execute:
- Install the prerequisites. Make sure you install and configure git, and that proxy/firewall does not block access to any required URL.
- Download the required repositories using the Repo tool.
- Export the environment setup script
- Setup your machine, which tells OpenEmbedded for which Toradex computer on module you are building.
- Use bitbake to build the image. This takes a lot of time during the first build. For later builds, only the packages you customize will be re-built which makes it much faster.
- Deploy the resulting image to the computer on module.
Toradex has a Blog and Webinars pages where you can find content related to Yocto, aimed to help your embedded Linux development with Yocto Project. Check periodically for most up-to-date articles and if you would like to read a blog post that is not yet written, leave your feedback using the Feedback developer website button.
- The Yocto Project's Reference Distribution “Poky" on Toradex Hardware
- Cloud-Aided Yocto Build Speedup
- Patching Kernel in OpenEmbedded
- Building Custom Embedded Linux Distributions
- Embedded Linux Boot Time Optimization
- Getting Started with Yocto: Meeting the challenge of Embedded Linux deployment
- Part 1: Introduction - Building Embedded Linux Images with the Yocto Project
- Part 2: Advanced - Building Embedded Linux Images with the Yocto Project
- Webinar: Embedded Linux Boot Time Optimization
This section provides a follow-up to the introduction.
The Yocto Project provides infrastructure such as:
- OpenEmbedded core, a basic set of recipes to build the distribution (e.g. C-Library, Shell, Busybox).
- BitBake, a Python powered build engine that interprets the recipes and builds a root file system directly from sources.
- AutoBuilder, a continuous integration system to assure QA.
- Various BSPs, provided by the participants.
- Poky, a reference distribution that includes Sato, a GTK based reference user interface.
- CROPS, a containerized environment for Yocto builds.
There are other open-source components and tools which are developed under the umbrella of Yocto, see the Software: Components and Tools page of Yocto.
Toradex and Yocto Project Relationship
Toradex makes use of the main infrastructure of Yocto, namely:
- OpenEmbedded core and BitBake, our BSPs use the OpenEmbedded core recipes.
- AutoBuilder, we use AutoBuilder internally to build some of our BSPs.
- CROPS, we use CROPS internally to build some of our BSPs.
We provide our TorizonCore manifest and layers on https://github.com/toradex.
- toradex-manifest: the Repo manifest containing all layers used by TorizonCore.
- meta-toradex-torizon: the TorizonCore distro layer.
Toradex BSP Layers for Yocto Project
We provide our Toradex BSP Layers for Yocto Project as OpenEmbedded layers available at http://git.toradex.com.
- toradex-manifest: the Repo manifest containing all layers used by the Toradex BSP (in-house and third party ones), Reference Images for Yocto Project and TorizonCore. It is used to setup the OpenEmbedded build environment.
- meta-toradex-bsp-common: BSP layer common to all Toradex computer on modules.
- meta-toradex-demos: BSP layer that provides recipes used by our reference images, and the recipes of the images themselves.
- meta-toradex-distro: distribution layer that provides recipes used to build our reference images.
- meta-toradex-nxp: BSP layer that provides support for the computer on modules that use NXP SoCs.
- meta-toradex-tegra: BSP layer that provides support for the computer on modules that use NVIDIA Tegra SoCs.
From Toradex embedded Linux BSP 2.7, meta-toradex was split into several layers: meta-toradex-bsp-common, meta-toradex-demos, meta-toradex-nxp and meta-toradex-tegra.
Starting with BSP V3.0 we have used:
- A Poky-based distribution for our Toradex Reference Images for Yocto Project.
- A minimal distribution with OTA capabilities and a container engine for TorizonCore. TorizonCore and the Torizon ecosystem were created to provide a great out-of-the-box experience and an easy migration path for Windows CE users.
Up-to BSP 2.8 we opted to use the Yocto compatible Ångström distribution with an LXDE desktop environment.
Toradex also recommends to use Qt to build appealing user interfaces, which are possible to run with or without Desktop environment (see How to set up Qt Creator to cross-compile for embedded Linux). There are several options to use Qt on Toradex modules:
- As a container on TorizonCore. Toradex provides a Qt Debian Container for Torizon.
- From a custom Yocto image that integrates Qt to the Toradex BSP:
- One example is the Boot2Qt image, provided and maintained by The Qt Company. The binary image is hosted by Toradex in the Toradex Easy Installer feeds, for your convenience. Read Partner Demo Image - Qt for Device Creation for more information.
- Another example is to directly use our Toradex Reference Images for Yocto Project. Our Multimedia Reference Image already has Qt included.
With some configuration effort, it is also possible to use the Yocto reference distribution Sato, if preferred. Toradex does not provide any instructions for doing it, therefore if you plan to do it make sure that you have an advanced understanding of how to use Yocto.