How Yocto integrated in RDK

Created on January 20, 2020

RDK adopted Yocto build framework over legacy build systems after considering many of its advantages such as:

  • Easy migration to different hardware platform
  • Reduces the build time
  • Supports major embedded architectures
  • Provides a layered mechanism
  • Easy to extend the configuration
  • Reduce the cost of development
  • RDK wanted to have a common infrastructure which supports multiple architectures
  • Standard Distribution and tools
  • Focus on specific product features and development.
  • Its looking for a scalable system to meet the RDK community needs.
  • Collaborate on open source infrastructure.

RDK Yocto Layer Structure

The below diagram shows the Yocto layer structure designed to build RDK stack. Layer definition is present in build/conf/bblayers.conf



MSO specific recipes and configuration to be placed in

  • meta-rdk-<mso-name>

OEM specific recipes and configuration to be placed in

  • meta-rdk-oem-<oem-name>

SoC specific recipes and configuration to be placed in

  • meta-rdk-soc-<soc-name> 

BSP layer and associated recipes:

  • meta-rdk-bsp-<soc-bsp-layer> – example: meta-rdk-broadcom
  • meta-rdk-bsp–<oem-bsp-layer> – example: meta-rdk-pace
  • meta-rdk-bsp-skeleton – This is a sample BSP layer implementation
  1. recipes-bsp : Contains board specific recipes, for example OpenGL, Driver Specific on Board
  2. recipes-kernel : Contains recipes for machine specific kernel and drivers
  3. recipes-core : Contains recipes for modules like busybox, mtdtools, jpeg, etc.
  4. recipes-devtools : Machine specific developments tools like bison etc.
  5. recipes-extended : Machine specific RDK components, ex: iarmmgrs, mediaplayer, dshalapp etc.
  6. recipes-multimedia : Machine specific multimedia components like gstplayer, framebufffer etc.
  7. recipes-qt : Recipes related to SoC provided Qt and its components like Qt google browser, etc.
  8. recipes-support : Board specific support components like remote control libs etc.

Generic Yocto layers

The generic yocto layers are needed along with the BSP layer for the build. They are:

  • meta-openembedded
  • meta-rdk
  • meta-java
  • meta-virtualization
  • openembedded-core
  • meta-linaro (for toolchain cross compilation – ARM only)
  • meta-qt5 (generic qt layer)

RDK Meta-layers

meta-rdk:

  • Distribution policies(modeled from Poky)
  • Common RDK component recipes

meta-cmf:

  • Common RDK component recipe append files & patches
  • Overrides the meta-rdk recipes

meta-rdk-bsp-emulator:

  • Boards support layer
  • Contains qemux86hyb and qemux86mc machines
  • Reference for porting
  • Create meta-rdk-bsp delta layers for existing BSPs

meta-cmf-bsp-emulator:

  • Contains RDK component recipe append files & patches, which are required for RDK PC emulator

SoC Layer

Contents of SoC layer shall be

  • recipes (.bb) to build Kernel
  • recipes(.bb)  to build SDK
  • Kernel patches (SoC specific – if any)
  • SDK patches (SoC specific – if any)
  • Any SoC specific scripts or files which need to be installed in RFS
  • Same SoC layer can be integrated with different OEM layers

OEM Layer

Contents of OEM layer shall be

  • recipes(.bbappend) to build Kernel if there is any OEM specific configuration or patch is required. It shall be a .bbappend file of corresponding recipe file in SoC layer
  • recipes(.bbappend) to build SDK if there is any OEM specific configuration or patch is required.. It shall be a .bbappend file of corresponding recipe file in SoC layer
  • recipes(.bb) for packaging the images
  • Kernel patches (OEM specific – if any)
  • SDK patches (OEM specific – if any)
  • Any OEM specific scripts or files which need to be installed in RFS
  • Device(machine) configuration file(.conf)

Separate layers must be available for an OEM, if different SoCs are used
“meta-rdk-oem-OEM-X-SOC-Y”,”meta-rdk-oem-OEM-X-SOC-Z“, etc.

The SoC / OEM layer shall NOT contain

  • Source code
  • Binaries
  • Tools
  • Tar balls (of any of the above)

Bitbake work-flow

  • All the components are built using individual recipes. There shall be a main image recipe (example , rdk-generic-image) which includes all other required recipe and create the final RFS
  • Package groups recipe is one support a image recipe to select the set of packages
  • The recipes will be called in sequence
    (1) opensource components
    (2) Kernel
    (3) SDK
    (4) RDK
    (5) MSO
    (6) Packaging and create final image.
  • The final linux and RFS  image will be created under build_folder/tmp/deploy/images

RDK Package Groups

  • packagegroup-rdk-baserootfs – contains common generic RDK OSS components.
  • packagegroup-rdk-oss-mediaserver – contains OSS components specific to media server
  • packagegroup-rdk-oss-mediaclient – contains OSS components specific to mediaclient
  • packagegroup-rdk-media-common – contains common RDK (non-OSS) components for mediaclient, mediaserver build types.
  • packagegroup-rdk-generic-mediaserver – contains mediaserver specific RDK components
  • packagegroup-rdk-generic-mediaclient – contains mediaclient specific RDK components

RDK Yocto Images

Yocto build Image target names roughly look like  <RDK vendor>-<profile>-<build-type>-<developer>-image


0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
Go To Top