The Yocto Project Accelerating Embedded Product Development
Total Page:16
File Type:pdf, Size:1020Kb
Introduction to the Yocto Project Accelerating Embedded Product Development Rudolf J Streif [ yoc-to ] The smallest unit of measure, equal to one septillionth (10-24). The Yocto Project Ecosystem What it is, who we are, and why you should care... 3/64 © 2015 The Yocto Project The Yocto Project is not an Embedded Linux Distribution. It creates a custom one for You! The Yocto Project is not Single Open Source Project. It is an Ecosystem. The Yocto Project combines the convenience of a ready-to-run Linux Distribution with the flexibility of a custom Linux operating system stack. 4/61 © 2015 The Yocto Project Embedded Linux – Why is it Challenging? • DIY/Roll-Your-Own or Modify Mainstream Distro • Long Term Maintenance is difficult • Upstream Changes are difficult to track • Not embedded friendly • Licensing issues • No commercial embedded support • Build System and Cross Toolchain Challenges • Commercial/Community Embedded Linux • Too many competing systems • Incompatible distributions/build systems Developers spend lots of time porting or making build systems Leaves less time and resources to develop value- adding software features 5/61 © 2015 The Yocto Project Embedded Linux Landscape (1) Android – http://source.android.com ● Great for systems with ARM-based SoCs and touch screens ● Build system and development tools Ångström Distribution – http://www.angstrom-distribution.org ● Community distribution with a growing list of supported development boards ● Yocto Project build environment ● Online builder Narcissus Buildroot – http://buildroot.uclibc.org ● GNU make-based build system ● uClibc target library ● BusyBox command line utility applications Baserock – http://wiki.baserock.org ● Targeted for embedded appliances ● Native Builds for x86, x86_64, ARMv7 6/61 © 2015 The Yocto Project Embedded Linux Landscape (2) OpenEmbedded – http://www.openembedded.org ● Created by merging OpenZaurus with contributions from Familiar Linux, OpenSIMPad ● Based on BitBake build engine OpenWrt – http://www.openwrt.org ● Debuted as open source OS for embedded devices routing network traffic ● Originally created from Linksys GPL sources for their WRT54G residential gateway ● Buildroot-based build environment ● Headless operation with web UI The Yocto Project – http://www.yoctoproject.org ● Details to follow Commercial Distributions ● Various solutions from different vendors for different applications ● Commercial support for toolchain and operating system stack 7/61 © 2015 The Yocto Project What is the Yocto Project? • Open source project with a strong community • A collection of embedded projects and tooling • Place for Industry to publish BSPs • Application Development Tools including Eclipse plug-ins and emulators • Key project is the reference distribution build environment (Poky) • Complete Build System for Linux OS • Releases every 6 months with latest (but stable) kernel (LTSI), toolchain, and package versions • Full documentation representative of a consistent system It’s not an embedded Linux distribution – it creates a custom one for you 8/61 © 20152013 The YoctoLinux Foundation.Project All rights reserved What the Yocto Project Provides • The industry needed a common build system and core technology • Bitbake and OpenEmbedded build system • The benefit of doing so is: • Designed for the long term • Designed for embedded • Transparent Upstream changes • Vibrant Developer Community • Less time spent on things which don’t make money (build system, core Linux components) • More time spent on things which do make money (app development, product development, …) © 2015 The Yocto Project Who is the Yocto Project? • Advisory Board and Technical Leadership • Organized under the Linux Foundation • Individual Developers • Embedded Hardware Companies • Semiconductor Manufacturers • Embedded Operating System Vendors • OpenEmbedded / LTSI Community Member Organizations Supporting Organizations http://www.yoctoproject.org/ecosystem 10/61 © 2015 The Yocto Project Why Should a Developer Care? (1) • Build a complete Linux system –from source– in about an hour (about 90 minutes with X) • Multiple cores (i.e. quad i7) • Lots of RAM (i.e. 16 GB of ram or more) • Fast disk (RAID, SSD, etc…) • Start with a validated collection of software (toolchain, kernel, user space) • Blueprints to get you started quickly and that you can customize for your own needs • We distinguish app developers from system developers and we support both • Access to a great collection of app developer tools (performance, debug, power analysis, Eclipse) 11/61 © 2015 The Yocto Project Why Should a Developer Care? (2) • Supports all major embedded architectures • x86, x86-64, ARM, PPC, MIPS • Coming soon, MIPS64 and ARM Arch 64 • Advanced kernel development tools • Layer model encourages modular development, reuse, and easy customizations • Compatibility program that is used to encourage interoperability and best practices 12/61 © 2015 The Yocto Project Yocto Project Provides Embedded Tools, Best Practices, and Reference Implementation Build System Upstream Components Poky Build Output Yocto Project Components Upstream Projects 13/61 © 2015 The Yocto Project The Yocto Project Family • Poky – Yocto Project Reference Build System • BitBake – Build Engine • Hob – Graphical User Interface for BitBake • OpenEmbedded Core – Shared Base Layer of Recipes and Classes • Application Development Toolkit (ADT) – Development environment for user-space applications to run on OS stacks built by Poky • Eclipse IDE Plugin – Integration of ADT into the Eclipse IDE • EGLIBC – Embedded variant of the GNU C Library • Matchbox – X Windows-based open source graphical UI for embedded devices • Autobuilder – Automation for Yocto Project build tests and QA • Build Appliance – Virtual machine image to try out the Yocto Project and Poky • Pseudo – System administrator simulation environment • Swabber – Host leakage detection tool 14/61 © 2015 The Yocto Project Yocto Project and OpenEmbedded OpenEmbedded ● Created by merging the work of the OpenZaurus project with contributions from other projects such as Familiar Linux and OpenSIMpad into a common code base ● Community project focusing on broad hardware and architectures ● Large library of recipes to cross-compile over 1000 packages ● Switched from flat meta-data architecture (OpenEmbedded Classic), to layered architecture based on OpenEmbedded Core layer, which is in common with the Yocto Project and the Angstrom Distribution Yocto Project ● Family of projects for developing Linux-based devices ● Self-contained build environment providing tools and blueprints for building Linux OS stacks ● Supported by silicon vendors, OSVs (also providing commercial support), open source projects for hardware and software, electronics companies ● Standardized components with compliance program ● Focused on tooling and maintenance with two major releases every 6 months 15/61 © 2015 The Yocto Project Why not just use OpenEmbedded? • OpenEmbedded is an Open Source Project providing a Build Framework for Embedded Linux Systems • Not a reference distribution • Designed to be the foundation for others • Cutting-edge technologies and software packages • The Yocto Project is focused on enabling Commercial Product Development • Provides a reference distribution policy and root file system blueprints • Co-maintains OpenEmbedded components and improves their quality • Provides additional tooling such as Autobuilder and QA Tests • Provides tools for application development such as ADT and Eclipse Plugin 16/61 © 2015 The Yocto Project The Yocto Project Ecosystem Product Showcase ● Hardware Platforms ● Distributions – Open Source and Commercial ● Projects – Open Source Project using the Yocto Project Participants ● Organizations who participate in the Yocto Project Compliance Program ● They also support the project through contributions and engineering resources Member Organizations ● Organizations who provide the administrative leadership of the Yocto Project ● Their support includes membership dues for infrastructure etc. and engineering resources ● Members of the Yocto Project Advisory Board Supporting Organizations ● Organizations who support the Yocto Project through contributions, product development, etc. 17/61 © 2015 The Yocto Project Yocto Project Branding and Compliance Program Goals ● Strengthen the Yocto Project through a consistent branding. ● Provide recognition to participating organizations. ● Reduce fragmentation in the embedded Linux market by encouraging collaborative development of a common set of tools, standards, and practices and ensure that these tools, standards, and practices are architecturally independent as much as possible. Yocto Project Participant ● Organizations and entities who use and support the Yocto Project publicly. ● Open to open source projects, non-profit organizations, small companies, and Yocto Project member organizations. Yocto Project Compatible ● Products, BSPs, OpenEmbedded-compatible layers and other open source software projects that are built and work with the Yocto Project. ● These products and components must be submitted by open source projects, non-profit entities, or Yocto Project member organizations. 18/61 © 2015 The Yocto Project The Yocto Project Community 19/61 © 2015 The Yocto Project Getting Started All you need to know to get your feet wet and a little beyond... 20/64 © 2015 The Yocto Project Quick Start 1. Go to http://yoctoproject.org click “Documentation” and read the Quick Start guide 2. Set up your Linux build system with