Versions Compared

Key

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

...

For more details on getting RDK-B ported to an OEM a SoC device, please refer the links RDK-B SoC Specific Porting and Guideline for SoC and OEM Vendors

SoC/OEM meta-layer creation

To match the layered structure of Yocto builds, a SoC specific layer is used to include SoC changes and additions. Use the yocto-layer create sub-command to create a new general layer.

...

There shall be separate device (machine) configuration file (.conf) for each device for the particular chip family for which the layer is intended for. The general naming terminology for SoC layer is meta-rdk-SoC-<SoC name>

The device (machine) configuration file shall include corresponding include (.inc) file to get machine configuration details.

...

title Click here for more details on SoC/OEM meta-layer creation

Adding a new machine to Yocto involves the following:

Create a new layer which will hold all the recipes and machine configurations for the new SoC/OEM

yocto-layer command is not enabled by default,  If you want to add a new layer using the "yocto-layer" script, you need to first download the poky and put it in your code base and run the script to create a new folder.

You can download poky from git using :               

$  git clone https://github.com/seife/yocto-poky.git 

Use the yocto-layer create sub-command to create a new general layer.

...

Please enter the layer priority you'd like to use for the layer: [default: 6] 6
Would you like to have an example recipe created? (y/n) [default: n] n
Would you like to have an example bbappend file created? (y/n) [default: n] n
New layer created in meta-new-layer.

There shall be separate device (machine) configuration file (.conf) for each device for the particular chip family for which the layer is intended for.

...

for SoC layer is meta-rdk-SoC-<SoC name>

The device (machine) configuration file shall include corresponding include (.inc) file to get machine configuration details.


Expand
title Click here for more details on SoC/OEM meta-layer creation

Adding the Machine Configuration File for the new SoC/OEM

To add a machine configuration, you need to add a .conf file with details of the device being added to the conf/machine/ file.

The most important variables to set in this file are as follows:

  • TARGET_ARCH (e.g. "arm")
  • PREFERRED_PROVIDER_virtual/kernel (see below)
  • MACHINE_FEATURES

You might also need these variables:

  • KERNEL_IMAGETYPE (e.g. "zImage")
  • IMAGE_FSTYPES (e.g. "tar.gz")
  • The default configuration is defined in meta-rdk/conf/distro/rdk.conf and it should be overwritten by the machine specific conf file.

Adding a Kernel for the Machine

The OpenEmbedded build system needs to be able to build a kernel for the machine. We need to either create a new kernel recipe for this machine, or extend an existing recipe.We can find several kernel examples in the source

The directory at meta/recipes-kernel/linux that you can use as references. If you are creating a new recipe, following steps need to be done,

  • Setting up a SRC_URI.
  • Specify any necessary patches
  • Create a configure task that configures the unpacked kernel with a defconfig.

If you are extending an existing kernel, it is usually a matter of adding a suitable defconfig file. The file needs to be added into a location similar to defconfig files used for other machines in a given kernel.

A possible way to do this is by listing the file in the SRC_URI and adding the machine to the expression in COMPATIBLE_MACHINE:

  • COMPATIBLE_MACHINE = '(qemux86|qemumips)'

Adding Recipe for SoC/OEM

The following kind of recipes can be added to SoC/OEM layer. The recipes shall be grouped as described in slide “BSP Reference Layer”

  • recipes (.bb) to build Kernel
  • recipes(.bb)  to build SDK
  • Kernel patches (SoC/OEM specific - if any)
  • SDK patches (SoC/OEM specific - if any)
  • Any SoC/OEM specific scripts or files which need to be installed in RF

Creating packages for building images 

Create a custom packagegroup for the SoC/OEM which shall list all the recipes that are required for this image.

For example, the following recipe can be appended to the broadband package group.

meta-rdk-soc-<soc>/meta-<processor_name>/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend:
RDEPENDS_packagegroup-rdk-ccsp-broadband_append += " \
    ccsp-cr \
    rsync \
    utopia \
    lighttpd \
.
.
.
"


Create a custom image for required SoC/OEM. For example:

meta-rdk-<soc>/meta-<processor_name>/recipes-core/images/<image>.bb:
IMAGE_INSTALL += " \
    packagegroup-<soc/oem specific packages> \
    "
"

Adding your own custom layer

Use the yocto-layer create sub-command to create a new layer.

$ yocto-layer create newlayer

Add this to ./meta-rdk/conf/bblayers.conf.sample.

Recipes can be placed inside recipes-< > folders. There can be a configuration file inside conf/ for layer specific configuration and classes folder for keeping information that is useful to share between metadata files.

...

RDKM offers an in-house Test & certification suite that facilitates that facilitates SoCs to get their IP Set-top product certified as RDK Compliant device.

...

Artifactory server can be accessed by adding the Artifactory details and login credentials in the .netrc file, just like it is done for normal git repositories. A sample is given below:

machine your.artifactory.host
login YOUR_ARTIFACTORY_USERNAME
password YOUR_PASSWORD_OR_KEY_OR_TOKEN

Complete source code

In this approach, SoC vendor can define a HAL layer, share the source of HAL , yocto meta layer and SDK source code that can be stored in RDK CMF Git repository( which will be shared only  to authorized OEM vendors who will work in collaboration with the SoC vendor )  and then publish necessary documentation on how to build the SoC SDK. SoC vendor can use the git for periodic update ( for releases ) or for bug fixes. All the source code and documentation will be strictly access restricted and access will be allowed only for authorized personnel by SoC vendor.

...