Tables of Contents

1. Yocto Build

1.1. Host Machine Setup

Hardware requirements:

  • Ubuntu 18.04 desktop machine
  • RAM - 8 GB or more
  • Memory - a minimum of 100 GB free space

Refer to the link for host machine setup: Host Setup

1.2. Yocto workspace setup

build setup
repo init -u https://code.rdkcentral.com/r/manifests -b dunfell -m rdkv-extsrc.xml
repo sync -j `nproc` --no-clone-bundle --no-tags
apply bug fixes
# fix to use eSDK with pinned revision of RDK components
(cd meta-rdk; git fetch https://code.rdkcentral.com/r/components/generic/rdk-oe/meta-rdk refs/changes/58/53258/1 && git checkout FETCH_HEAD)

Note: The above bug fixes changes are temporary given as instructions. This is not required once the change is get merged into the appropriate layer.

1.3. Populate eSDK

    image build
    MACHINE=raspberrypi-rdk-mc source meta-cmf-raspberrypi/setup-environment
    bitbake rdk-generic-mediaclient-wpe-image -c populate_sdk_ext
    image build
    MACHINE=raspberrypi-rdk-hybrid source meta-cmf-raspberrypi/setup-environment
    bitbake rdk-generic-hybrid-wpe-image -c populate_sdk_ext

    The generated eSDK installer resides under the directory build-<MACHINE>/tmp/deploy/sdk/rdk-glibc-x86_64-arm-toolchain-ext-2.0.sh of the Yocto workspace.

    Note: The generated eSDK installer script usually occupies 2 to 2.5 GB

    2. eSDK Installation

    The installer can be done on any x86_64 Linux machines.

    2.1. Host Configuration

    Refer to the RDKCentral's credential configuration to setup RDK Central's credentials in the machine where eSDK to be installed. This is to access repositories by the RDK Yocto recipes that reside in the eSDK installer.

    2.2. Installation

    # run the installer script file
    # installer asks for a directory to install (default directory ~/rdk_sdk)
    # installer asks permission to proceed
    ./rdk-glibc-x86_64-arm-toolchain-ext-2.0.sh

    Below is the result (terminal output) of the installation

    xxxuser@yyy-machine-003:~/rpi/hyb/1712$ build-rpi-hyb/tmp/deploy/sdk/rdk-glibc-x86_64-arm-toolchain-ext-2.0.sh
    RDK (A Yocto Project based Distro) Extensible SDK installer version 2.0
    =======================================================================
    Enter target directory for SDK (default: ~/rdk_sdk):
    You are about to install the SDK to "/home/xxxuser/rdk_sdk". Proceed [Y/n]? Y
    Extracting SDK................................................................................................................done
    Setting it up...
    Extracting buildtools...
    Preparing build system...

    Parsing recipes: 100% |##################################################################| Time: 0:00:52

    Initialising tasks: 100% |###############################################################| Time: 0:00:00

    Checking sstate mirror object availability: 100% |#######################################| Time: 0:00:00

    Loading cache: 100% |####################################################################| Time: 0:00:00

    Initialising tasks: 100% |###############################################################| Time: 0:00:00

    done

    SDK has been successfully set up and is ready to be used. Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.

        $ . /home/xxxuser/rdk_sdk/environment-setup-cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi

    SDK Installation Done.

    3. Build from eSDK

    This section covers how to use the eSDK for component build and image build

    3.1. Environment Setup

    The installer can be run on any x86_64 Linux based machines.

    # change directory to the installed path
    cd ~/rdk_sdk
    # setup the eSDK environemnt
    source environment-setup-cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi

    3.2. New Components

    3.2.1. Add Component

    # way 1
    # add a new recipe with URL
    devtool add <recipe_name> <source URL>
    # eg. devtool add westeros https://github.com/rdkcmf/westeros
    
    # way 2
    # add a new recipe with external source directory
    devtool add <recipe_name> <absolute path>
    # eg. devtool add westeros /path/for/source/directory

    3.2.2. Modify Component

    # modify existing recipe's URL or srctree or to add patches
    devtool modify <recipe_name> <new URL>
    # eg. devtool modify westeros https://code.rdkcentral.com/r/rdk/components/generic/westeros

    3.2.3. Edit Component's recipe

    # modify recipe from an editor
    devtool edit-recipe <recipe_name>
    # eg. devtool edit-recipe westeros

    3.2.4. Upgrade Component

    # modify existing recipe's URL or srctree or to add patches
    devtool upgrade --version <version number> <recipe_name>
    # eg. devtool upgrade --version 1.0.21 westeros

    3.3. Build Components

    # Pre-requisite: add a new recipe using devtool
    devtool build <recipe_name>
    # eg. devtool build westeros

    3.4. Deploy binaries

    # Pre-requisite: add a new recipe using devtool
    devtool deploy-target <recipe_name> <target_path>
    # eg. devtool deploy-target westeros root@192.168.xx.xx

    3.5. Build Image

    A complete RDK image can be generated from the eSDK installer.

    Note: The same image where the eSDK populated can be generated here.

    # devtool command to build image from eSDK
    # <IMAGE> - rdk-generic-mediaclient-wpe-image or rdk-generic-hybrid-wpe-image
    devtool build-image <IMAGE>

    1 Comment

    1. Hi All,

      Find the below link it is a

      devtool reference link

      I am able to do above all features in devtool

      https://wiki.yoctoproject.org/wiki/Application_Development_with_Extensible_SDK