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
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
Introduction
▶ In this talk, we will:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
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
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
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
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
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
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
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
Why use a build system?
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
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
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
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
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
System integration: several possibilities
▶ Building everything manually:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
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
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
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
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
OpenEmbedded core & Poky
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
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
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
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
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
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
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
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
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
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
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
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
The Yocto Project / OpenEmbedded Core / Poky
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 8/35
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
Workflow - Users/Developers actions
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 10/35
Workflow - 1. Download
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
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
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
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
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
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
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
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
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
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
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
Workflow - 2. Configure the build
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Workflow - 3. Build an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
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
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
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
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
MACHINE/DISTRO/IMAGE: a little reminder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
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
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
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
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
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
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
Workflow - Developer
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 17/35
Workflow - 4. Create a layer
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
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
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
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
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
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
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
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
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
Workflow - 5. Create a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Workflow - 6. Extend a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
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
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
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
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
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
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
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
Workflow - 7. Create an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
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
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
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
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
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
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
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
Workflow - 7. Create an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
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
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
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
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
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
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
Workflow - 8. Create a machine
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
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
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
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
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
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
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
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
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
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
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
Conclusion
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 33/35
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
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

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

  • 1.
    Embedded Recipes Conference- 2017 Introduction to the Yocto Project / OpenEmbedded-core Mylène Josserand Free Electrons [email protected] Embedded Linux Experts Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 1/35
  • 2.
    Mylène Josserand ▶ EmbeddedLinux 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.
    Introduction ▶ In thistalk, we will: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 4.
    Introduction ▶ In thistalk, 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.
    Introduction ▶ In thistalk, 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.
    Introduction ▶ In thistalk, 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.
    Introduction ▶ In thistalk, 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.
    Introduction ▶ In thistalk, 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.
    Introduction ▶ In thistalk, 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.
    Introduction ▶ In thistalk, 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.
    Why use abuild system? Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  • 12.
    Why use abuild 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.
    Why use abuild 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.
    Why use abuild 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.
    Why use abuild 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.
    System integration: severalpossibilities ▶ Building everything manually: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 17.
    System integration: severalpossibilities ▶ Building everything manually: ⊕ Full flexibility Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 18.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    System integration: severalpossibilities ▶ 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.
    Representation in theYocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 33.
    Representation in theYocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 34.
    Representation in theYocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 35.
    Representation in theYocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 36.
    Representation in theYocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 37.
    Representation in theYocto 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.
    Representation in theYocto 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.
    Representation in theYocto 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.
    Representation in theYocto 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.
    OpenEmbedded core &Poky Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    The Yocto Project/ OpenEmbedded Core / Poky Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 8/35
  • 54.
    Workflow - General FreeElectrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  • 55.
    Workflow - General FreeElectrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  • 56.
    Workflow - General FreeElectrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  • 57.
    Workflow - Users/Developersactions Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 10/35
  • 58.
    Workflow - 1.Download Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    Workflow - 2.Configure the build Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    Workflow - 3.Build an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  • 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.
    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.
    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.
    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.
    MACHINE/DISTRO/IMAGE: a littlereminder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  • 95.
    MACHINE/DISTRO/IMAGE: a littlereminder ▶ 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.
    MACHINE/DISTRO/IMAGE: a littlereminder ▶ 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.
    MACHINE/DISTRO/IMAGE: a littlereminder ▶ 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.
    MACHINE/DISTRO/IMAGE: a littlereminder ▶ 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.
    MACHINE/DISTRO/IMAGE: a littlereminder ▶ 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.
    MACHINE/DISTRO/IMAGE: a littlereminder ▶ 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.
    Workflow - Developer FreeElectrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 17/35
  • 102.
    Workflow - 4.Create a layer Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    Workflow - 5.Create a recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    Workflow - 6.Extend a recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    Workflow - 7.Create an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    Workflow - 7.Create an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    Workflow - 8.Create a machine Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    Conclusion Free Electrons -Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 33/35
  • 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.
    Questions? Mylène Josserand [email protected] Slides underCC-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