RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
SoC vendors are advised to get into an agreement with RDK Management LLC to obtain the free license so as to use the complete RDK Code base in their platform. More details about the licenses are available at https://rdkcentral.com/licenses/ . Please email info@rdkcentral.com if you have additional questions about licenses or membership
This section will detail the recommended step by step procedure of adopting RDK by a SoC
The first step to getting a fully functional product is to define the product features and see if they meet the standard requirements. See here to know what are all the features available in RDK-B and can implement based on your requirement. SoC can use this as a guide while engineering the RDK SoC platform.
RDKM provides a collaboration zone facility for SoCs to facilitate easier engineering of RDK based devices. The collaboration zone will help SoCs to work with OEMs, RDKM, and any 3rd party along with a common space to develop & integrate, manage and verify the device. The zone includes facilities for code management, a confluence-based RDK Wiki for knowledge management & sharing, a JIRA for tracking activity progress, issues as well as to manage the activities, a test setup to validate devices. The access restrictions implemented will help the collaboration zone to be accessible only for the authorized personnel thereby guarding any sensitive information related to SoC/OEM/Third party.
A table explaining the roles & responsibilities of SoC & RDKM in the collaboration zone is given below:
# | Activity | Owner | Remarks |
---|---|---|---|
1 | RDKM | RDKM will setup Collaboration space, access restrictions | |
2 | SoC | JIRA project. SoC will be the owner of the JIRA project | |
3 | SoC/RDKM | RDKM will create the space and SoC push the code changes | |
4 | SoC | Create necessary device specific HAL implementation for porting RDK into Accelerator | |
5 | SoC | Details which SDK version is to be used. RDKM will support the integration with SoC libraries | |
6 | SoC | Manifest for building the accelerator | |
7 | UI | RDKM/SoC | Comes with pre-integrated UI’s, SoC and RDKM will discuss on the default UI |
8 | Create RDK build from CMF GIT | SoC/ RDKM | Both teams work together to build Accelerator from CMF |
9 | Provide Devices to RDKM team | SoC | |
10 | Device flashing instructions/recovery mechanisms | SoC | SoC should share the device flashing instruction |
11 | RDKM/SoC | RDK Certification Suite | |
12 | Monthly release & tagging | SoC | Monthly tagging and release with stakeholders along with test results |
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. The device will be categorized either as a home broadband device or a business gateway.
SoC can make use of the below details available to start developing a Yocto build to engineering 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 is 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 need 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
The default manifest repo in RDKM Git is at https://code.rdkcentral.com/r/#/c/manifests/ . SoC can use the 'collaboration' subsection 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 a SoC device, please refer RDK porting guide to SoC vendors .
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 a separate device (machine) configuration file (.conf) for each device for the particular chip family for which the layer is intended. The general naming terminology for the SoC layer is meta-rdk-SoC-<SoC name>
The device (machine) configuration file shall include the corresponding include (.inc) file to get machine configuration details.
RDKM offers an in-house Test suite that facilitates SoCs to get their devices tested for their features.
For more details on TDK refer: TDK-B Documentation
Once the RDK bring-up in SoC is completed, the vendor needs to plan on the delivery of the software to OEM vendors. This usually happens in 2 ways:
In this approach will make use of the RDK Artifactory server. Artifactory server is a Repository Manager that functions as a single access point organizing all the binary resources including proprietary libraries, remote artifacts, and other 3rd party resources. It is a secure and restricted server, only collaboration members will have access to this server.
SoC vendor can define a HAL layer, share the source of HAL & yocto meta layer 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), share the SDK binary that can be stored in RDK Artifactory (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/ Artifactory for periodic updates (for releases) or for bug fixes. All the source code, binary and documentation will be strictly access restricted and access will be allowed only for authorized personnel by the SoC vendors.
The 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
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 vendors can use the git for periodic updates ( 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 the SoC vendor.
For both approaches, the RDKM collaboration zone will be used with strict access restrictions.
After a successful bring-up of RDK on the SoC platform, the next step will be to allow OEMs to work with SoCs to get a device based on the SoC platform. RDKM offers collaboration space for SoCs which would help SoCs to collaborate with OEM and RDK teams (as well as any 3rd party) in their journey to engineering a successful RDK product. RDKM collaboration zone includes features like (but not limited to) CMF facility to maintain build manifests as well as SoC/OEM specific code, SoC SDK artifact storage facility, JIRA & RDK Wiki spaces, integration with Test & Certification suites, monthly & release tagging, etc.
Please refer to RDKM On-boarding for more details on facilities available for SoCs and OEMs as part of the collaboration zone.
In short, it will include:
RDK is based on Yocto Linux. Prior to porting RDK on an SoC, the precondition is to have the SoC platform running on Linux. The Linux version can be a SoC-specific one with kernel hardening and other OS optimizations specific to SoC, as RDK could easily run on top of vendor-specific Linux. SoC should also provide drivers for the other peripherals in the SoC platform, like WiFi, so that the unit can work independently and completely from an SoC point of view.
Once the SoC vendor is ready with its own port of Linux + drivers for the SoC platform, it is time to migrate the platform to Yocto based builds. If the SoC is already having a Yocto based Linux, this step can be skipped. The current Yocto versions supported are Yocto 3.1- Dunfell ( preferred ) as well as Yocto 2.2- Morty ( soon to be deprecated )
Yocto 3.1 Upgradation support the following:
Each component in RDK is a standalone repository with its own individual build tools producing a library or set of binaries. When OE layers are upgraded to the newer versions, necessary changes need to be made in the RDK Yocto meta layers which use these components, to avoid build failures.
This is an important step while porting RDK to a new SoC platform. RDK Linux is built with considering particular build flags/features in the target platform( For example, RDK considers hardware floating point in the platform whereas some platforms are on software-based floating point ). SoC vendors need to analyze such flags in RDK and then make a comparison with the existing SoC platform Linux to ensure compatibility or to understand the required modifications in RDK code so as to house the compatibility changes
Specific DISTRO_FEATURES can be added to support the build-time flag for specific platforms. For example : DISTRO_FEATURES_append = " referencepltfm "
Depending on the Yocto version, the RDK build will be working with some particular version of Open source components. This might either be a dependency with the Yocto version compatibility as such or with RDK ( functionality or license issues ). If the SoC Linux has some version dependency on particular open source software and, if it conflicts with the version in RDK, the vendor needs to make required changes to make the open-source version match the RDK requirements as best as possible, by adding required patches in SoC platform
Check below layers for all open-sourced version packages recipes used in RDK. If multiple recipes with different versions are available, then check for the value of PREFFERED_VERSION_<recipe name> set.
Meta layers : - meta-openembedded, openembedded-core, meta-rdk-ext, meta-rdk, meta-cmf
For platform-specific recipes, keep them in the SoC meta-layer. While it is a good practice to start afresh with a new manifest for the target platform, a manifest file for a similar featured platform can be used as a starting point too. Check all device-specific repos in the reference manifest, and ensure corresponding device repos are created for this new device as needed, and update the manifest with these updated repos
Add a platform-specific main recipe to create an image.
RDK-B components are designed to avoid platform or silicon dependencies. Hardware Abstraction Layer (HAL) defines a standard interface for hardware vendors to implement. The HAL layer abstracts the underlying hardware like MOCA, Wi-Fi, etc. through a standard set of APIs defined as part of RDK-B HAL for the respective components. This HAL layer is implemented per platform and the rest of the components can be compiled to run on the new platform without major modifications.
The HAL in RDK-B Architecture section gives an overview of CCSP framework's Hardware Abstraction Layer.
HAL can be common-HAL or component-specific-HAL. Components may define a component specific HAL to hardware drivers, that are only used by that component
All HAL functions prototypes and structure definitions are available in wifi_hal.h file.
To see the API specification of WI-fI HAL please refer - Wi-Fi HAL APIs
All HAL functions prototypes and structure definitions are available in moca_hal.h file.
All HAL functions prototypes and structure definitions are available in mta_hal.h file. An MTA can deliver Home Phone service in addition to High Speed Internet.
All HAL functions prototypes and structure definitions are available in cm_hal.h file.
All HAL functions prototypes and structure definitions are available in ccsp_hal_ethsw.h file.
All HAL functions prototypes and structure definitions are available in dhcpv4c_api.h file.
All HAL functions prototypes and structure definitions are available in vlan_hal.h file.
All HAL functions prototypes and structure definitions are available in hal_firewall.h file.
All HAL functions prototypes and structure definitions are available in dpoe_hal.h file.
All HAL functions prototypes and structure definitions are available in bt_hal.h file.
All HAL functions prototypes and structure definitions are available in mso_mgmt_hal.h file.
All HAL functions prototypes and structure definitions are available in voice_hal.h file.
All HAL functions prototypes and structure definitions are available in wan_hal.h file.
All HAL functions prototypes and structure definitions are available in Tr69_Tlv.h file.
To see the API specification of Platform HAL please refer - Platform HAL APIs