Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

show: bitbake-layers show-layers

create and modify meta layer

create meta layer


It is possible to customize existing meta layers by creating an own meta layer with bitbake append files. In this description the meta layer meta-altera for Intel FPGA devices is used as reference.

For more informations about the operating system used and the sources and versions of yocto project or meta-altera layer, see Yocto KICKstart#Used source files.

Initialize the environment

Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Before starting to create a custom meta layer, navigate to the yocto poky directory and initialize the environment with the following commands:

Code Block
languagebash
themeMidnight
linenumberstrue
cd <path_to_yocto>/poky
source 

...

oe-init-build-env

...

bitbake-layers create-layer <yocto_poky_path>/meta-custom

remove example recipes

cd <yocto_poky_path>meta-custom

rm -rf recipes-example

modify layer configuration file

To create a dependency to another meta layer, the layer.conf in meta-custom/conf must be modified as follows:

gedit <yocto_poky_path>/meta-custom/conf/layer.conf

change 'LAYERDEPENDS_meta-custom = "core"' to 'LAYERDEPENDS_meta-custom = "meta-altera"'

create layer structure for bsp and kernel

for bsp:

mkdir -p recipes-bsp/u-boot

mkdir recipes-bsp/u-boot/files

for kernel:

mkdir -p recipes-kernel/linux

mkdir recipes-kernel/linux/files

modify <yocto_poky_path>/build/conf/*

---add meta layer to bblayers.conf---

-before start to configure anything, the meta layers must be added to <yocto_poky_path>/build/conf/bblayers.conf:

bitbake-layers add-layer ../meta-altera

bitbake-layers add-layer ../meta-custom

---add parameters to local.conf---

-for linux-altera-lts the provider and the version must be added:

PREFERRED_PROVIDER_virtual/kernel = "linux-altera-lts"


cd ..


Download required sources

Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Since the created meta-custom layer should depend on meta-altera, these sources files must be downloaded and added to the yocto project.

  1. Navigate to yocto poky directory and download meta-altera layer:

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    cd <path_to_yocto>/poky
    git clone -b dunfell https://github.com/kraj/meta-altera.git


  2. Add meta-altera to yocto project with:

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    bitbake-layers add-layer ./meta-altera


Create custom meta layer

Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

In this example, the created layer is named meta-custom.

  1. Create own layer "meta-<custom_name>" with:

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    bitbake-layers create-layer ./meta-custom


  2. The created layer contains a sample recipes folder, that can be removed:

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    rm -rf ./meta-custom/recipes-example


  3. Make meta-custom dependent on meta-altera:

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    sed -i '/LAYERDEPENDS_meta-custom/s/core/meta-altera/g' meta-custom/conf/layer.conf 


  4. Add the meta-custom layer to the yocto project with:

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    bitbake-layers add-layer ./meta-custom



Add required parameters

Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

  1. First the variable "MACHINE" must be redefined in the local.conf file. Several machines are defined in the meta-altera layer (see meta-altera/conf/machine for more information). In this example, the machine 'cyclone5' is used.
    Remove the default value and add 'cyclone5':

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    sed -i '/^MACHINE/s/MACHINE/#MACHINE/g' conf/local.conf
    echo -e '\nMACHINE = "cyclone5"' >> conf/local.conf


  2. For the linux kernel in the meta-altera layer it's required to define a the preferred provider and version in local.conf (see meta-altera/recipes-kernel/linux for other linux kernel versions):

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    echo -e '\nPREFERRED_PROVIDER_virtual/kernel = "linux-altera-lts"' >> conf/local.conf
    echo -e 'PREFERRED_VERSION_linux-altera-lts = "5.4%"' >> conf/local.conf
    

-comment all MACHINE variables out and add:

MACHINE="cyclone5"

create workspace

devtool create-workspace workspace


  1. Set the preferred u-boot version for meta-altera in local.conf (see meta-altera/recipes-bsp/u-boot for other u-boot versions):

    Code Block
    languagebash
    themeMidnight
    linenumberstrue
    echo -e '\nPREFERRED_VERSION_u-boot-socfpga = "v2021.04%"' >> conf/local.conf


Modify custom meta layer

Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Configure linux

...

kernel

###with devtool

Set up the build environment to modify the source for an existing recipe:

devtool modify linux-altera-lts -O -s

Launch menuconfig, make changes to configuration and exit and save your config:

...

devtool update-recipe linux-altera-lts -a ${PWD}/../meta-custom -O

devtool finish linux-altera-lts ${PWD}/../meta-custom/ -f

###with bitbake

run kernel configuration task:

bitbake linux-altera-lts -c kernel_configme -f

Launch menuconfig, make changes to configuration and exit and save your config:

bitbake linux-altera-lts -c menuconfig

generate the fragment.cfg file (contains only the changes made):

bitbake linux-altera-lts -c diffconfig

copy fragment.cfg to meta-custom/recipes-kernel/linux/files. The full path to the generated fragment.cfg file is displayed in the terminal after running 'bitbake linux-altera-lts -c diffconfig'.

cp <path_to_cfg>/fragment.cfg ~/yocto/poky/meta-custom/recipes-kernel/linux/files


create .bbappend file → file name must be the same as original .bb recipe file but with with .bbappend ending

...

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://fragment.cfg "

...


Configure u-boot

###with devtool

für meta-altera müssen folgende variablen in build/conf/local.conf eingefügt werden (wird nur für die konfiguration via menuconfig gebraucht, muss danach entfernt werden):

UBOOT_MACHINE=" socfpga_cyclone5_defconfig" → welche für die ausgewählte MACHINE benutzt wird steht in meta-altera/recipes-bsp/u-boot/u-boot-socfpga.inc

UBOOT_CONFIG = ""

Set up the build environment to modify the source for an existing recipe:

devtool modify u-boot-socfpga -O -s

Launch menuconfig, make changes to configuration and exit and save your config:

devtool menuconfig u-boot-socfpga


devtool update-recipe u-boot-socfpga -a ${PWD}/../meta-custom -O

folgende variablen können wieder entfernt werden, nachdem beenden der konfigration von u-boot:

UBOOT_MACHINE=" socfpga_cyclone5_defconfig" → welche für die ausgewählte MACHINE benutzt wird steht in meta-altera/recipes-bsp/u-boot/u-boot-socfpga.inc unter UBOOT_CONFIG[...]=...

UBOOT_CONFIG = ""
















checkout other branch


git checkout mybranch
git reset --hard origin/mybranch

...