Developing Embedded Linux Devices Using the Yocto Project



Similar documents
Developing Embedded Linux Devices Using the Yocto Project

Creating a Custom Embedded Linux* OS for Any Embedded Device using the Yocto Project*

Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab

Yocto Project ADT, Eclipse plug-in and Developer Tools

Developing applications on Yocto. Lianhao Lu Intel Corporation Feb. 29th, 2012

Create a Custom Embedded Linux Distribu3on for Any Embedded Device Using the Yocto Project

IOTIVITY AND EMBEDDED LINUX SUPPORT. Kishen Maloor Intel Open Source Technology Center

Linux Foundation Automotive Summit - Yokohama, Japan

MontaVista Linux 6. Streamlining the Embedded Linux Development Process

Advanced Customizations

The Yocto Project Eclipse plug-in: An Effective IDE Environment for Embedded Application and System Developers

Building Embedded Systems

Create a Custom Embedded Linux Distribu3on for Any Embedded Device Using the Yocto Project

Embedded Linux development with Buildroot training 3-day session

Using Intel C++ Compiler in Eclipse* for Embedded Linux* targets

Five standard procedures for building the android system. Figure1. Procedures for building android embedded systems

OpenEmbedded for medical devices

EXPLORING LINUX KERNEL: THE EASY WAY!

opensuse.org Build Service

Andreas Burghart 6 October 2014 v1.0

A Smart Way to Manage Packages in Yocto Project

Running a Program on an AVD

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

Yocto Project Experience: Continuous Integration

Embedded Linux Platform Developer

How To Develop Android On Your Computer Or Tablet Or Phone

Università Degli Studi di Parma. Distributed Systems Group. Android Development. Lecture 1 Android SDK & Development Environment. Marco Picone

Continuous Integration. CSC 440: Software Engineering Slide #1

WIND RIVER LINUX 6 TABLE OF CONTENTS INNOVATORS START HERE.

Using Toaster in a Production Environment

Software Tools Bootcamp

Jukka Kokko SOFTWARE BUILD AND RELEASE MANAGEMENT FOR A WIRELESS PRODUCT WITH OPEN SOURCE TOOLS

Site Configuration SETUP GUIDE. Windows Hosts Single Workstation Installation. May08. May 08

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

Embedded Linux development training 4 days session

Version Control. Version Control

Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v Steps to Developing a QNX Program Quickstart Guide

Android: How To. Thanks. Aman Nijhawan

Reminders. Lab opens from today. Many students want to use the extra I/O pins on

ESX 4 Patch Management Guide ESX 4.0

Building, testing and deploying mobile apps with Jenkins & friends

Version Control with. Ben Morgan

10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition

The BackTrack Successor

Eddy Integrated Development Environment, LemonIDE for Embedded Software System Development

RISC-V Software Ecosystem. Andrew Waterman UC Berkeley

Using Git for Project Management with µvision

Using Red Hat Network Satellite Server to Manage Dell PowerEdge Servers

1. Overview of Nios II Embedded Development

ADT Plugin for Eclipse

Building graphic-rich and better performing native applications. Pro. Android C++ with the NDK. Onur Cinar

Android Programming and Security

Android Development. Lecture AD 0 Android SDK & Development Environment. Università degli Studi di Parma. Mobile Application Development

MontaVista Linux 6. Technical brief. Table of Contents» MontaVista Linux 6: The New approach to Embedded

RAPID EMBEDDED LINUX* DEVELOPMENT

Linux Distributions. What they are, how they work, which one to choose Avi Alkalay

How To Manage Source Code With Git

Lab 0 (Setting up your Development Environment) Week 1

Developing tests for the KVM autotest framework

CSE 374 Programming Concepts & Tools. Laura Campbell (Thanks to Hal Perkins) Winter 2014 Lecture 16 Version control and svn

How To Run A Hello World On Android (Jdk) On A Microsoft Ds.Io (Windows) Or Android Or Android On A Pc Or Android 4 (

1. Overview of Nios II Embedded Development

Professional Xen Visualization

"EZHACK" POPULAR SMART TV DONGLE REMOTE CODE EXECUTION

Windows Template Creation Guide. How to build your own Windows VM templates for deployment in Cloudturk.

The Kali Linux Dojo - Rolling Your Own ISOs

Server Monitoring. AppDynamics Pro Documentation. Version Page 1

Software Development Processes For Embedded Development A checklist for efficient development using open-source tools

Git Fusion Guide August 2015 Update

Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)

Content. Development Tools 2(63)

Citrix XenServer 5.6 OpenSource Xen 2.6 on RHEL 5 OpenSource Xen 3.2 on Debian 5.0(Lenny)

Migrating to ESXi: How To

ML310 Creating a VxWorks BSP and System Image for the Base XPS Design

ERIKA Enterprise pre-built Virtual Machine

What else can you do with Android? Inside Android. Chris Simmonds. Embedded Linux Conference Europe Copyright 2010, 2net Limited.

Android Environment SDK

Hello World. by Elliot Khazon

SIM900 Eclipse environment install Application Note_V1.00

VM Application Debugging via JTAG: Android TRACE32 JTAG Debug Bridge ADB Architecture Stop-Mode implications for ADB JTAG Transport Outlook

Using Chroot to Bring Linux Applications to Android

The QEMU/KVM Hypervisor

Example of Standard API

Islamic University of Gaza. Faculty of Engineering. Computer Engineering Department. Mobile Computing ECOM Eng. Wafaa Audah.

How Bigtop Leveraged Docker for Build Automation and One-Click Hadoop Provisioning

Introduction to Android Development. Jeff Avery CS349, Mar 2013

CSE 265: System and Network Administration

TIBCO ActiveMatrix BusinessWorks Plug-in for TIBCO Managed File Transfer Software Installation

Buildroot Workshop. Libre Software Meeting Thomas Petazzoni Free Electrons

TUT19344 Managing RH/CentOS with SUSE Manager

CDH installation & Application Test Report

Using Buildroot for real projects

Module 11 Setting up Customization Environment

Version Control with Git. Dylan Nugent

IBM Endpoint Manager Version 9.2. Patch Management for SUSE Linux Enterprise User's Guide

Managing your Red Hat Enterprise Linux guests with RHN Satellite

Transcription:

It s not an embedded Linux distribution It creates a custom one for you. Developing Embedded Linux Devices Using the Yocto Project David Stewart Intel Corporation October, 2011

Agenda What is the Yocto Project (YP)? and what s new How does it work? How to get started with building OS, apps, and debugging What s Next? Q&A 2/25

What is the Yocto Project? The Story Linux is becoming increasingly popular for Embedded Non-commercial and commercial embedded Linux has many distros Result is: Developers spend lots of time porting or making build systems Leaves less time/money to develop interesting software features The industry needs a common build system and core technology Industry leaders have joined together to form the Yocto Project The benefit of doing so is: Less time spent on things which don t add value (build system, core Linux components) Linux grows more in embedded 3

What is the Yocto Project? Distribution build environment and tools for embedded Supports ARM, PPC, MIPS, x86 (32 & 64 bit) Open source project with a strong community Content Complete Linux OS with package metadata Releases every 6 months with latest (but stable) kernel, toolchain, and package versions Place for Industry to publish BSPs App Dev Tools which allow development against the stack, including Eclipse plug-ins and emulators Full documentation representative of a consistent system It s not an embedded Linux distribution it creates a custom one for you

Why Should a Developer Care? Build a complete Linux system in about an hour from sources (about 90 minutes with X). Start with a validated collection of packages (toolchain, kernel, user space). Access to a great collection of app developer tools (performance, debug, power analysis, Eclipse). We distinguish app developers system developers and we support both. Manage patches with included kernel development tools. Supports all major embedded architectures (x86, x86-64, ARM, PPC, MIPS), just change a line in a config file and rebuild. Easy path to a commercial embedded Linux (Mentor Graphics, Montavista, Timesys, Wind River).

What s new in Yocto v1.1 Hob graphical interface for selecting options and packages and doing a build Multilib mix and match 32 and 64 bit binaries on the target Pick the architecture on a per package basis https://wiki.yoctoproject.org/wiki/multilib for more Initial x32 support X86-64 systems running 64 bit registers and 32 bit data types see meta-x32 repository System builder tasks now in Eclipse

How Does It Work? Quick Start 1. Go to http://yoctoproject.org, click documentation and consult the Quick Start guide 2. Set up your Linux system with the right packages (and firewall access, if needed) 3. Click Download and download the latest stable release (or check out bernard from the git repo) 4. Edit conf/local.conf and set MACHINE, BB_NUMBER_THREADS and PARALLEL_MAKE 5. Source oe-init-build-env script 6. Run $ bitbake k core-image-sato 7. Run $ runqemu qemux86 (if MACHINE=qemux86) Note: File or command names in this presentation are subject to change, several are different now in master.

YP = Poky + Upstreams + Tools Poky OpenEmbedded-Core Bitbake Build system upstream components Yocto Documentation Meta-Yocto Reference Images Poky Upstream Software Projects Reference BSP Metadata (one per arch) ADT Tools (Eclipse Plugin) Pseudo Prebuilt Build State Software Releases ADT Components Yocto Project components Yocto Project Swabber Yocto Project Output Embedded Kernel Tools YP provides best of upstream for a stable base

How Does It Work? More Depth Look here for links to slides and video tutorials! More info: http://bit.ly/it9rkb

How Does it Work? Configuration Configuration (*.conf) global definition of variables build/conf/local.conf (local user-defined variables) distro/poky.conf (Yocto policy config variables) machine/routerstationpro.conf (machine-specific variables)

How Does It Work? Configuration User configuration: conf/local.conf some things to set: Set BB_NUMBER_THREADS and PARALLEL_MAKE, based on the number of threads in the machine Set MACHINE= foo for the CPU architecture EXTRA_IMAGE_FEATURES adds features (groups of packages) INCOMPATIBLE_LICENSE = GPLv3 eliminates packages using this license (for example)

How Does It Work? Metadata Metadata and patches: Recipes for building packages Eg, meta/recipescore/coreutils/coreutils_6.9.bb builds the core utilities (version 6.9) and installs them meta-recipes-core/coreutils/coreutils-6.9/ includes patches, also could include extra files to install

How Does It Work? Layers

BSP Layers Layers contain extensions and customizations to base system Can include image customizations, additional recipes, modifying recipes, adding extra configuration Really just another directory to look for recipes in Added to the BBLAYERS variable in build/conf/bblayers.conf BSPs are layers that add machine settings and recipes Machine settings are specified in a layer's conf/machine/xxx.conf file(s) Examples: Sandy Bridge + Cougar Point: meta-intel/conf/meta-sugarbay/machine/sugarbay.conf Routerstation Pro (MIPS) yocto/meta/conf/machine/routerstationpro.conf More info: bit.ly/lwaszt & bit.ly/m8nirp

Kernel Development We try to develop upstream wherever possible Two major advances in the Yocto Project: Branching tools: Per-BSP git branches contain machine-specific kernel sources. Tools collect up the relevant tree of branches Kernel features: patches and configuration fragments managed as a functional block Results: Can turn on a collection of features for a given BSP Less code duplication Easier to choose a config fragment and patches More info: bit.ly/izukvk & bit.ly/jrsfwo

Components Kernel class Kernel Tools Details meta/classes/kernel.bbclass Linux-Yocto recipe meta/recipes-kernel/linux/linux-yocto*bb Linux-Yocto git repository http://git.pokylinux.org/cgit/cgit.cgi/linux-yocto-2.6.37 Kernel Versions linux-yocto-stable: 2.6.34 linux-yocto: 2.6.37 linux-yocto-dev: 2.6.39 (meta-kernel-dev) (soon 3.0) linux-2.6: current mainline git (meta-kernel-dev)

Source Fetching Recipes call out location of all sources, whether on the internet or local (Look for SRC_URI in *.bb files) Bitbake can get sources from git, svn, bzr, from tarballs, and many, many more* Versions of packages can be fixed or updated automatically (Add SRCREV_pn- PN = "${AUTOREV} to local.conf) Yocto Project sources mirror available as a fallback, if the sources move on the internet * Complete list includes: http, ftp, https, git, svn, perforce, mercurial, bzr, cvs, osc, repo, ssh, and svk and the unpacker can cope with tarballs, zip, rar, xz, gz, bz2, and so on.

Patching Once sources are obtained, the patches are applied This is a good place place to patch the software yourself However, we encourage you to contribute development upstream whenever possible (we try to)

Configure/Compile Autoconf can be triggered automatically to ensure latest libtool is used DESCRIPTION = "GNU Helloworld application SECTION = "examples" LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://copying;md5=751419260aa954499f7abaabaa882bbe" PR = "r0" SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz" inherit autotools gettext CFLAGS can be set CFLAGS_prepend = "-I ${S}/include " Install task to set modes, permissions, target directories, done by pseudo do_install () { oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir}

Packaging Once configure/compile/install is completed, packaging commences The most popular package formats are supported: RPM, Debian, and ipk Set PACKAGE_CLASSES in conf/local.conf You can split into multiple packages using PACKAGES and FILES in a *.bb file: PACKAGES =+ "sxpm cxpm" FILES_cxpm = "${bindir}/cxpm" FILES_sxpm = "${bindir}/sxpm"

Image Generation Images are constructed using the packages built earlier in the process Uses for these images: Live Image to boot a device Root filesystem for QEMU emulator Sysroot for App development YP lets you customize your embedded Linux OS

ADT Generation Cross toolchain and installation script generated. This can be used to set up an application developer s cross development environment to create apps MACHINE=qemuarm bitbake pokyimage-sato-sdk meta-toolchain package-index QEMU built for target architecture emulation

Setting up the App Developer System Developer App Developer Package Repository (networked or local) Sysroot (Bootable Linux filesystem tree with development headers) Yocto plug-ins Cross toolchain installation (such as: /opt/poky) YP helps set up the embedded app developer More info: bit.ly/mz6urv & bit.ly/j55iq3

Use NFS/Local Disk, Pkg Manager Package Repository System Developer App Developer QEMU Device emulator Sysroot Device under development

Both Device and App Development Models Supported Use NFS/Local Disk, Pkg Manager Package Repository System Developer App Developer QEMU Device emulator Package Manager Sysroot Device under development

What s Next? Constantly improve the developer s experience Identify areas which are confusing and constantly improve them Improvements on the Hob Isolate all Linux development system uncertainties Updated kernel, toolchain, user land packages More partner s products

How to Get Started Download the software today Be sure you read the Quick Start to set up your system to use the Yocto Project Build, test on QEMU or real hardware, develop apps Join the community to get help #yocto on freenode and yocto@yoctoproject.org (http://lists.yoctoproject.org/listinfo/yocto) Getting started with the Yocto Project is easy

Get Involved The Yocto Project is a collaboration of individuals, non-profits, and corporations under the Linux Foundation We urge you or your organization to join yoctoproject.org/documentation/getting-started has a number of ways to learn and contribute Contribute code, documentation, fix bugs, provide BSPs Use YP for your embedded projects Work with the community to make YP better Make an impact collaboration in its purest sense

It s Time to Take Action It s not an embedded Linux distribution it creates a custom one for you YP lets you customize your embedded Linux OS YP helps set up the embedded app developer Both device and app development models supported Getting started is easy Make an impact collaboration in its purest sense

Thanks! Q & A

31/25