Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

IPC 3.x

From Texas Instruments Wiki
Jump to: navigation, search

Introduction

This page contains details about the IPC 3.x product, TI's solution for interprocessor communication between cores on homogenous and heterogeneous devices.

IPC 3.x is an evolution of the IPC product, so it helps to understand the scope of previous generations.

  • The IPC product defines several interfaces to facilitate multiprocessor communication.
  • The IPC 1.x product includes implementations of those interfaces for the SYS/BIOS RTOS. It supports communicating between cores running SYS/BIOS, as well to HLOS processors running SysLink 2.x.
  • The SysLink 2.x product provides services to control slave processors (e.g. load, start, stop). It also provides an implementation of the IPC interfaces for High Level OSs (HLOS) like Linux and QNX. SysLink 2.x supports communicating with slave processors running SYS/BIOS and IPC 1.x.

IPC 3.x merges the IPC 1.x and SysLink 2.x products, creating a single product that defines multiprocessor communication APIs and provides implementations for several OS's, including SYS/BIOS and HLOS's.

NOTE

The SysLink name is being retired. The SysLink 2.x product will continue to be supported on existing devices, but development has stopped and support for new devices will not be added.

Overview Presentation

Changes

The key changes between IPC 1.x/SysLink 2.x and IPC 3.x is the HLOS implementation. Note, there is a IPC 3.x Migration Guide with more details.

This table summarizes the IPC 1.x/SysLink 2.x supported APIs against those provided in IPC 3.x.

Feature IPC 1.x/SysLink 2.x IPC 3.x
Slave loading ProcMgr Slaves are loaded on demand, currently without a user API
Low-level primitives Notify, Heap*MP, Gate*MP, SharedRegion, NameServer Available for BIOS-to-BIOS communication, only GateMP available on HLOS
Messaging MessageQ MessageQ
Higher level data passing RingIO, FrameQ None, though IPC provides primitives to enable higher level frameworks

BIOS

For BIOS-to-BIOS communication, the same features available in IPC 1.x are available in IPC 3.x.

Linux

On Linux, IPC 3.x is built upon services available (and evolving!) in the mainline Linux kernel (3.4+). These core services include remoteproc and rpmsg.

Above those Linux services, a few key services from the IPC API (e.g. MessageQ) are provided in user mode.

QNX

On QNX, IPC 3.x provides feature parity to Linux. The QNX OS doesn't inherently provide primitives like Linux's 'remoteproc' and 'rpmsg', so IPC 3.x also includes a loader and rpmsg-compatible communication infrastructure. This rpmsg-compatible MessageQ implementation enables the same BIOS-side image to communicate with either Linux or QNX on the HLOS.

Development

IPC 3.x development is being managed at https://git.ti.com/ipc.

There is an open mailing list where active discussion about the code base takes place. Patches are also submitted there for review.

IPC Training

IPC training material is updated from time to time. Check back for new updates.

IPC Training v2.21 - IPC 3.x Full Training Material (PowerPoint) (PowerPoint Show) (PDF)

IPC Lab 1 - Hello (PowerPoint) (PowerPoint Show) (PDF)
IPC Lab 2 - MessageQ (PowerPoint) (PowerPoint Show) (PDF)
IPC Lab 3 - Scalability (PowerPoint) (PowerPoint Show) (PDF)

See Also