Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Embedded Recipes Conference - 2017
Introduction to the Yocto Project /
OpenEmbedded-core
Mylène Josserand
Free Electrons
m...
Mylène Josserand
▶ Embedded Linux engineer at Free Electrons
since 2016
▶ Embedded Linux expertise
▶ Development, consulti...
Introduction
▶ In this talk, we will:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training...
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
Free Electrons - Embedded Linux, kerne...
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded...
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded...
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded...
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded...
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded...
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded...
Why use a build system?
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. ...
Why use a build system?
▶ In the Embedded world, we have many constraints
Free Electrons - Embedded Linux, kernel, drivers...
Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + a...
Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + a...
Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + a...
System integration: several possibilities
▶ Building everything manually:
Free Electrons - Embedded Linux, kernel, drivers...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility
Free Electrons - Embedded Lin...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell
Free Electro...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of rep...
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training a...
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training a...
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training a...
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training a...
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training a...
Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
Free Electrons - Embedded Linux, kernel, d...
Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applica...
Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applica...
Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applica...
OpenEmbedded core & Poky
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support....
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
Free Electrons - Embedded Linux, ke...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
an...
The Yocto Project / OpenEmbedded Core / Poky
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, t...
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http:...
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http:...
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http:...
Workflow - Users/Developers actions
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training a...
Workflow - 1. Download
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. h...
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
Free Elec...
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support...
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support...
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support...
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support...
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
...
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
...
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
...
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
...
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
...
Workflow - 2. Configure the build
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and...
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
Free Electrons - Embedd...
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-en...
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-en...
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-en...
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-en...
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-en...
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-en...
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-en...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
Free Electrons - Embedded Linux, ker...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. ...
Workflow - 3. Build an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and supp...
Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, conf...
Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, conf...
Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, conf...
Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, conf...
MACHINE/DISTRO/IMAGE: a little reminder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, traini...
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
Free Electrons - Embedded Lin...
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
Free Electrons - Embedded Lin...
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-...
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-...
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-...
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-...
Workflow - Developer
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. htt...
Workflow - 4. Create a layer
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and supp...
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your o...
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your o...
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your o...
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your o...
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your o...
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your o...
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your o...
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your o...
Workflow - 5. Create a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and sup...
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
Free Electrons - Embedded Linux...
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
Free Ele...
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ config...
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ config...
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ config...
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ config...
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ config...
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ config...
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understan...
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understan...
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understan...
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understan...
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understan...
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understan...
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understan...
Workflow - 5. Create a recipe
recipes-support/nmon/nmon_13g.bb
SUMMARY = "nmon performance monitor"
HOMEPAGE = "http://nmo...
Workflow - 5. Create a recipe
recipes-support/nmon/nmon_13g.bb
| SUMMARY = "nmon performance monitor"
| HOMEPAGE = "http:/...
Workflow - 5. Create a recipe
recipes-example/helloworld/helloworld_1.0.bb
DESCRIPTION = "Print a friendly, customizable g...
Workflow - 5. Create a recipe
recipes-example/helloworld/helloworld_1.0.bb
| DESCRIPTION = "Print a friendly, customizable...
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicke...
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicke...
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicke...
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicke...
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicke...
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicke...
Workflow - 6. Extend a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and sup...
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
Free Electrons - Embedded L...
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes usefu...
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes usefu...
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes usefu...
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes usefu...
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes usefu...
Workflow - 6. Extend a recipe
recipes-support/nmon/nmon_13g.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_UR...
Workflow - 7. Create an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and sup...
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
Free Electro...
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas th...
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas th...
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas th...
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas th...
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas th...
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas th...
Workflow - 7. Create an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and sup...
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
Free Electrons - Embed...
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of ...
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of ...
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of ...
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of ...
Workflow - 7. Create an image
recipes-core/images/core-image-fe.bb
inherit core-image
DESCRIPTION = "A small image to boot...
Workflow - 8. Create a machine
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and su...
Workflow - 8. Create a machine
▶ A machine describes your hardware
Free Electrons - Embedded Linux, kernel, drivers - Deve...
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
Free...
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ Th...
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ Th...
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ Th...
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ Th...
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ Th...
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ Th...
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ Th...
Workflow - 8. Create a machine
conf/machine/fe-machine.conf
require conf/machine/include/soc-family.inc
require conf/machi...
Conclusion
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-e...
Embedded Recipes Conference - 2017
Thank you for listening!
Free Electrons - Embedded Linux, kernel, drivers - Development...
Questions?
Mylène Josserand
mylene@free-electrons.com
Slides under CC-BY-SA 3.0
http://free-electrons.com/pub/conferences/...
Próxima SlideShare
Cargando en…5
×

Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène Josserand


The Yocto Project provides an integrated environment to develop and debug custom embedded Linux systems, similar to commercial embedded Linux development environments.

In this talk, we will introduce the different parts and lexicon of the Yocto Project: poky, OpenEmbedded-core, bitbake, layers, recipes, machine, distro, etc. Different “How to” will be detailed: how to configure it, build an image from layers, create recipes and add a custom machine.

Throughout the talk, many good practices will be detailed. Thanks to that, the audience will have a good overview of Yocto Project and will know how to start using it in an effective way.

This talk is intended for developers or technical people who want to work/start with Yocto/Openembedded. Good practices are important when working with Yocto Project and will be detailed in this presentation.

No particular knowledge is required to attend this talk.

Mylène Josserand, Free Electrons

  • Inicia sesión para ver los comentarios

Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène Josserand

  1. 1. Embedded Recipes Conference - 2017 Introduction to the Yocto Project / OpenEmbedded-core Mylène Josserand Free Electrons mylene@free-electrons.com Embedded Linux Experts Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 1/35
  2. 2. Mylène Josserand ▶ Embedded Linux engineer at Free Electrons since 2016 ▶ Embedded Linux expertise ▶ Development, consulting and training around the Yocto Project ▶ One of the authors of Free Electrons’ Yocto Project / OpenEmbedded training materials. ▶ Kernel contributor: audio driver, touchscreen, RTC and more to come! Embedded Linux Experts Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 2/35
  3. 3. Introduction ▶ In this talk, we will: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  4. 4. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  5. 5. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  6. 6. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  7. 7. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it ▶ How we can update it to fit our needs Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  8. 8. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it ▶ How we can update it to fit our needs ▶ Give some good practices to start using the Yocto Project correctly Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  9. 9. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it ▶ How we can update it to fit our needs ▶ Give some good practices to start using the Yocto Project correctly ▶ Allows to customize many things: it is easy to do things the wrong way Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  10. 10. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it ▶ How we can update it to fit our needs ▶ Give some good practices to start using the Yocto Project correctly ▶ Allows to customize many things: it is easy to do things the wrong way ▶ When you see a ✓, it means it is a good practice! Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  11. 11. Why use a build system? Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  12. 12. Why use a build system? ▶ In the Embedded world, we have many constraints Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  13. 13. Why use a build system? ▶ In the Embedded world, we have many constraints ▶ Nice to reduce the system to a minimal one + add our custom application Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  14. 14. Why use a build system? ▶ In the Embedded world, we have many constraints ▶ Nice to reduce the system to a minimal one + add our custom application ▶ A build system will automate the creation of the system in a reproducible way Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  15. 15. Why use a build system? ▶ In the Embedded world, we have many constraints ▶ Nice to reduce the system to a minimal one + add our custom application ▶ A build system will automate the creation of the system in a reproducible way ▶ Integration means packaging applications to create a final image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  16. 16. System integration: several possibilities ▶ Building everything manually: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  17. 17. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  18. 18. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  19. 19. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  20. 20. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  21. 21. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  22. 22. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size) Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  23. 23. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  24. 24. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  25. 25. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  26. 26. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  27. 27. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  28. 28. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution⊕ Nearly full flexibility Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  29. 29. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution⊕ Nearly full flexibility⊕ Built from source: customization and optimization are easy Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  30. 30. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution⊕ Nearly full flexibility⊕ Built from source: customization and optimization are easy⊕ Fully reproducible Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  31. 31. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution⊕ Nearly full flexibility⊕ Built from source: customization and optimization are easy⊕ Fully reproducible⊕ Cross-compilation Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  32. 32. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  33. 33. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  34. 34. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  35. 35. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  36. 36. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  37. 37. Representation in the Yocto Project ▶ Common tasks defined in OpenEmbedded core Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  38. 38. Representation in the Yocto Project ▶ Common tasks defined in OpenEmbedded core ▶ Many recipes availables for many applications: organized in layers Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  39. 39. Representation in the Yocto Project ▶ Common tasks defined in OpenEmbedded core ▶ Many recipes availables for many applications: organized in layers ▶ Allow to build custom embedded Linux-based systems Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  40. 40. Representation in the Yocto Project ▶ Common tasks defined in OpenEmbedded core ▶ Many recipes availables for many applications: organized in layers ▶ Allow to build custom embedded Linux-based systems ⇒ This is the aim of the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  41. 41. OpenEmbedded core & Poky Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  42. 42. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  43. 43. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  44. 44. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  45. 45. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  46. 46. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  47. 47. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  48. 48. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  49. 49. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: ▶ OpenEmbedded-core Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  50. 50. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: ▶ OpenEmbedded-core ▶ Bitbake Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  51. 51. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: ▶ OpenEmbedded-core ▶ Bitbake ▶ Additional layers Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  52. 52. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: ▶ OpenEmbedded-core ▶ Bitbake ▶ Additional layers ▶ Also contains some useful tools to ease recipes and layers’ creation Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  53. 53. The Yocto Project / OpenEmbedded Core / Poky Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 8/35
  54. 54. Workflow - General Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  55. 55. Workflow - General Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  56. 56. Workflow - General Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  57. 57. Workflow - Users/Developers actions Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 10/35
  58. 58. Workflow - 1. Download Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  59. 59. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  60. 60. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases ▶ Support level: Development, Stable, Community Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  61. 61. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases ▶ Support level: Development, Stable, Community ▶ A codename corresponds to a Poky and Bitbake versions Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34 Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  62. 62. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases ▶ Support level: Development, Stable, Community ▶ A codename corresponds to a Poky and Bitbake versions Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34 ▶ How to download: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  63. 63. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases ▶ Support level: Development, Stable, Community ▶ A codename corresponds to a Poky and Bitbake versions Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34 ▶ How to download: git clone -b pyro git://git.yoctoproject.org/poky.git Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  64. 64. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  65. 65. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders ▶ Look at existing layers Figure: http://layers.openembedded.org/layerindex/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  66. 66. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders ▶ Look at existing layers Figure: http://layers.openembedded.org/layerindex/ ▶ Download all other layers on same branch than Poky: Pyro Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  67. 67. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders ▶ Look at existing layers Figure: http://layers.openembedded.org/layerindex/ ▶ Download all other layers on same branch than Poky: Pyro ✓ Use existing layers before creating a new one ⇒ saves you time Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  68. 68. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders ▶ Look at existing layers Figure: http://layers.openembedded.org/layerindex/ ▶ Download all other layers on same branch than Poky: Pyro ✓ Use existing layers before creating a new one ⇒ saves you time ✓ DO NOT EDIT POKY/UPSTREAM LAYERS ⇒ complicates updates Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  69. 69. Workflow - 2. Configure the build Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  70. 70. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  71. 71. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  72. 72. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  73. 73. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  74. 74. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands ▶ All the local configurations are in the conf folder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  75. 75. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands ▶ All the local configurations are in the conf folder build/ |-- conf |-- bblayers.conf |-- local.conf Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  76. 76. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands ▶ All the local configurations are in the conf folder build/ |-- conf |-- bblayers.conf |-- local.conf ▶ Edit your bblayers.conf with possible additional layers: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  77. 77. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands ▶ All the local configurations are in the conf folder build/ |-- conf |-- bblayers.conf |-- local.conf ▶ Edit your bblayers.conf with possible additional layers: BBLAYERS ?= " /home/mylene/yocto/poky/meta /home/mylene/yocto/poky/meta-poky /home/mylene/yocto/poky/meta-yocto-bsp /home/mylene/yocto/meta-freescale /home/mylene/yocto/meta-qt5 " Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  78. 78. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  79. 79. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  80. 80. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  81. 81. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  82. 82. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  83. 83. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  84. 84. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  85. 85. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders ▶ poky: poky, poky-tiny, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  86. 86. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders ▶ poky: poky, poky-tiny, ... ▶ meta-angstrom: angstrom Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  87. 87. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders ▶ poky: poky, poky-tiny, ... ▶ meta-angstrom: angstrom ▶ Noticed that local.conf ⇒ only for the local workstation. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  88. 88. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders ▶ poky: poky, poky-tiny, ... ▶ meta-angstrom: angstrom ▶ Noticed that local.conf ⇒ only for the local workstation. ✓ Avoid changes directly in local.conf (or only for test purposes, except for some variables such as MACHINE and DISTRO) Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  89. 89. Workflow - 3. Build an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  90. 90. Workflow - 3. Build an image ▶ What is an IMAGE? ⇒ Represents your root filesystem: all your applications, libraries, configuration files, ... Will find it under recipes-*/images/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  91. 91. Workflow - 3. Build an image ▶ What is an IMAGE? ⇒ Represents your root filesystem: all your applications, libraries, configuration files, ... Will find it under recipes-*/images/ ▶ Common images already exist in Poky: core-image-minimal, core-image-base, core-image-x11, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  92. 92. Workflow - 3. Build an image ▶ What is an IMAGE? ⇒ Represents your root filesystem: all your applications, libraries, configuration files, ... Will find it under recipes-*/images/ ▶ Common images already exist in Poky: core-image-minimal, core-image-base, core-image-x11, ... ▶ Build an existing image: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  93. 93. Workflow - 3. Build an image ▶ What is an IMAGE? ⇒ Represents your root filesystem: all your applications, libraries, configuration files, ... Will find it under recipes-*/images/ ▶ Common images already exist in Poky: core-image-minimal, core-image-base, core-image-x11, ... ▶ Build an existing image: bitbake core-image-minimal Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  94. 94. MACHINE/DISTRO/IMAGE: a little reminder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  95. 95. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  96. 96. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  97. 97. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ ▶ Distro: Represents the top-level configuration that will apply on every build conf/distro/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  98. 98. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ ▶ Distro: Represents the top-level configuration that will apply on every build conf/distro/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  99. 99. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ ▶ Distro: Represents the top-level configuration that will apply on every build conf/distro/ ▶ Image: It represents your root filesystem itself: all your applications, libraries, configuration’s files, etc recipes-core/images Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  100. 100. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ ▶ Distro: Represents the top-level configuration that will apply on every build conf/distro/ ▶ Image: It represents your root filesystem itself: all your applications, libraries, configuration’s files, etc recipes-core/images Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  101. 101. Workflow - Developer Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 17/35
  102. 102. Workflow - 4. Create a layer Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  103. 103. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  104. 104. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  105. 105. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  106. 106. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  107. 107. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: yocto-layer create <layer_name> -o <dest_dir> Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  108. 108. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: yocto-layer create <layer_name> -o <dest_dir> ✓ The layer’s name must be meta-* (done automatically using yocto-layer tool) Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  109. 109. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: yocto-layer create <layer_name> -o <dest_dir> ✓ The layer’s name must be meta-* (done automatically using yocto-layer tool) ✓ Avoid uppercase and funny/long names Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  110. 110. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: yocto-layer create <layer_name> -o <dest_dir> ✓ The layer’s name must be meta-* (done automatically using yocto-layer tool) ✓ Avoid uppercase and funny/long names ✓ If you have different projects with common parts, try to create two layers ⇒ Can re-use some parts Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  111. 111. Workflow - 5. Create a recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  112. 112. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  113. 113. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  114. 114. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  115. 115. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  116. 116. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it ▶ install it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  117. 117. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it ▶ install it ▶ It handles all the dependencies for you. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  118. 118. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it ▶ install it ▶ It handles all the dependencies for you. ▶ Many common tasks are already defined by OpenEmbedded-core Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  119. 119. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it ▶ install it ▶ It handles all the dependencies for you. ▶ Many common tasks are already defined by OpenEmbedded-core ▶ Organized in folders with the same purpose (recipes-core, recipes-bsp, recipes-kernel, recipes-devtool, recipes-support, ...) and a sub-folder with the application’s name Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  120. 120. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  121. 121. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  122. 122. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  123. 123. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: ▶ The header: what/who. Description of the application Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  124. 124. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: ▶ The header: what/who. Description of the application ▶ The sources: where. Can be tarballs, remote repository, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  125. 125. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: ▶ The header: what/who. Description of the application ▶ The sources: where. Can be tarballs, remote repository, ... ▶ The tasks: how. How to proceed with the application’s sources Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  126. 126. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: ▶ The header: what/who. Description of the application ▶ The sources: where. Can be tarballs, remote repository, ... ▶ The tasks: how. How to proceed with the application’s sources ▶ Classes are available for tasks commonly used: kernel, CMake, autotools, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  127. 127. Workflow - 5. Create a recipe recipes-support/nmon/nmon_13g.bb SUMMARY = "nmon performance monitor" HOMEPAGE = "http://nmon.sf.net" SECTION = "console/utils" LICENSE = "GPLv3" LIC_FILES_CHKSUM = "file://${WORKDIR}/Documentation.txt;md5=dbb13658cf55d687c4f2ff771a696d4a" DEPENDS = "ncurses" SRC_URI = "${SOURCEFORGE_MIRROR}/nmon/lmon13g.c;name=lmon ${SOURCEFORGE_MIRROR}/nmon/Documentation.txt;name=doc " SRC_URI[lmon.md5sum] = "b1b8e6c0123ad232394991f2d4f40494" SRC_URI[lmon.sha256sum] = "456ab2a342b31d1a352d0d940af5962fa65a12ae8757ff73e6e73210832ae8b5" SRC_URI[doc.md5sum] = "dbb13658cf55d687c4f2ff771a696d4a" SRC_URI[doc.sha256sum] = "1f7f83afe62a7210be5e83cd24157adb854c14599efe0b377a7ecca933869278" CFLAGS += "-D JFS -D GETUSER -Wall -D LARGEMEM" LDFLAGS += "-ltinfo -lncursesw" do_compile() { ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/lmon13g.c -o nmon } do_install() { install -d ${D}${bindir} install -m 0755 nmon ${D}${bindir} } Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 21/35
  128. 128. Workflow - 5. Create a recipe recipes-support/nmon/nmon_13g.bb | SUMMARY = "nmon performance monitor" | HOMEPAGE = "http://nmon.sf.net" | SECTION = "console/utils" "Header" | LICENSE = "GPLv3" | LIC_FILES_CHKSUM = "file://${WORKDIR}/Documentation.txt;md5=dbb13658cf55d687c4f2ff771a696d4a" | DEPENDS = "ncurses" | SRC_URI = "${SOURCEFORGE_MIRROR}/nmon/lmon13g.c;name=lmon | ${SOURCEFORGE_MIRROR}/nmon/Documentation.txt;name=doc | " | SRC_URI[lmon.md5sum] = "b1b8e6c0123ad232394991f2d4f40494" "Source" | SRC_URI[lmon.sha256sum] = "456ab2a342b31d1a352d0d940af5962fa65a12ae8757ff73e6e73210832ae8b5" | SRC_URI[doc.md5sum] = "dbb13658cf55d687c4f2ff771a696d4a" | SRC_URI[doc.sha256sum] = "1f7f83afe62a7210be5e83cd24157adb854c14599efe0b377a7ecca933869278" | CFLAGS += "-D JFS -D GETUSER -Wall -D LARGEMEM" | LDFLAGS += "-ltinfo -lncursesw" | | do_compile() { | ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/lmon13g.c -o nmon "Tasks" | } | | do_install() { | install -d ${D}${bindir} | install -m 0755 nmon ${D}${bindir} | } Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 22/35
  129. 129. Workflow - 5. Create a recipe recipes-example/helloworld/helloworld_1.0.bb DESCRIPTION = "Print a friendly, customizable greeting" HOMEPAGE = "https://www.gnu.org/software/hello/" PRIORITY = "optional" SECTION = "examples" LICENSE = "GPLv3" SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz" SRC_URI[md5sum] = "67607d2616a0faaf5bc94c59dca7c3cb" SRC_URI[sha256sum] = "ecbb7a2214196c57ff9340aa71458e1559abd38f6d8d169666846935df191ea7" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" inherit autotools Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 23/35
  130. 130. Workflow - 5. Create a recipe recipes-example/helloworld/helloworld_1.0.bb | DESCRIPTION = "Print a friendly, customizable greeting" | HOMEPAGE = "https://www.gnu.org/software/hello/" "Header" | PRIORITY = "optional" | SECTION = "examples" | LICENSE = "GPLv3" | SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz" "Source" | SRC_URI[md5sum] = "67607d2616a0faaf5bc94c59dca7c3cb" | SRC_URI[sha256sum] = "ecbb7a2214196c57ff9340aa71458e1559abd38f6d8d169666846935df191ea7" | LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" "Tasks" | inherit autotools Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 24/35
  131. 131. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  132. 132. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  133. 133. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration ✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/... ⇒ Find recipes quicker Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  134. 134. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration ✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/... ⇒ Find recipes quicker ✓ Keep the headers / sources / tasks organization in the recipe ⇒ All the recipes have the same content organization Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  135. 135. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration ✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/... ⇒ Find recipes quicker ✓ Keep the headers / sources / tasks organization in the recipe ⇒ All the recipes have the same content organization ✓ Use/Create include files when possible ⇒ Can extend other versions easily Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  136. 136. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration ✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/... ⇒ Find recipes quicker ✓ Keep the headers / sources / tasks organization in the recipe ⇒ All the recipes have the same content organization ✓ Use/Create include files when possible ⇒ Can extend other versions easily ✓ Know how to compile the application manually before integrating it in a recipe ⇒ Saves you time Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  137. 137. Workflow - 6. Extend a recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  138. 138. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  139. 139. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  140. 140. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe ▶ The BitBake build engine allows to modify a recipe by extending it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  141. 141. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe ▶ The BitBake build engine allows to modify a recipe by extending it ▶ The recipe extensions end in .bbappend Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  142. 142. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe ▶ The BitBake build engine allows to modify a recipe by extending it ▶ The recipe extensions end in .bbappend ▶ Appended files must have the same root name as the recipe they extend example_0.1.bbappend applies to example_0.1.bb ⇒ version specific Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  143. 143. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe ▶ The BitBake build engine allows to modify a recipe by extending it ▶ The recipe extensions end in .bbappend ▶ Appended files must have the same root name as the recipe they extend example_0.1.bbappend applies to example_0.1.bb ⇒ version specific ▶ If adding new files, you must prepend the FILESEXTRAPATHS variable with the path to files’ directory. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  144. 144. Workflow - 6. Extend a recipe recipes-support/nmon/nmon_13g.bbappend FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI += "file://custom-modification-0.patch file://custom-modification-1.patch " do_install_append() { # Do something } . |--- conf | |-- layer.conf |--- recipes-support |--- nmon |-- files | |-- custom-modification-0.patch | |-- custom-modification-1.patch |-- nmon_13g.bbappend Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 27/35
  145. 145. Workflow - 7. Create an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  146. 146. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  147. 147. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  148. 148. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  149. 149. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: ▶ meta*/recipes*/images/*.bb Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  150. 150. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: ▶ meta*/recipes*/images/*.bb ▶ An image is no more than a recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  151. 151. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: ▶ meta*/recipes*/images/*.bb ▶ An image is no more than a recipe ▶ To create an image, simply create a .bb in an images folder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  152. 152. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: ▶ meta*/recipes*/images/*.bb ▶ An image is no more than a recipe ▶ To create an image, simply create a .bb in an images folder mkdir -p recipes-core/images/ touch recipes-core/images/core-image-fe.bb Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  153. 153. Workflow - 7. Create an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  154. 154. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  155. 155. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: IMAGE_INSTALL List of packages to install in the generated image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  156. 156. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: IMAGE_INSTALL List of packages to install in the generated image IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to create images Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  157. 157. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: IMAGE_INSTALL List of packages to install in the generated image IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to create images ✓ Create a minimal image to include it in others ⇒ Allows to have a minimal rootfs Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  158. 158. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: IMAGE_INSTALL List of packages to install in the generated image IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to create images ✓ Create a minimal image to include it in others ⇒ Allows to have a minimal rootfs ✓ Create different images according to your needs: image-minimal, image-dev, image-x11, image-qt5, etc ⇒ Install only what you really need for your board. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  159. 159. Workflow - 7. Create an image recipes-core/images/core-image-fe.bb inherit core-image DESCRIPTION = "A small image to boot a device, created for Embedded Recipes" LICENSE = "MIT" IMAGE_FSTYPES = "tar.bz2 ext4" IMAGE_INSTALL = "packagegroup-core-boot nmon helloworld " Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 30/35
  160. 160. Workflow - 8. Create a machine Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  161. 161. Workflow - 8. Create a machine ▶ A machine describes your hardware Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  162. 162. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  163. 163. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  164. 164. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  165. 165. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  166. 166. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  167. 167. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed to the kernel as the console parameter, e.g. 115200 ttyS0 Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  168. 168. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed to the kernel as the console parameter, e.g. 115200 ttyS0 KERNEL_IMAGETYPE : The type of kernel image to build, e.g. zImage Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  169. 169. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed to the kernel as the console parameter, e.g. 115200 ttyS0 KERNEL_IMAGETYPE : The type of kernel image to build, e.g. zImage ✓ Describe your machine in a README file Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  170. 170. Workflow - 8. Create a machine conf/machine/fe-machine.conf require conf/machine/include/soc-family.inc require conf/machine/include/tune-cortexa5.inc TARGET_ARCH = "arm" PREFERRED_PROVIDER_virtual/kernel ?= "linux-at91" PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-at91" KERNEL_IMAGETYPE = "zImage" KERNEL_DEVICETREE = "at91-sama5d3_xplained.dtb" SERIAL_CONSOLE ?= "115200 ttyS0" Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 32/35
  171. 171. Conclusion Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 33/35
  172. 172. Embedded Recipes Conference - 2017 Thank you for listening! Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 34/35
  173. 173. Questions? Mylène Josserand mylene@free-electrons.com Slides under CC-BY-SA 3.0 http://free-electrons.com/pub/conferences/2017/embedded-recipes/josserand-introduction-to-yocto- project/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 35/35

×