This IPC Release is targeted to SYS/BIOS 6-based platforms.
Introduction, Documentation, What's New, Upgrade Info, Compatibility Information, Device Support, Validation Info, Known Issues, Examples, Version Information, Technical Support.
The IPC product provides software connectivity between multiple processors. Each processor may run either an HLOS (e.g. Linux, QNX) or an RTOS (e.g. SYS/BIOS).
The IPC product is comprised of the following
These components are provided as source code and prebuilt libraries.
The following documentation is available:
In addition, users are encouraged to monitor (and contribute to!) the TI Wiki.
Release notes from previous releases are also available in the relnotes_archive directory.
The following significant changes have been made since 1.25.00
ID | Headline |
SDOCM00114151 | Optimization using VRING_USED_F_NO_NOTIFY is broken on QNX, and interrupts are not sent when race occurs |
SDOCM00114194 | Race condition in QNX when IPU2 is exchanging messages with host while DSP1 or IPU1 is doing the same |
ID | Headline |
ID | Headline |
SDOCM00112666 | Recovery is not working in QNX on 'late-attached' cores |
SDOCM00113171 | MessageQ_open() from multiple threads can get stuck |
SDOCM00113150 | Watchdog module device validation & configuration should be in module$use method, not module$meta$init |
SDOCM00113498 | libipc and libutils are not built for dynamic linking in QNX IPC |
SDOCM00113338 | MessageQMulti unit-test gets an out of heap memory error when run on K2E or K2L |
SDOCM00113339 | IPC ping rpmsg unit-test hangs when run on K2L |
SDOCM00113341 | Ipc_attach() race on multiple cores corrupts Ipc_Reserved structs in SR0 |
ID | Headline |
SDOCM00113295 | Loading/unloading individual cores while keeping other cores running in QNX IPC |
ID | Headline |
SDOCM00112106 | Timed-out NameServer requests from host causes subsequent requests to receive out-of-sequence responses |
SDOCM00108594 | MultiProc_self() returns bogus value on QNX |
SDOCM00108585 | IpcPower has incorrect interrupts |
SDOCM00112581 | GateMP_create on Linux sets resourceId incorrectly |
ID | Headline |
SDOCM00108584 | Support QNX 6.6 |
SDOCM00108582 | QNX Late Attach support for DRA7XX |
ID | Headline |
SDOCM00112064 | Reduce memory usage for K2E tests (including update to XDC 3.25.06.96) |
ID | Headline |
SDOCM00108138 | Improved MmRpc/MmService error handling when app dies |
ID | Headline |
SDOCM00108167 | Uninitialized variable in notify driver template file |
SDOCM00108149 | Incorrect mailbox index computation in NotifySetup for v7M and v7A |
SDOCM00108114 | Link error when building with DCE on IPU/Vayu |
ID | Headline |
SDOCM00108135 | Allow users to disable QNX watchdog |
ID | Headline |
SDOCM00106580 | Fix KS2 tests to ensure Linux-owned memory (including vrings and vring buffers) are non-cached |
SDOCM00107256 | QNX: Need to update the help text in ipc_trace_daemon for -t option |
SDOCM00107743 | Build.getDefaultCustomCCOpts() does not remove optimization flags for debug builds |
SDOCM00106156 | Race conditions in QNX VirtQueue-based MessageQ |
SDOCM00104834 | MessageQ_create cannot create more than 52 MessageQ's |
SDOCM00106949 | IPC interrupt preempts itself on ARP32 (EVE) |
SDOCM00106336 | NameServerMessageQ copy of name is not copying null terminated character |
ID | Headline |
SDOCM00107470 | Detect slave-side internal exceptions and restart slaves (OMAP5 IPU, DRA7XX IPU2) |
SDOCM00106182 | Introduce IPC_DEBUG env var to simplify enabling trace |
SDOCM00107471 | Add watchdog to detect slave crashes and restart (OMAP5 IPU, DRA7XX IPU2) |
SDOCM00106428 | Add notify mailbox driver support on DRA7xx (DSP, EVE) |
SDOCM00106644 | Move examples/archives/* to examples/* |
SDOCM00107765 | Need a way to disable recovery mechanism in QNX IPC resource manager |
SDOCM00107904 | Add option to set permissions on LAD's working directory |
SDOCM00106584 | Add notify mailbox driver support on DRA7xx (IPU, HOST) |
SDOCM00093822 | DRA7XX: Optimize Interrupt Handler for EVEs, DSPs and IPUs |
SDOCM00107479 | Introduce internal memory resource type |
SDOCM00105667 | Eliminate need to specify carveoutAddr, carveoutSize and mmuEnable in Syslink_Override_Params on QNX |
ID | Headline |
SDOCM00106267 | OMAP5 and DRA7XX Linux examples should use TOOLCHAIN_PREFIX |
SDOCM00106019 | IPC makefile template does not honor Build.customCCOpts |
SDOCM00105512 | MessageQ_create() fails on Linux if unnamed |
SDOCM00106318 | LAD must remove existing PID response files before restarting |
SDOCM00106117 | ti_sdo_ipc_GateMP_getSharedAddr needs to be reverted to its original implementation |
SDOCM00106278 | QNX DRA7XX: prevent race condition when HOST cannot handle mailbox interrupts quickly enough |
SDOCM00106271 | CCS variable name for IPC (IPC_CG_ROOT) is broken |
SDOCM00106643 | Example makefile should use PLATFORM not DEVICE |
SDOCM00106093 | ex02_messageq slaves all create same named queue |
SDOCM00106450 | HeapMemMP_free fails to cache invalidate freed memory region containing stale data for old free list header |
ID | Headline |
SDOCM00103659 | Add pkg-config support on Linux side builds |
SDOCM00105164 | Provide MessageQ example on DRA7XX Linux and QNX showing multiple transports |
SDOCM00105868 | Update to BIOS 6.37 stream |
SDOCM00105590 | Add DRA7XX IPU1 support (running SMP BIOS) to QNX |
SDOCM00106044 | Add support for 66AK2E and TCI6630K2L |
SDOCM00103676 | Introduce GateMP on Linux |
SDOCM00106228 | Update OMAP5 and DRA7XX memory maps to match SDKs |
SDOCM00106383 | Remove C6x COFF support |
SDOCM00106314 | Change LADs working directory to /data on Android |
ID | Headline |
SDOCM00104759 | TransportCirc should allow Swi priority to be configurable |
SDOCM00102085 | IPC Examples would not build when extracted in the examples directory |
SDOCM00104913 | Linux tests issue compiler warning when DRM_PREFIX isn't set |
SDOCM00103636 | packages/ti/ipc/tests/package.bld doesn't -DRPMSG_NS_2_0 for OMAP5 which currently breaks only ping_rpmsg |
SDOCM00104907 | QNX loader fails to load code/data into slave's internal memory |
SDOCM00102068 | Crash recovery failing for QNX OMAP5 DSP |
SDOCM00103679 | Linux MessageQ_get() can discard msgs when a msg is available from more than one remote core |
SDOCM00104304 | Resolve Concerto IPC stress test failures |
SDOCM00104725 | Fix ti/ipc/rpmsg/virtio_ring.h compile warning |
SDOCM00104761 | VirtQueue notification on OMAP-L138 and TCI663X has a race condition |
SDOCM00103727 | QNX 'make install' is missing MessageQ and related headers/libs |
SDOCM00103112 | OMAP5 does not have a default Notify proxy delegate set in Settings.xs |
SDOCM00104719 | RPMessage crash after 64k messages |
SDOCM00104300 | Remove static allocation of IPU_MEM_IOBUFS memory in OMAP5 QNX |
SDOCM00103794 | Ducati trace thread steals early slave-side trace and terminates afterwards |
SDOCM00102268 | ipc resource manager process in QNX does not terminate correctly after MessageQ is used |
SDOCM00104100 | ROV for TransportCirc/NotifyDriverCirc does not work with different baseIdOfCluster |
SDOCM00104726 | Fix RcmServer.c compile warning |
SDOCM00104049 | MessageQ_open() returns not found when given queue actually exists |
ID | Headline |
SDOCM00099002 | Make "LibType_Debug" build profile be similar to LibType_Custom but with no optimizations. Stop exporting package lib |
SDOCM00103725 | Enable builds without SMP libraries |
SDOCM00103723 | Introduce Android support for DRA7XX |
SDOCM00103415 | Align build variables/names across OS's in products.mak |
SDOCM00104241 | NameServer_create/delete needs to support reference counting |
SDOCM00104525 | Add support for Linux 3.9+ kernels which need newer AF_RPMSG definition |
SDOCM00104716 | Add ex11_ping example for C6678 |
ID | Headline |
SDOCM00102067 | QNX multiprocess MessageQ stress tests are failing |
SDOCM00102137 | QNX makefiles shouldn't 'install' when only building libs |
SDOCM00102328 | Setting KERNEL_INSTALL_DIR for Keystone fails during MmRpc build |
SDOCM00102258 | MultiProc names for TCI6636 should match TCI6638 |
SDOCM00102060 | Remove unused procIds in vayu/NotifySetup module |
SDOCM00102548 | When only Mmrpc is used on the IPU and MessageQ is used on the DSP, MessageQ_open would not succeed |
ID | Headline |
SDOCM00099787 | MessageQ_free needs a hook function |
SDOCM00099785 | MessageQ_create should allow a queueId to be specified instead of finding free slot |
SDOCM00102317 | Add support for TCI6636 |
SDOCM00103402 | Introduce GateMP on QNX |
SDOCM00102149 | Update Linux toolchain to recent SDK-compatible Linaro versions |
SDOCM00101419 | Enable ipc-bios.mak to build a subset of platforms for a given target |
SDOCM00103504 | Introduce MmRpc_use()/release() enabling apps to declare when data buffers are in use across calls |
SDOCM00100158 | Introduce Linux support for OMAP5 |
SDOCM00102417 | Remove unsupported example simVayu platforms |
ID | Headline |
SDOCM00098436 | "ti_sdo_ipc_init" section needs to be padded to cacheline size |
SDOCM00098440 | ipc.mak is broken in Windows cmd shell |
SDOCM00098522 | The IPC mailbox drivers for M3 on TI81XX and C6A8149 does not work for SMP BIOS |
ID | Headline |
SDOCM00097544 | Add support for polling for occurrence of interrupts on OMAPL138 |
SDOCM00097853 | Remove ti.sdo.io* content (no longer supported) |
SDOCM00097181 | IPC should provide makefile-based examples |
SDOCM00098543 | Introduce Linux support for TCI6638 |
SDOCM00098458 | Add rproc resource table accessor methods for vring addrs (BIOS-side) |
The IPC packages are available in the "packages/" subdirectory of the product. If you have a previous release of the IPC product, you can install this release next to it, and modify your build scripts/makefiles to use this newer release.
Note, if you're upgrading from a release earlier than IPC 3.00, be sure to review the Upgrade section for each of the releases between your current release and this one. Previous release notes are available in the relnotes_archive directory.
This release supports the following devices (though examples are not provided for all):
This release was built and validated against using the following software components. Please use the versions below, or compatible:
This release was validated using the following hardware platforms (though others are supported):
This product's version follows a version format, M.mm.pp.bb, where M is a single digit Major number, mm is 2 digit minor number, pp is a 2 digit patch number, and b is an unrestricted set of digits used as an incrementing build counter.
To support multiple side-by-side installations of the product, the product version is encoded in the top level directory, ex. ipc_3_23_02_04.
Subsequent releases of patch upgrades will be identified by the patch number, e.g. IPC 3.22.01.XX with directory ipc_3_22_01_XX. Typically, these patches only include critical bug fixes.
For technical support, use the community forum TI E2E Community, or email softwaresupport@ti.com.
Check the following web site for updates: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/index.html
Last updated: December 10, 2014