Versions Compared

Key

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

...

Expand
title How to create user accounts for SoC Members

SoC users can sign up at https://wiki.rdkcentral.com/signup.action to create a user account in RDK. For any issues faced, a mail can be sent to support@rdkcentral.com

Expand
title How to get access to the collaboration zone/repo

An INFRA ticket needs to be raised at https://jira.rdkcentral.com with the below details:

  • Collaboration zone/repo name
  • User name and the mail id's of the members to whom the access is needed
  • SoC collaboration zone/repo owner name

For any issues faced, a mail can be sent to support@rdkcentral.com

Expand
title How to create a JIRA project for SoC

An INFRA ticket needs to be raised at https://jira.rdkcentral.com to create a JIRA project for SoC. Once approvals are received along with required access restrictions, the project will be created. For any issues faced, a mail can be sent to support@rdkcentral.com

Expand
titleHow to create a Git/ Github repository for meta layers or manifests or HAL layers

To get a Git repository a request needs to be raised to CMF team using the CMFSUPPORT ticket at https://jira.rdkcentral.com. Once approvals are received along with required access restrictions, the repo will be created. Any changes in merge permissions can be requested in same ticket. For creating any specific branches in the repo, another ticket in the same CMFSUPPORT can be raised. For any issues faced, a mail can be sent to support@rdkcentral.com

Once the git repo is created, it can be accessed at https://code.rdkcentral.com

Expand
title How to get access to SoC SDK Artifacts

An INFRA ticket needs to be raised at https://jira.rdkcentral.com to get access to SDK Artifacts. Once approvals are received along with required access restrictions, the access should be in place. For any issues faced, a mail can be sent to support@rdkcentral.com

Click here for more details such as creating collaboration zone, creating user accounts for SoC Members, creating a JIRA project for SoC etc.


Product Engineering

Once the product features are decided, the device engineering can be started. SoC needs to decide on the hardware layout that incorporates components to the target board. Device will be categorized as Low Profile and High Profile device based on the hardware capabilities. In a low profile device 4k support might be optional but it is expected to have 4k support in high profile device.

Sample Reference Flash Layout (Optional) :

<need to add table-discuss>

SoC Platform Firmware

SoC can make use of the below details available to start developing a Yocto build to engineer the device firmware builds based on RDK Yocto build setup.

...

Yocto based RDK builds are flexible enough to easily accommodate SoC / OEM / MSO / third party changes. The starting point for the Yocto builds are a manifest file. The manifest file is an xml file that contains details of the different open embedded Yocto build layers, meta layers , rdk as well as open source components that needs to be fetched during initial stages ( than during bitbake time ) as well as the URL locations from where the data can be pulled. A set of sample manifests that can be used as a template for developing SoC specific manifests are given below Click


Expand
title Click here for more details on Yocto Manifests

...

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

SoC/OEM meta-layer creation

...

#

File

Remarks

1

Device Specific Manifest

This is the starting point of the build and is specific to a device/board . If the SoC has only one  target device /board, still it is recommended to maintain a different manifest for SoC for keeping it future-proof. Usually it contains references to other manifest files which will be having  specific set of repos

2

SoC manifest

This manifest contains meta layer details of SoC and , optionally, some SoC specific repos

3

OE layers manifest

This manifest has details of the basic Yocto Open Embedded layers

4

RDK-V manifest

This manifest can contain meta layers specific to RDK & RDK-V and , for EXTERNALSRC cases, the RDK & RDK-V component repo details too. It might be supplemented with a conf file too

5

Third Party Apps manifest

This manifest can contain meta layers related to Premium streaming applications which are chosen by SoC

The default manifest repo in RDKM Git is at https://code.rdkcentral.com/r/#/c/manifests/ . SoC can use the 'collaboration' sub section in this repo to add their platform specific manifests which will be under collaboration zone restrictions . The location will be https://code.rdkcentral.com/r/collaboration/SoC/<platform>/<platform-manifests>

For more details on getting RDK-B ported to an OEM 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.

$ yocto-layer create mylayer

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.


Expand
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.

$ yocto-layer create mylayer <specify the layer which you need to be created>

Eg :

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 Eg : A layer "meta-rdk-oem-OEM-X-SOC-Y" means this layer shall be able to build any devices manufactured by  OEM "X" with all variants of SoC "Y" like Y-1,Y-2 etc

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

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.

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.

...


TDK and RDK Certification Suite Package

...