IPC 3.30.01.12 Release Notes
November 2014
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.30.01.12
- The following defects were resolved:
ID |
Headline |
SDOCM00113141 |
Recovery is not working in QNX on 'late-attached' cores
|
SDOCM00113709 |
NotifyDriverMbx on Vayu should not use Ipc module
|
SDOCM00113282 |
Ipc_attach() race on multiple cores corrupts Ipc_Reserved structs in SR0
|
SDOCM00113753 |
Notify mailbox driver is clearing wrong fifo during init phase
|
SDOCM00113592 |
MessageQMulti unit-test gets an out of heap memory error when run on K2E or K2L
|
SDOCM00113152 |
Watchdog module device validation & configuration should be in module$use method, not module$meta$init
|
SDOCM00113567 |
"struct fw_rsc_intmem" mismatch between Linux 3.14 and IPC 3.30.0.9
|
SDOCM00113527 |
libipc and libutils are not built for dynamic linking in QNX IPC
|
SDOCM00113866 |
Ipc family Settings.xs needs to add F28377D
|
SDOCM00113568 |
"struct fw_rsc_intmem" mismatch between QNX and IPC 3.30
|
SDOCM00113749 |
ex13_notifypeer example needs ping message from DSP to EVE
|
SDOCM00113588 |
IPC ping rpmsg unit-test hangs when run on K2L
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00112668 |
Loading/unloading individual cores while keeping other cores running in QNX IPC
|
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.30.01.12 requires system integrators to update
the following dependencies:
- XDC Tools 3.30.01.25 (or compatible)
- SYS/BIOS 6.40.01.15 (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.01.25
- SYS/BIOS 6.40.01.15
- 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.0.1
- 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.2.0
- ti.targets.elf.C66 - 7.2.0
- ti.targets.elf.C674 - 7.2.0
- Linux GCC toolchain - Linaro gnueabihf-4.7-2013.03-20130313
- QNX 6.6.0
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 SYS/BIOS 6.40.01 is known to cause a lockup issue
for ARP32/EVE applications:
ID |
Headline |
SDOCM00113935 |
ARP32/EVE Hwi_interruptClear() should not clear the IFR register (problem in Timer/IPC intitialization)
|
This bug will be fixed in SYS/BIOS 6.40.04 (available in late November).
Until then, all EVE users should stay on IPC 3.23.01, which uses an older
SYS/BIOS that does not contain this issue.
- 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
|
- 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_30_01_12.
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: November 12, 2014