[WIP] Yocto Project Characterization

[WIP] Yocto Project Characterization

Purpose

To characterize Yocto Project as a slimmed-down OS for its use on a Raspberry Pi as the Controls Display system.

Metrics

The major metrics being evaluated are:

  • Boot Time (BT)

  • Memory Footprint (MF)

  • Memory Footprint Under Load (MFUL)

How it Works

  • There are a few major components to creating builds with Yocto:

    • Yocto Project: provides tools, standards, and infrastructure for building custom Linux distributions for embedded devices; an umbrella initiative that integrates Poky, OpenEmbedded, BitBake, and supporting resources for a reproducible, scalable build process

    • OpenEmbedded Core: a set of tightly controlled recipes, classes, and files for building embedded Linux; part of OpenEmbedded, the foundational build system and metadata project from which Yocto originates

    • BitBake: the build engine and task scheduler at the heart of the Yocto Project, Poky, and OpenEmbedded

    • Poky: a reference build system and distribution used to construct embedded Linux images on the development host; an integration layer that bundles BitBake, OE-Core, meta-poky, meta-yocto-bsp, and tested documentation

  • OpenEmbedded Build System Workflow:

    1. Developers specify architecture, policies, patches and configuration details.

    2. The build system fetches and downloads the source code from the specified location. The build system supports standard methods such as tarballs or source code repositories systems such as Git.

    3. Once source code is downloaded, the build system extracts the sources into a local work area where patches are applied and common steps for configuring and compiling the software are run.

    4. The build system then installs the software into a temporary staging area where the binary package format you select (DEB, RPM, or IPK) is used to roll up the software.

    5. Different QA and sanity checks run throughout entire build process.

    6. After the binaries are created, the build system generates a binary package feed that is used to create the final root file image.

    7. The build system generates the file system image and a customized Extensible SDK (eSDK) for application development in parallel.

  •  

Useful Commands

  • For monitoring system processes:

    top/htop
  •  

Notes

  • There are several options for cross-compiling a full Linux system; Yocto, OpenWRT, and Buildroot are the three most common. These systems are generally hosted on a standard desktop Linux distribution and will cross-build a Linux system for your chosen target device.

  • What it is: an open source collaboration project that provides templates, tools, and methods to help you create custom Linux-based systems for embedded products regardless of the hardware architecture.

  • The Yocto workflow is different; it consists of running a full build on your development machine, the output of which is an image containing the entire target system.

References

  1. https://www.yoctoproject.org/development/technical-overview/

  2. https://www.embedded.com/why-the-yocto-project-for-my-iot-project/

  3. https://docs.yoctoproject.org/overview-manual/index.html

  4. https://docs.yoctoproject.org/brief-yoctoprojectqs/