NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

MCSDK UG Chapter Developing Migration

From Texas Instruments Wiki
Jump to: navigation, search




TI Logo oneline twocolor.png



Developing with MCSDK: Migration Guide

Last updated: 09/03/2015

Overview[edit]

This chapter provides information for migrating software from major MCSDK releases.

MCSDK 3.1.3 to MCSDK 3.1.4[edit]

The intent of this section is to provide details for migrating software from MCSDK 3.1.3 to MCSDK 3.1.4 for all supported devices.

RM LLD[edit]

The RM Server socket location in the Linux file system has changed. In previous releases a header called sockrmmsg.h was copied into any test or example project that wished to connect to the Linux RM Server. This header placed the RM Server socket in /tmp/var/run/rm/rm_server. A new RM API has been created in order to unify the RM Server socket location. Any application wishing to connect to the Linux RM Server should

#include <pdk_keystone2_3_01_04_07\packages\ti\drv\rm\rm_server_if.h>

This file places the RM Server socket in /var/run/rm/rm_server

MCSDK 3.1.1 to MCSDK 3.1.3[edit]

The intent of this section is to provide details for migrating software from MCSDK 3.1.1 to MCSDK 3.1.3 for all supported devices.

U-Boot[edit]

I2C driver supports multiple busses. You cannot assume the default bus is always '0'. Use 'i2c dev <bus number>' command to switch to desired bus.

ARM IPC MessageQ[edit]

With the move to IPC 3.35.01.07, any ARMv7 Linux Host application using IPC must include an additional function call prior to Ipc_start(). There was a circular dependency between the IPC and the newly introduced transport libraries. To break this circle, the transport create method was moved outside of IPC core logic. IPC invokes this through a function table configured with a new Ipc_transportConfig() method which is called by the application.

User-space applications that start IPC must be modified:

<syntaxhighlight lang='C'> /* Old IPC startup */ status = Ipc_start() if (status < 0) {

   /* Failure case */

} </syntaxhighlight>

<syntaxhighlight lang='C'> /* New IPC startup */

  1. include <ti/ipc/transports/TransportRpmsg.h>

Ipc_transportConfig(&TransportRpmsg_Factory); status = Ipc_start(); if (status < 0) {

   /* Failure case */

} </syntaxhighlight>

Additionally, the linking process of the user-space application must now include libtitransportrpmsg as follows (order of library inclusion matters): <syntaxhighlight lang='make'>

  1. Old included IPC libraries in link of app

-ltiipc -ltiipcutils </syntaxhighlight>

<syntaxhighlight lang='make'>

  1. New included IPC libraries in link of app

-ltitransportrpmsg -ltiipc -ltiipcutils </syntaxhighlight>

For more information on the changes made in IPC 3.35.01.07 please see the latest release notes

PA LLD[edit]

Below changes are required to be done in both DSP and user mode applications when using PA LLD 3.0.1.4, integrated in MCSDK 3.1.3 release. For full details please visit PA LLD release notes.

  • PA instance memory increased to 288 bytes from 256 bytes.
  • PA Number of buffer requirement increased to 8 buffers from 7 buffers

MCSDK 3.1.0 to MCSDK 3.1.1[edit]

The intent of this section is to provide details for migrating software from MCSDK 3.1.0 to MCSDK 3.1.1 for all supported devices.

U-Boot[edit]

There are two u-boot changes that may be interest, for full details, see the Linux/u-boot portion of the user guide.

  • The PLL clock frequency is now programmed based on EFUSE register settings. The getclk command in u-boot can be used to know the actual frequency used. Note that the clock may be rounded to the nearest possible value based on settings for the PLL clock.
  • For K2L, The NAND part used in the EVM is 2GB in size. Previously, the u-boot environment variable was set to use only 512MB of the NAND capacity. In this release, the u-boot environment variable is now set up for 2GB. This results in increased bootup time caused by UBI mount of larger partition size.

Linux[edit]

Prior to MCSDK 3.1.1, MDIO was disabled for K2L and K2E EVM. In this release, MDIO is enabled for K2L and K2E EVMs. Note that boot up time increases slightly by about 2-3 seconds per port due to auto negotiation. On K2H/K, the MDIO continues to be disabled to keep backward compatibility with older revision of the hardware.

This maintenance update does not have any API changes.

MCSDK 3.0.4 to MCSDK 3.1.0[edit]

The intent of this section is to provide details for migrating software from MCSDK 3.0.x to MCSDK 3.1.0 for K2K and K2H devices.

Installer[edit]

The installers for Windows, Linux host, and Linux target have changed in this release.

Windows[edit]

The windows installer with the MCSDK 3.1.0 release will not have the mcsdk_linux_<version> package. The full contents of the installer, including the mcsdk_linux_<version> directory, can be obtained from the mcsdk_<version>.tar.gz on the release page.

Linux host[edit]

The Linux host installer mcsdk_<version>_setuplinux32.bin is replaced by a new command line installer named mcsdk_<version>_setuplinux.bin (non gui version). This installer can be used to install the MCSDK package on the target as well as on any linux host. This installer includes the XDC package usable on an ARM target.

Linux target[edit]

The target mcsdk installer previously called mcsdk_<version>_native_setuplinux.bin is now renamed to mcsdk_<version>_setuplinux.bin.

Boot Monitor[edit]

In MCSDK 3.1, boot monitor supports K2HK, K2L and K2E EVMs. When user builds from a git cloned source tree, the make command builds all three images: skern-k2hk.bin, skern-k2l.bin and skern-k2e.bin. The pre-built images in the SDK are renamed to skern-k2hk-evm.bin, skern-k2l-evm.bin and skern-k2e-evm.bin respectively.

Uboot[edit]

Target Images[edit]

Two new U-boot target blob images (u-boot-k2l-evm.bin for K2L EVM and u-boot-k2e-evm.bin for K2E EVM) are supported in MCSDK 3.1, the old target blob image name is changed from u-boot-keystone-evm.bin (K2HK EVM) to u-boot-k2hk-evm.bin.

Two new U-boot target SPI GPH images (u-boot-spi-k2l-evm.gph for K2L EVM and u-boot-spi-k2e-evm.gph for K2E EVM) are supported in MCSDK 3.1, the old SPI GPH image name is changed from u-boot-spi-keystone-evm.gph (K2HK EVM) to u-boot-spi-k2hk-evm.gph.

New NAND boot GPH images are supported in MCSDK 3.1, the names are u-boot-nand-k2hk-evm.gph (K2HK EVM), u-boot-nand-k2l-evm.gph (K2L EVM) and u-boot-nand-k2e-evm.gph (K2E EVM).

Target Configurations[edit]

The command to make K2HK EVM configuration has changed:

> make tci6638_evm_config ==> make k2hk_evm_config

The command to make K2L EVM configuration is:

> make k2l_evm_config

The command to make K2E EVM configuration is:

> make k2e_evm_config

Environment Variables[edit]

The "has_mdio" environment variable is removed, depending on sgmiiN_link_type (N is a port number starting from 0), keytone2_eth_open() sets the local sys_has_mdio for the currently opening port.

A new environment variable, "uinitrd_fixup", is added do device tree fixup for older versions of kernels (3.08/3.10).

System Clock frequency[edit]

U-boot program the Core and Tetris clock rate based on the Efuse register settings. So it will change from board to board based on the Efuse settings.

MDIO frequency[edit]

MDIO clock frequency is increased from 1MHz to 2.5 MHz.

Linux kernel[edit]

Ethernet drivers[edit]

A new 1GB Ethernet driver plugin driver is added to support the new NSS (Network Sub-System) module for K2E and K2L devices. The new driver supports a Ethernet switch with up to 8 EMAC (slave) ports and 1 host port.

A new Packet Accelerator plugin driver is added to support the new NSS (Network Sub-System) for K2E and K2L devices. The new driver supports 9 clusters with up to 15 PDSP processors (8 Ingress, 2 post and 5 Egress PDSPs).

A new SGMII SERDES driver is added to support the TI Keystone II SERDES IP. The driver has generic API's that are also extendable to other Keystone II peripherals, such as PCSR SERDES, PCIe SERDES, etc.)

The Address Lookup Engine driver is updated to support both revisions (v1.3 and v1.4) ALE IP, v1.4 has up to 8 slave ports and 1 host port.

10G Ethernet driver is disabled through DT bindings by default. See the user guide on how to enable it on a board that has 10G ethernet hardware support available.

Yocto[edit]

The Yocto machine name for K2H/K2K has changed in MCSDK 3.1.0. For MCSDK 3.0.x, the machine name was “keystone-evm”. For MCSDK 3.1.0 and onward, it is “k2hk-evm”. Please refer to Yocto Build Instructions for details.

DDR3 ECC[edit]

DDR3 error detection and correction feature is enabled on K2H/K2K PG 2.0 devices and K2L/K2E devices. Please refer to [1] for details.

Device Tree[edit]

The device tree files are re-organized in MCSDK 3.1.0, the common device tree bindings for all the Keystone II devices are extracted to the following files:

  • keystone.dtsi (common SoC related device tree)
  • keystone-clocks.dtsi (common clocks related device tree)
  • keystone-qostree.dtsi (common network QoS related device tree)

The SoC specific device tree bindings are extracted to the following files:

  • k2hk.dtsi (K2HK SoC specific device tree)
  • k2hk-clocks.dtsi (K2HK specific clocks device tree)
  • k2hk-net.dtsi (K2HK specific network device tree)
  • k2l.dtsi (K2L SoC specific device tree)
  • k2l-clocks.dtsi (K2L specific clocks device tree)
  • k2l-net.dtsi (K2L specific network device tree)
  • k2e.dtsi (K2E SoC specific device tree)
  • k2e-clocks.K2E (K2E specific clocks device tree)
  • k2e-net.dtsi (K2E specific network device tree)

The EVM specific device tree bindings are extracted to the following files:

  • k2hk-evm.dts (K2HK EVM specific device tree)
  • k2l-evm.dts (K2L EVM specific device tree)
  • k2e-evm.dts (K2E EVM specific device tree)

PDK[edit]

KeyStoneII CSL LLD Migration MCSDK 3 0 To 3 1.jpg

SA LLD[edit]

SA LLD is available as a PDK component starting in MCSDK 3.1.0 release. This is a change compared to standalone SA LLD release from ti.com download page. This component is also available at https://git.ti.com/keystone-rtos/sa-lld.

QMSS LLD[edit]

Device-specific includes (cslr_device.h, csl_qm_queue.h) were removed from QMLLD's public header files. Application will need to add these includes together with appropriate device (DEVICE_K2H/DEVICE_K2L/DEVICE_K2E/DEVICE_K2K) defines if it uses symbols from these files.

CPPI LLD[edit]

Device-specific includes (cslr_device.h, csl_cppi.h) were removed from CPPILLD's public header files. Application will need to add these includes together with appropriate device (DEVICE_K2H/DEVICE_K2L/DEVICE_K2E/DEVICE_K2K) defines if it uses symbols from these files.

NWAL[edit]

Device-specific libraries are being provided as part of MCSDK 3.1. The naming conventions of the libraries for Linux use case are the following: libnwal_$DEVICE.a (for shared libraries, libnwal_$DEVICE.so) where $DEVICE can be k2h/k2k/k2e/k2l.

For Linux use case, applications using the nwal library will need to update their makefiles to link in the desired device specific library based on the device the application is being compiled for.

For DSP use case, the naming convention of the provide libraries remains the same but libraries are located in device specific directories under ti/drv/nwal/lib/$DEVICE where $DEVICE can be k2h/k2k/k2e/k2l.

E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article MCSDK UG Chapter Developing Migration here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article MCSDK UG Chapter Developing Migration here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article MCSDK UG Chapter Developing Migration here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article MCSDK UG Chapter Developing Migration here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article MCSDK UG Chapter Developing Migration here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article MCSDK UG Chapter Developing Migration here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article MCSDK UG Chapter Developing Migration here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article MCSDK UG Chapter Developing Migration here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article MCSDK UG Chapter Developing Migration here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity