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 license is 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 OEM
The first step to get 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. OEM can use this as a guide while engineering the RDK OEM platform. OEM can cross check the expected features/specifications with the capabilities of the SoC platform being used and can finalize the features supported by the product.
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 OEM & RDKM in the collaboration zone is given below:
# | Activity | Owner | Remarks |
---|---|---|---|
1 | RDKM | RDKM will setup Collaboration space, access restrictions | |
2 | OEM | JIRA project. OEM will be the owner of the JIRA project. | |
3 | OEM/RDKM | RDKM will create the space and SoC/OEM push the code changes | |
4 | OEM | Create necessary device specific HAL implementation for porting RDK into Accelerator | |
5 | RDKM | Details which SDK version to be used. RDKM will support the integration with OEM libraries | |
6 | OEM | Manifest for building the accelerator | |
7 | Provide Devices to RDKM team | OEM | |
8 | Device flashing instructions/recovery mechanisms | OEM | OEM should share the device flashing instruction. |
9 | Sanity, Functionality Testing & automation tests | RDKM/OEM | |
10 | Monthly release & tagging | OEM | Monthly tagging and release with stakeholders along with test results |
Once the product features are decided, the device engineering can be started. OEM needs to decide on the hardware layout that incorporates OEM components to the SoC board. The device will be categorized either as a home broadband device or a business gateway based on the hardware capabilities.
OEM can make use of the below details 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 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 OEM specific manifests are given below
For more details on getting RDK-B ported to an OEM device, please refer to the links RDK-B OEM Specific Porting .
SoC/OEM meta-layer creation
To match the layered structure of Yocto builds, a OEM-specific layer is used to include OEM changes and additions. Use the yocto-layer create sub-command to create a new general layer.
|
There shall be a separate device (machine) configuration file (.conf) for each device for the particular OEM for which the layer is intended. The general naming terminology for the OEM layer is meta-rdk-oem-<oem name>
The device (machine) configuration file shall include the corresponding include (.inc) file to get machine configuration details.
RDKM offers an in-house Test & certification suite that facilitates OEMs to get their devices tested for their features.
For more details on TDK refer: TDK-B Documentation
Once the porting of RDK-B gets completed by SoC vendors, they will make it available for OEMs. SoC will provide the HAL+ SDK binary or the complete source code, which the OEMs can receive and install.
If the SoC vendor provides HAL+ SDK binary, the OEMs can 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. OEM and SoC secure information can be hosted on the Artifactory server.
OEM vendors will work in collaboration with the SoC vendor. SoC vendor can define a HAL layer, share the source of HAL & Yocto meta layer that can be stored in RDK CMF Git repository, share the SDK binary that can be stored in RDK Artifactory (Shared only from authorized SoC vendors who will work in collaboration with the OEM vendor) and then publish necessary documentation on how to build the OEM image. OEM vendors 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 OEM 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
If the SoC vendor provides complete source code, OEM vendors can work in collaboration with the SoC vendor. SoC vendor can define a HAL layer, share the source of HAL & yocto meta layer that can be stored in RDK CMF Git repository, and then publish necessary documentation on how to build the OEM image. OEM vendors 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 OEM vendors.
For both approaches, the RDKM collaboration zone will be used with strict access restrictions.
After a successful bring-up of an RDK based image in OEM device, the next step will be to allow operators to work with OEMs to get operator code on that OEM device. RDKM offers collaboration space for OEMs to work with an operator specific layer and bring up 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/Operator specific code, SoC and OEM artifact storage facility, JIRA & RDK Wiki spaces, integration with test suites, monthly & release tagging, etc.
Please refer to RDKM On-boarding for more details on facilities available for OEMs and SoCs as part of the collaboration zone. In short, it will include:
This document aims to explain the procedure for OEM porting of RDK.
Refer to this page to device firmware section(above) to know the details about Yocto manifests, SoC meta-layer creation includes adding the Machine Configuration File for the new SoC.
OEM needs to add OEM specific components like Firmware Upgrade, Secure Boot Loader, Vendor-Specific Information, NVRAM files and partition, Provisioning, OEM Specific drivers, Other OEM specific utilities, RDK Device-Specific Patches, Image Generation Utilities, etc. as well as interfacing layers to the generic RDK for relevant OEM code modules ( see below )
Any Revision change in the SoC layer is usually done by SoC’s build environment and the new SDK or revision is updated in a recipe. If a new recipe is added for any update in SoC software, then it can be handled using the PREFERRED_VERSION Yocto flag in meta-layer
Refer to RDK-B Porting Guide for more details
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