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.

IPC 3.x Migration Guide

From Texas Instruments Wiki
Jump to: navigation, search

Introduction[edit]

This article describes differences between SysLink 2.x/IPC 1.x and IPC 3.x. See the IPC 3.x article for more product details. When applicable, OS-specific details are separated into their own sections.

Slave Loading[edit]

SysLink 2.x provided the ProcMgr API set to control the slave processors. Often slave management was delegated to an external application (e.g. slaveloader, firmware_loader) so many applications weren't exposed to the ProcMgr APIs. This "keep the loader independent of the apps" approach also enabled better integration with multiple applications, each of which used the slave, but didn't need/want to know about each other.

In IPC 3.x, the slaves are loaded as needed, typically at driver load time. The application doesn't need to call any runtime APIs.

The IPC 3.x-using slaves are configured to include a Linux-defined resource table. This resource table is parsed at load time, resources are allocated (on the HLOS side) and provided to the slave.

NOTE

Although the Linux community defined the resource table, the IPC port to QNX also uses the same resource table.

On some devices, the loader can detect slave crashes and reload the slave automatically. This feature is not available on all platforms, especially in early IPC 3.x releases.

Linux[edit]

The Linux slave loader builds on the kernel remoteproc driver. Slaves are loaded when the remoteproc driver is loaded. To unload the slaves, you can remove the driver. The Linux IPC Install Guide has more details.

QNX[edit]

The QNX loader is part of the resource manager, and the slaves are loaded when the resource manager is launched. The QNX IPC Install Guide has more details.

Setup[edit]

In IPC 1.x, for BIOS-using peer-to-peer setup, or BIOS-side slave-to-slave setup when an HLOS was in the system, users would call IPC_start(), IPC_attach(), IPC_detach() and IPC_stop() to 'attach' and 'detach' from each other.

In SysLink 2.x, HLOS-side applications would use SysLink_setup() and SysLink_destroy() to initialize the SysLink library. Then they would 'attach' and 'detach' with discreet slaves using Ipc_control() with the LOADCALLBACK, STARTCALLBACK, and STOPCALLBACK commands. These host-side APIs required cooperating slave-side calls to IPC_start(), IPC_attach(), IPC_detach() and IPC_stop().

In IPC 3.x, the slave and host APIs were brought into alignment. There is no SysLink_setup() or SysLink_destroy(), and both sides now call IPC_start() and IPC_stop() to enable/disable use of IPC services.

Removed APIs[edit]

The HLOS-BIOS communication options have been reduced in IPC 3.x. This was done in response to user feedback that the APIs were too complex, and also to bring it into general compliance with HLOS conventions (primarily in Linux) that user-space should have limited access to hardware. On the HLOS side, only the IPC_*, MessageQ, NameServer and MultiProc APIs remain. In some HLOS environments, GateMP is also provided.

NOTE

For HLOS users of SysLink 2.x's memory APIs (e.g. HeapMemMP), many Linux SDKs are recommending/providing CMEM as a shared memory solution. There are limitations (e.g. you cannot alloc on HLOS and free on RTOS), but these are in line with using the HLOS as a master (owning all resources) and RTOS as a slave (using resources provided by the master).

On the BIOS side, for BIOS-to-BIOS communication, all IPC APIs remain. Note, however, that RingIO and FrameQ were provided by the SysLink 2.x product (not the IPC 1.x product), and are no longer provided in IPC 3.x.

Added APIs[edit]

Specifically to support existing OMAP multimedia stacks (e.g. dce, OMX, dvp), IPC has added the 'MmRpc' HLOS-side APIs. These APIs enable invoking a function on a remote processor (much in the same way RCM does). The MmRpc APIs are intended for use by TI's multimedia stacks.

Roadmap-wise, users are encouraged to MessageQ for user-mode endpoint to BIOS endpoint communication.

Device Support[edit]

For devices running an HLOS (e.g. Linux, QNX), IPC 3.x is only supported on a few devices. See the release notes for details as specific device support evolves over time.

For devices running BIOS on all cores, IPC 3.x initially supports all the same devices as the last IPC 1.x releases. The BIOS-side code is all the same.

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 IPC 3.x Migration Guide 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 IPC 3.x Migration Guide here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article IPC 3.x Migration Guide here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article IPC 3.x Migration Guide here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article IPC 3.x Migration Guide here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article IPC 3.x Migration Guide here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article IPC 3.x Migration Guide here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article IPC 3.x Migration Guide here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article IPC 3.x Migration Guide 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