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.
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.
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|
|Higher level data passing||RingIO, FrameQ||None, though IPC provides primitives to enable higher level frameworks|
For BIOS-to-BIOS communication, the same features available in IPC 1.x are available in IPC 3.x.
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.
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.
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 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)