IPC 3.36.01.11 Release Notes
May 2015
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
-
packages/ti.ipc: IPC interface definitions (e.g. MessageQ,
ListMP, HeapMemMP, Notify, etc.)
-
packages/ti.sdo.ipc: BIOS implementations of
higher-level IPC modules (e.g. MessageQ, Notify, heaps, etc.)
-
packages/ti.sdo.utils: BIOS implementations of IPC
utility modules (e.g. MultiProc, List, NameServer, etc.)
-
qnx: Contains QNX implementations of ti.ipc
-
linux: Contains Linux implementations of ti.ipc
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
3.36.01.11
- The following defects were resolved:
- The following enhancements were resolved:
3.36.00.07
- The following defects were resolved:
ID |
Headline |
SDOCM00115129 |
DSP aborts when patched with large cluster base ID
|
SDOCM00115127 |
GateMP_open crashes on Keystone 2
|
SDOCM00114083 |
Upon failure from DLOAD_get_section_offset(), QNX IPC generates multiple assertions as opposed to exiting cleanly
|
SDOCM00114783 |
pthread_mutex_destroy is not called in IPC
|
SDOCM00115434 |
NameServer_delete in LAD daemon leaks memory
|
SDOCM00115067 |
Parallel build support in IPC examples
|
SDOCM00115428 |
Incorrect return status from NameServer_delete (Linux)
|
SDOCM00115143 |
Improper timeout handling in MessageQ_get (Linux)
|
SDOCM00115768 |
Incorrect check for invalid pointer in Ipc_detach
|
SDOCM00115958 |
'make install' for QNX is not exporting transport interface header files
|
SDOCM00114745 |
Ipc_transportConfig has race window where factory is overwritten
|
SDOCM00115098 |
New MultiProc cdoc links for "See Also" are garbled
|
SDOCM00115373 |
NameServer local get methods are missing on Linux
|
SDOCM00115294 |
NameServer_create and NameServer_add sometimes fail in QNX
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00115106 |
Expose functions in TiIpcFxns.h as public API
|
SDOCM00114946 |
IPC Watchdog module should allow user-configurable timer assignments
|
SDOCM00115108 |
The default value ProcMgr_MAX_MEMORY_REGIONS should be increased in QNX
|
SDOCM00116094 |
Command Line Options for LAD to override config params
|
SDOCM00114951 |
Host-only IPC communication (Linux, no DSP support)
|
SDOCM00100361 |
Error Recovery: When slave crashes, apps using the slave should be able to recover
|
SDOCM00114663 |
Add DRA7XX DSP2 support to QNX
|
3.35.00.05
- The following defects were resolved:
ID |
Headline |
SDOCM00103540 |
Incorrect number of hardware spin locks on DRA7XX
|
SDOCM00115028 |
"struct fw_rsc_intmem" mismatch between QNX and IPC 3.30
|
SDOCM00108142 |
QNX code in qnx/src/ipc3x_dev needs cleanup
|
SDOCM00115035 |
Watchdog module device validation & configuration should be in module$use method, not module$meta$init
|
SDOCM00115038 |
Notify mailbox driver is clearing wrong fifo during init phase
|
SDOCM00115050 |
Race condition in QNX when IPU2 is exchanging messages with host while DSP1 or IPU1 is doing the same
|
SDOCM00115024 |
IPC ping rpmsg unit-test hangs when run on K2L
|
SDOCM00115043 |
Recovery is not working in QNX on 'late-attached' cores
|
SDOCM00113501 |
Clean up QNX build output
|
SDOCM00114478 |
Incorrect thread safety in MessageQ_setup (Linux)
|
SDOCM00115026 |
ex13_notifypeer example needs ping message from DSP to EVE
|
SDOCM00115042 |
NotifyDriverMbx on Vayu should not use Ipc module
|
SDOCM00115034 |
"struct fw_rsc_intmem" mismatch between Linux 3.14 and IPC 3.30.0.9
|
SDOCM00114110 |
IPC custom build failure with XDCtools core product
|
SDOCM00114409 |
vring initialization in QNX is not clearing the correct area
|
SDOCM00115030 |
Ipc family Settings.xs needs to add F28377D
|
SDOCM00115031 |
libipc and libutils are not built for dynamic linking in QNX IPC
|
SDOCM00115036 |
MessageQMulti unit-test gets an out of heap memory error when run on K2E or K2L
|
SDOCM00115039 |
Ipc_attach() race on multiple cores corrupts Ipc_Reserved structs in SR0
|
SDOCM00114518 |
MessageQ_setMsgPri overwrites entire flags field
|
SDOCM00113915 |
GateMPApp's output should be made less verbose
|
SDOCM00115049 |
Incorrect Assert_isTrue in RPMessage_recv
|
SDOCM00115051 |
IPC custom build failure with XDCtools core product
|
SDOCM00106179 |
Remove/circumvent error messages from MessageQCopy_send at startup in QNX resource manager
|
SDOCM00114392 |
Interrupt module on tci6638 does not support clusters
|
SDOCM00114390 |
Incorrect procId in NameServer_get used by lad daemon
|
SDOCM00115053 |
LAD's GateMP fails to start when built for Android's Lollipop
|
SDOCM00115047 |
Optimization using VRING_USED_F_NO_NOTIFY is broken on QNX, and interrupts are not sent when race occurs
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00113149 |
GateMP host-support should work when SharedRegion 0 has a physical address that is different from its virtual address
|
SDOCM00114393 |
ex44_compute, new example for Keystone II
|
SDOCM00114391 |
IPC cluster support is missing on Linux implementation
|
SDOCM00114908 |
Add reserved queue support to QNX
|
SDOCM00114354 |
IPC Manager needs a public header file
|
SDOCM00114730 |
Add support for reserved message queues on Linux/Keystone II
|
SDOCM00113638 |
Rename paths to ipc-trace to not require a priori knowledge of MultiProc ids in QNX
|
SDOCM00114696 |
Add method to return address of shared region entry
|
SDOCM00115022 |
Loading/unloading individual cores while keeping other cores running in QNX IPC
|
SDOCM00114964 |
Processor data array size should match cluster size
|
SDOCM00113609 |
Add version support for MessageQ_Params structure
|
SDOCM00114926 |
Modify examples on Linux to use installed IPC product
|
SDOCM00114985 |
MessageQ macro for extracting destination address from message header
|
SDOCM00108403 |
Enable pluggable MessageQ transports on Linux
|
SDOCM00108118 |
Need an IPC example to show how to send shmemallocator buffers using MessageQ
|
SDOCM00111686 |
NameServer max name length needs to be made more easily configurable
|
3.30.00.09
- The following defects were resolved:
ID |
Headline |
SDOCM00107419 |
IPC build warning in RPMessage.c
|
SDOCM00112918 |
MessageQ_open() from multiple threads can get stuck
|
SDOCM00108130 |
IPC custom library build creates empty folder
|
SDOCM00112680 |
IPC for Concerto has incorrect NotifyDriverCirc_enable()/enableEvent()
|
- The following enhancements were resolved:
3.23.00.01
- The following defects were resolved:
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
|
- The following enhancements were resolved:
3.22.02.11
- The following defects were resolved:
ID |
Headline |
SDOCM00112064 |
Reduce memory usage for K2E tests (including update to XDC 3.25.06.96)
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00108138 |
Improved MmRpc/MmService error handling when app dies
|
3.22.01.08
- The following defects were resolved:
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
|
- The following enhancements were resolved:
3.22.00.05
- The following defects were resolved:
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
|
- The following enhancements were resolved:
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
|
3.21.00.07
- The following defects were resolved:
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
|
- The following enhancements were resolved:
3.20.00.06
- The following defects were resolved:
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
|
- The following enhancements were resolved:
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
|
3.10.00.08
- The following defects were resolved:
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
|
- The following enhancements were resolved:
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
|
3.00.00.20
- The following defects were resolved:
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
|
- The following enhancements were resolved:
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.
- IPC 3.36.01.11 requires system integrators to update
the following dependencies:
- XDC Tools 3.30.06.67.core (or compatible)
- SYS/BIOS 6.41.03.51 (or compatible)
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):
- TMS320C6472
- TMS320C6474
- TMS320C6670
- TMS320C6678
- OMAPL138
- TCI6638K2K (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
- TCI6636K2H (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
- TCI6630K2L (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
- 66AK2E (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSP
- DRA7XX (Vayu)
- SYS/BIOS on HOST, DSP(s), EVE(s), SMP-BIOS on IPU(s)
- SYS/BIOS on HOST, DSP(s), EVE(s), IPU1-0, IPU1-1, SMP-BIOS on IPU2
- QNX on HOST, SYS/BIOS on DSP1, SMP-BIOS on IPU(s)
- Linux on HOST, SYS/BIOS on DSP1 and DSP2, SMP-BIOS on IPU1
and IPU2
- OMAP-L138 - Linux on HOST, SYS/BIOS on DSP
This release was built and validated against using the following software
components. Please use the versions below, or compatible:
- XDCtools 3.30.06.67.core
- SYS/BIOS 6.41.03.51
- Pre-built binaries were built with the following toolchains:
- gnu.targets.arm.A15F - 4.7.3
- gnu.targets.arm.A8F - 4.7.3
- ti.targets.C28_float - 6.1.0
- ti.targets.C28_large - 6.1.0
- ti.targets.arm.elf.A8Fnv - 5.1.5
- ti.targets.arm.elf.A8F - 5.1.5
- ti.targets.arm.elf.Arm9 - 5.1.5
- ti.targets.arm.elf.M3 - 5.1.5
- ti.targets.arm.elf.M4F - 5.1.5
- ti.targets.arm.elf.M4 - 5.1.5
- ti.targets.arp32.elf.ARP32_far - 1.0.0
- ti.targets.arp32.elf.ARP32 - 1.0.0
- ti.targets.elf.C64P_big_endian - 7.2.0
- ti.targets.elf.C64P - 7.2.0
- ti.targets.elf.C64T - 7.2.0
- ti.targets.elf.C66_big_endian - 7.4.4
- ti.targets.elf.C66 - 7.4.4
- ti.targets.elf.C674 - 7.2.0
- Linux GCC toolchain - Linaro gnueabihf-4.7-2013.03-20130313
- QNX 6.6.0 (with additional patches applied depending on the version of the QNX BSP. Refer to the BSP's documentation for more details.)
- QNX BSP for DRA74x: M10
- QNX BSP for DRA72x: M4
This release was validated using the following hardware platforms
(though others are supported):
- TCI6638K2K (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
- DRA7XX (Vayu)
- SYS/BIOS on HOST, DSP(s), EVE(s), SMP-BIOS on IPU(s)
- SYS/BIOS on HOST, DSP(s), EVE(s), IPU1-0, IPU1-1, SMP-BIOS on IPU2
- QNX on HOST, SYS/BIOS on DSP1, SMP-BIOS on IPU(s)
- Linux on HOST, SYS/BIOS on DSP1 and DSP2, SMP-BIOS on IPU1
and IPU2
- Android on HOST, SYS/BIOS on DSP1 and DSP2, SMP-BIOS on IPU1
and IPU2
- OMAP-L138 - Linux on HOST, SYS/BIOS on DSP
- C6472 - SYS/BIOS on all cores
- The following defect in IPC 3.30.01 is a known issue for IPU using
SYS/BIOS SMP-mode:
ID |
Headline |
SDOCM00113942 |
IPU logger is using null timestamp provider
|
- If your application needs to
#include <ti/ipc/transports/TransportRpmsg.h>
then you must ensure that your compiler -I options are in the following
correct order:
-I <ipc>/linux/include -I <ipc>/packages
.
This is needed since the product erroneously contains a
ti/ipc/transports/TransportRpmsg.h
file in both locations, which will be fixed in an upcoming release.
- Examples are not yet provided for many devices. If applicable,
please refer to the SDK redistributing IPC for examples appropriate
for your device.
- The HLOS-allocated vrings (in rpmsg-based environments) must
currently be configured as non-cached from the slave side. This is
done in the typical, processor-specific way (e.g. MAR bits for C6x,
AMMU for IPUs, etc.). An enhancement is being considered to enable
these vrings to be cached from the slave side. That work is being
tracked as SDOCM00106580.
- The MmRpc API on Linux currently requires out of mainline kernel
support. They are, therefore, not available for all devices. TI
will be working with the community to push these features
mainline. Until that is available, TI may provide kernels for
select devices with support for MmRpc.
- The Linux MmRpc libraries are not pre-built (as they're not
supported on all kernels) - users of those APIs are required to
rebuild the IPC libraries as described in the IPC Install
Guide.
- The IPC product build performs some industry-standard checks on
the integrity of the source code. Currently there are some issues
that are flagged by these checks which we believe are benign. We
will be addressing these issues in a future release so as to get a
clean "bill of health" from these source code checks.
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_36_01_11.
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: https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/index.html
Last updated: May 22, 2015