2/25/2020

Yocto 의 Layer Configuration 및 Machine/Distro Layer

1.  Yocto의 Layer 구성 

먼저 Yocto 에서 사용되어지는 Recipe 관련문법을 아래링크에서 기본으로 알고 구성하도록하자.

Yocto 기본문법 과 이해 
  https://ahyuo79.blogspot.com/2020/01/raspberry-pi3-linux-yocto.html


  • Yocto Reference Manual 
반드시 Yocto 각 버전별로 확인을 해야하며, Manaul 기반으로 이해하도록 하는 것을 권장한다. 

Zeus(3.0)
Warrior(2.7)
Fido(1.8)


1.1 Layer Configuration 구성 및 설정방법

일반 Layer는 BBPATH 와 BBFILES을 설정을 해주고 각각의 BBFILES 관련정보를 설정해주는 역할로, 
BBFILES, 즉 Recipe들을 기본동작을 가능하게 만들어준다.

더불어 BB 관련된 설정을 넣어 각각의 동작을 조금씩 다르게 할 수 있으며, 
별도의 설정을 하여 공통 변수를 공유하게 할 수 있다. 

Reference Manual 참조(Layer 만들기)
  https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#creating-your-own-layer

Layer를 쉽게 생성방법 


  • 직접 자신의 Layer 생성/설정/Recipe생성/구성  
나의 경우는 Tool을 이용하기 보다는 아래와 같이 직접 손으로 구성하여 만드는 것을 선호한다.
Tool로 하면 매번 필요없는 것들이 많아서 지우는게 많아 나는 직접 구성하는 것을 선호  
$ cd sources  // Yocto Source로 이동  

$ mkdir meta-test-jhlee   // Layer 이름 정함 (Layer 설정시 이름동일) 

$ cd meta-test-jhlee    // 새로 생성한 Layer 이동 

$ mkdir conf

$ vi conf/local.conf    // Layer 설정 (아래 참조) 

$ mkdir -p recipes-core/images                 // Recipe Directory  관리 

$ vi recipes-core/images/core-image-jhlee.bb   // Recipe Directory  Image Recipe 생성 (아래 참조)

$ mkdir -p recipes-test/jhlee-test1            // jhlee-test1 recipe용  
$ mkdir -p recipes-test/jhlee-test2            // jhlee-test2 recipe용  
$ mkdir -p recipes-test/jhlee-test3            // jhlee-test3 recipe용  

$ vi LICENSE    // Layer LICENSE   
$ vi README     // Layer README   
$ vi README.md  // Layer 관리시 Github README   

나중에는 Tool 이 더 좋아져서 Tool 기반으로 해야 할 걸로 생각되어지며, 이 부분은 추후 Yocto가 버전이 높아지면, 참고만 하도록 하자 

  • 상위 구성한 Layer 전체구성확인  
상위에서 구성한 나의 Layer 의 전체구성을 확인하자 
$ tree -t -L 2 --charset unicode
.
|-- recipes-core
|   `-- images
|-- recipes-test
|   |-- jhlee-test1
|   |-- jhlee-test2
|   `-- jhlee-test3
|-- LICENSE
|-- README
|-- README.md
`-- conf
    `-- local.conf


  • Layer 설정 (conf/layer.con)
일반 Layer의 기본목적은 다음과 같다.  
  1. Recipe 즉 BBFILE 관련설정 
  2. 해당 RECIPE들을 처리할 때 공통적으로 적용될 설정
아래의 각 변수들은 Yocto Manual 반드시 참조하도록 
$ vi conf/layer.conf
## BBPATH 에 LAYERDIR (meta-test-jhlee) 위치를 삽입 
## BB FILE들의 위치 (*.bb,*bbclass,**bbappend)
# We have a conf and classes directory, add to BBPATH
## $ bitbake -e | grep ^BBPATH  로 확인가능 
BBPATH .= ":${LAYERDIR}"

## BB FILE들을 찾는 법 (Recipe List)
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
 ${LAYERDIR}/recipes-*/*/*.bbappend"

## Layer List로 이것이 추가되면서 아래와 같이 이 이름기준으로 OVERRIDE됨 
BBFILE_COLLECTIONS += "meta-test-jhlee"
### conf/layer.conf 에서 사용하며 반드시 suffix로 layer name 사용 
BBFILE_PATTERN_meta-test-jhlee = "^${LAYERDIR}/"
### 아래명령어로 우선순위 확인가능  bitbake-layers show-layers
BBFILE_PRIORITY_meta-test-jhlee = "9"
# no problem in warrior version 
# Jeonghun 
## 아래에서 Yocto의 Version 호환성
LAYERSERIES_COMPAT_meta-test-jhlee = "warrior"

Layer 기본구조
아래의 Manual에서 기본구조를 파악하도록하자 

  • Image Recipe 설정 (자신만의 image) 
나만의 image Recipe를 만들어서 나만의 Image 구성도 가능하며, 아래와 같이 해보도록 하자
$ vi recipes-core/images/core-image-jhlee.bb
## IMAGE 관련 서술 
SUMMARY = "Jeonghun Image TEST "

## core-image-base 기반으로 만들며, 다른것으로 변경하면됨 
include recipes-core/images/core-image-base.bb

## 현재 내가 만든 Recipe들을 Image에 추가
IMAGE_INSTALL += "binutils"

IMAGE_INSTALL += "jhlee-test1 jhlee-test2 jhlee-test3"

## 상위 구성한 Layer를 추가한 후 각각의 Recipe들을 만들면 bitbake에서도 동작
## e.g bitbake core-image-jhlee 
## 
export IMAGE_BASENAME = "core-image-jhlee"


  • 이후 작업 
  1. TEST 할 Recipe 구현 및 소스추가  
  2. User Configuration의 bblayers.conf에 상위 Layer 등록 
  3. source를 이용하여 기본설정 (build space 생성)
  4. bitbake로 테스트

Recipe 관련 기본문법 및 OVERRIDES 설명

Recipe 작성방법

User Config에 상위 생성된 Layer 등록 (bblayers.conf)
  https://ahyuo79.blogspot.com/2020/02/yocto-user-configuration.html


1.2 Machine Layer 분석 및 확인

일반 Layer 구성방법과 거의 동일하며,  처음 conf/layer.conf 구성후  
MACHINE 값에 따라 별도로 Machine Layer 가 설정된다
물론 변수가 BSP 마다 조금씩 다르겠지만, 구성부터 살펴보자.

아래는 NXP(Freescale)의 구성이며, 간단하게 분석해보자 
$ cd sources      // Yocto Sources 이동

$ tree -t -L 2 --charset unicode meta-fsl-bsp-release/imx/meta-bsp/conf/  
meta-fsl-bsp-release/imx/meta-bsp/conf/   // i.MX BSP Layer 분석 
|-- layer.conf        // 일반 Layer Recipe들 관리목적  
`-- machine           // Machine Layer Folder 
    |-- imx6dlsabreauto.conf
    |-- imx6dlsabresd.conf
    |-- imx6qpdlsolox.conf
    |-- imx6qpsabreauto.conf
    |-- imx6qpsabresd.conf
    |-- imx6qsabreauto.conf
    |-- imx6qsabresd.conf
    |-- imx6slevk.conf
    |-- imx6sllevk.conf
    |-- imx6solosabreauto.conf
    |-- imx6solosabresd.conf
    |-- imx6sxsabreauto.conf
    |-- imx6sxsabresd.conf   // User Config의 local.conf의 MACHINE 정보 
    |-- imx6ul7d.conf
    |-- imx6ul9x9evk.conf
    |-- imx6ulevk.conf
    |-- imx6ull14x14evk.conf
    |-- imx6ull9x9evk.conf
    |-- imx6ulz14x14evk.conf
    |-- imx7d12x12lpddr3arm2.conf
    |-- imx7dsabresd.conf
    |-- imx7ulpevk.conf
    |-- imx8_all.conf
    |-- imx8dxlphantommek.conf
    |-- imx8mmddr3lval.conf
    |-- imx8mmddr4evk.conf
    |-- imx8mmddr4val.conf
    |-- imx8mmevk.conf
    |-- imx8mmlpddr4evk.conf
    |-- imx8mnevk.conf
    |-- imx8mqevk.conf
    |-- imx8qmddr4arm2.conf
    |-- imx8qmlpddr4arm2.conf
    |-- imx8qmmek.conf
    |-- imx8qxplpddr4arm2.conf
    |-- imx8qxpmek.conf
    `-- include               // Machine Layer 공통사항 Include  

$ ls meta-fsl-bsp-release/imx/meta-bsp/  // 상위 layer.conf에 때문에 Recipe 동작 
classes  recipes-bsp           recipes-core      recipes-graphics  recipes-multimedia  recipes-support  wic
conf     recipes-connectivity  recipes-devtools  recipes-kernel    recipes-security    recipes-utils


User Conf의 MACHINE 설정 과 Machine Layer 선택
  https://ahyuo79.blogspot.com/2020/02/yocto-user-configuration.html 

  • BSP Layer 의 conf/layer.conf 설정 
상위에서 구현된 일반 Layer와 거의 유사하며, 다만 특정 값들을 설정 
  1. BBMASK를 이용하여 Recipe들을 제외
  2. HOSTTOOLS 관련설정을 별도로 진행 및 DISTRO 관련설정 
$ vi meta-fsl-bsp-release/imx/meta-bsp/conf/layer.conf   // Recipe 관리목적 
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have a packages directory, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
            ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "fsl-bsp-release"
BBFILE_PATTERN_fsl-bsp-release := "^${LAYERDIR}"
BBFILE_PRIORITY_fsl-bsp-release = "8"
LAYERSERIES_COMPAT_fsl-bsp-release = "warrior"

HOSTTOOLS_NONFATAL_append = " bc sha384sum xxd"

# Enable optee for all builds using this layer, assuming the machine supports it.
# To remove optee from the build, add the following line to local.conf:
# DISTRO_FEATURES_remove = "optee"
# DEPRECATED: The ability to remove optee from the build is deprecated and
# will be removed in some future release.
DISTRO_FEATURES_append = " optee"

DISTRO_FEATURES_FILTER_NATIVESDK += "wayland"

BBMASK += "meta-freescale/recipes-graphics/wayland/weston-init.bbappend"



  • BSP Layer의 include Machine Layer 
Machine이 여러개이므로, 공통사항들의 설정을 공유하며, 내부적으로 또 공통사항을 Include함
$ vi meta-fsl-bsp-release/imx/meta-bsp/conf/machine/include/imx6sabresd-common.inc
# Provides the i.MX6 SABRE SD common settings

## meta-fsl-bsp-release/imx/meta-bsp/conf/machine/include/imx-base.inc 존재
## meta-fsl-bsp-release/imx/meta-bsp/conf/machine/include/tune-cortexa9.inc 없음 (현재 필요없음)
#
## 아래의 require 파일들을 보면 WIC/WKS 를 비롯하여 UBOOT/KERNEL/IMAGE 설정 다양한 정보를 확인가능
## SOC_DEFAULT_WKS_FILE / WKS_FILE_DEPENDS / WKS_FILE / KERNEL_IMAGETYPE 
require conf/machine/include/imx-base.inc
require conf/machine/include/tune-cortexa9.inc

SERIAL_CONSOLES = "115200;ttymxc0"

MACHINE_FIRMWARE_append_mx6 = " linux-firmware-ath6k"

MACHINE_FEATURES += " pci wifi bluetooth bcm4339 bcm43455"



  • BSP Layer의 Machine Layer 
MACHINE에 의해 설정이 되며, 다시 MACHINE의 OVERRIDES 기능을 제공하여 변수선택
$ vi meta-fsl-bsp-release/imx/meta-bsp/conf/machine/imx6sxsabresd.conf

## OVERRIDES 기능설정 mx6 과 mx6sx로 설정되며 이는 아래의 include에 영향을 미침 
## 아래와 같이 mx6x or mx6으로 변수설정 (conf/machine/include/imx-base.inc)
#
## UBOOT_ENTRYPOINT_mx6  = "0x10008000"
## UBOOT_ENTRYPOINT_mx6sx = "0x80008000" 
#
## MACHINEOVERRIDES_EXTENDER_mx6sx  = "imxfbdev:imxpxp:imxgpu:imxgpu2d:imxgpu3d" 
## MACHINE_SOCARCH_SUFFIX_mx6sx = "-mx6sx" 
## MACHINE_EXTRA_RRECOMMENDS_append_mx6sx = " ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'imx-alsa-plugins', '', d)}"
## MACHINE_GSTREAMER_1_0_PLUGIN_mx6sx = "imx-gst1.0-plugin" 
MACHINEOVERRIDES =. "mx6:mx6sx:"

## 상위 include/imx6sabresd-common.inc 참고 
require conf/machine/include/imx6sabresd-common.inc

## KERNEL DEVICE TREE 설정 (UBOOT의 DEVICE TREE는 해당안됨) 
KERNEL_DEVICETREE = "imx6sx-sdb.dtb imx6sx-sdb-emmc.dtb imx6sx-sdb-m4.dtb \
                     imx6sx-sdb-sai.dtb imx6sx-sdb-lcdif1.dtb imx6sx-sdb-ldo.dtb \
                     imx6sx-sdb-reva-ldo.dtb imx6sx-sdb-reva.dtb \
                     imx6sx-sdb-btwifi.dtb imx6sx-sdb-mqs.dtb"

MACHINE_FEATURES_append = " optee"

## 보통아래와 같이 사용 uboot-config.bbclass
##     UBOOT_CONFIG ??= 
##     UBOOT_CONFIG[foo] = "config,images"
#
## UBOOT_CONFIG = emmc 이면 아래의 Kernel Config 설정 
UBOOT_CONFIG ??= "${@bb.utils.contains('COMBINED_FEATURES', 'optee', 'sd-optee', 'sd', d)}"
UBOOT_CONFIG[sd] = "mx6sxsabresd_config,sdcard"
UBOOT_CONFIG[emmc] = "mx6sxsabresd_emmc_config,sdcard"
UBOOT_CONFIG[qspi2] = "mx6sxsabresd_qspi2_config"
UBOOT_CONFIG[m4fastup] = "mx6sxsabresd_m4fastup_config"
UBOOT_CONFIG[mfgtool] = "mx6sxsabresd_config"
UBOOT_CONFIG[sd-optee] = "mx6sxsabresd_optee_config,sdcard"

OPTEE_BIN_EXT = "6sxsdb"

KERNEL_DEVICE_TREE

UBOOT
  https://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html#ref-classes-uboot-config



1.3 Distro Layer 분석 및 확인

일반 Layer 구성방법은 비슷하여 conf/layer.conf 구성후  DISTRO 값에 따라 별도로 Distro Layer 가 설정된다
DISTRO 값이 빈 값이면, poky/meta/conf/distro/defaultsetup.conf 사용한다함  

동일하게 Distro Layer의 구성확인
$ cd sources      // Yocto Sources 이동

$ tree -t -L 2 --charset unicode ./meta-fsl-bsp-release/imx/meta-sdk/conf/
./meta-fsl-bsp-release/imx/meta-sdk/conf/
|-- layer.conf
`-- distro
    |-- fsl-imx-fb.conf   // DISTRO 값에 의해 설정  
    |-- fsl-imx-wayland.conf
    |-- fsl-imx-x11.conf
    |-- fsl-imx-xwayland.conf
    |-- imx-wayland-ivi.conf
    `-- include

$ tree -t -L 2 --charset unicode ./meta-fsl-bsp-release/imx/meta-sdk/conf/distro
./meta-fsl-bsp-release/imx/meta-sdk/conf/distro
|-- fsl-imx-fb.conf      
|-- fsl-imx-wayland.conf
|-- fsl-imx-x11.conf
|-- fsl-imx-xwayland.conf
|-- imx-wayland-ivi.conf
`-- include
    |-- fsl-imx-base.inc    // DISTRO Layer 확장  
    `-- fsl-imx-preferred-env.inc

User Conf의 DISTRO 설정 과 Distro Layer 선택
  https://ahyuo79.blogspot.com/2020/02/yocto-user-configuration.html 
  


$ vi ./meta-fsl-bsp-release/imx/meta-sdk/conf/layer.conf  // 일반 Layer (Recipe 관리, 상위설명참조)
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have a packages directory, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
            ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "fsl-sdk-release"
BBFILE_PATTERN_fsl-sdk-release := "^${LAYERDIR}"
BBFILE_PRIORITY_fsl-sdk-release = "8"
LAYERSERIES_COMPAT_fsl-sdk-release = "warrior"

# Add warrior to LAYERSERIERS_COMPAT for genivi layers until warrior branch
# is created in upstream
LAYERSERIES_COMPAT_ivi_append = " warrior"
LAYERSERIES_COMPAT_ivitest_append = " warrior"
LAYERSERIES_COMPAT_ivibsp_append = " warrior"

BBFILES_DYNAMIC += " \
    browser-layer:${LAYERDIR}/dynamic-layers/browser-layer/*/*/*.bb \
    browser-layer:${LAYERDIR}/dynamic-layers/browser-layer/*/*/*.bbappend \
    \
    openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bb \
    openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bbappend \
    \
    qt5-layer:${LAYERDIR}/dynamic-layers/qt5-layer/*/*/*.bb \
    qt5-layer:${LAYERDIR}/dynamic-layers/qt5-layer/*/*/*.bbappend \
    \
    ivi:${LAYERDIR}/dynamic-layers/ivi/*/*/*.bb \
    ivi:${LAYERDIR}/dynamic-layers/ivi/*/*/*.bbappend \
    \
    ivitest:${LAYERDIR}/dynamic-layers/ivitest/*/*/*.bb \
    ivitest:${LAYERDIR}/dynamic-layers/ivitest/*/*/*.bbappend \
"
BBMASK += "meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend"
BBMASK += "meta-freescale-distro/recipes-fsl/packagegroups/packagegroup-fsl-tools-gpu-external.bb"
BBMASK += "meta-ivi/meta-ivi/recipes-graphics/wayland/weston_%.bbappend"


  • Distro Layer 
User Config의 DISTRO에 의해서 설정되었으며, DISTRO_FEATURES LIST 중 기능을 삭제
$ vi ./meta-fsl-bsp-release/imx/meta-sdk/conf/distro/fsl-imx-fb.conf
# i.MX DISTRO for the FrameBuffer graphical backend.

include conf/distro/include/fsl-imx-base.inc
include conf/distro/include/fsl-imx-preferred-env.inc

DISTRO = "fsl-imx-fb"

# Remove conflicting backends.
DISTRO_FEATURES_remove = "x11 wayland directfb "

DISTRO_FEATURES 에서 사용되는 LIST
  https://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#ref-features-distro

  • Distro Layer (Include)  
상위에서 include 된 공통사항
$ vi ./meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-base.inc
DISTRO = "fsl-imx"
DISTRO_NAME = "NXP i.MX Release Distro"
DISTRO_VERSION = "4.19-warrior"

DISTRO_CODENAME = "warrior"
SDK_VENDOR = "-pokysdk"
SDK_VERSION := "${DISTRO_VERSION}"
#SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"

MAINTAINER = "NXP "

TARGET_VENDOR = "-poky"

LOCALCONF_VERSION = "1"

IMX_DEFAULT_DISTRO_FEATURES = "opengl ptest multiarch"
# Enable vulkan distro feature only for mx8
IMX_DEFAULT_DISTRO_FEATURES_append_mx8 = " vulkan"
# Enable jailhouse distro feature only for mx8m
IMX_DEFAULT_DISTRO_FEATURES_append_mx8m = " jailhouse"
IMX_DEFAULT_EXTRA_RDEPENDS = "packagegroup-core-boot"
IMX_DEFAULT_EXTRA_RRECOMMENDS = "kernel-module-af-packet"

BBMASK += "poky/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb"

DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC} ${IMX_DEFAULT_DISTRO_FEATURES}"

SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}"

DISTRO_EXTRA_RDEPENDS += " ${IMX_DEFAULT_EXTRA_RDEPENDS}"
DISTRO_EXTRA_RRECOMMENDS += " ${IMX_DEFAULT_EXTRA_RRECOMMENDS}"

TCLIBCAPPEND = ""
.....중략....

$ vi ./meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc

# Set the preffered provider for opencl-headers
PREFERRED_PROVIDER_opencl-headers_imx = "imx-gpu-viv"

PREFERRED_VERSION_gstreamer1.0-plugins-base = "1.16.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-bad  = "1.16.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-good = "1.16.0.imx"
PREFERRED_VERSION_gstreamer1.0              = "1.16.0.imx"

# Use systemd as default init manager
VIRTUAL-RUNTIME_init_manager = "systemd"
PREFERRED_PROVIDER_udev = "systemd"
"./meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc" 58L, 2420C                                                1,1           Top
# Use i.MX Kernel, U-Boot and Gstreamer 1.0 providers
PREFERRED_PROVIDER_virtual/bootloader_imx = "u-boot-imx"
#PREFERRED_PROVIDER_virtual/bootloader_mx6 = "u-boot-imx"
#PREFERRED_PROVIDER_virtual/bootloader_mx6ul = "u-boot-imx"
#PREFERRED_PROVIDER_virtual/bootloader_mx6sll = "u-boot-imx"
#PREFERRED_PROVIDER_virtual/bootloader_mx7d = "u-boot-imx"
#PREFERRED_PROVIDER_virtual/bootloader_mx7ulp = "u-boot-imx"

PREFERRED_PROVIDER_virtual/kernel_imx = "linux-imx"
#PREFERRED_PROVIDER_virtual/kernel_mx6 = "linux-imx"
#PREFERRED_PROVIDER_virtual/kernel_mx6ul = "linux-imx"
#PREFERRED_PROVIDER_virtual/kernel_mx6sll = "linux-imx"
#PREFERRED_PROVIDER_virtual/kernel_mx7d = "linux-imx"
#PREFERRED_PROVIDER_virtual/kernel_mx7ulp = "linux-imx"
#PREFERRED_PROVIDER_virtual/kernel_imx7ulp_zebu = "linux-imx"

PREFERRED_VERSION_linux-libc-headers_imx ?= "4.19"

# Extra audio support
# Add support for ALL i.MX6/7/8 SoC families
MACHINE_EXTRA_RRECOMMENDS_append_imx = " ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'imx-alsa-plugins', '', d)}"

# Default toolchains used in testing i.MX BSPs
DEFAULTTUNE_mx6   = "cortexa9hf-neon"
DEFAULTTUNE_mx6ul = "cortexa7hf-neon"
DEFAULTTUNE_mx6sll = "cortexa9hf-neon"
DEFAULTTUNE_mx7d   = "cortexa7hf-neon"
DEFAULTTUNE_mx7ulp = "cortexa7hf-neon"
DEFAULTTUNE_mx8 = "aarch64"

# Enable the kenrel loadable module as default
USE_GPU_VIV_MODULE = "1"

IMX_GPU_VERSION            ?= "6.4.0.p1.0"
IMX_GPU_VERSION_SUFFIX      = "aarch32"
IMX_GPU_VERSION_SUFFIX_mx8  = "aarch64"

PREFERRED_VERSION_imx-gpu-viv               = "${IMX_GPU_VERSION}-${IMX_GPU_VERSION_SUFFIX}"
PREFERRED_VERSION_kernel-module-imx-gpu-viv = "${IMX_GPU_VERSION}"
PREFERRED_VERSION_imx-gpu-g2d               = "${IMX_GPU_VERSION}"

# Set the preffered provider for opencl-headers
PREFERRED_PROVIDER_opencl-headers_imx = "imx-gpu-viv"

PREFERRED_VERSION_gstreamer1.0-plugins-base = "1.16.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-bad  = "1.16.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-good = "1.16.0.imx"
PREFERRED_VERSION_gstreamer1.0              = "1.16.0.imx"

# Use systemd as default init manager
VIRTUAL-RUNTIME_init_manager = "systemd"
PREFERRED_PROVIDER_udev = "systemd"
PREFERRED_PROVIDER_udev-utils = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
IMX_DEFAULT_DISTRO_FEATURES += " systemd"

SOC_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT_mx6 = "1"
SOC_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT_mx7ulp = "1"


3.1.1. Creating Your Own Layer
  https://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#creating-your-own-distribution


2. Yocto의 Layer 추가 방법 


  • Yocto에서 제공해주는 Layer 검색 (중요)
Openembedded Site에서 제공해주고 있는 Layer들로 이곳에서 검색 후 이 git으로 download를 하면 쉽게 추가가능