XDC 2.94 Release Notes
April 27, 2007
Introduction,
Known Issues,
Documentation,
What's New,
Upgrade & Compatibility Information,
Host Support,
Dependencies,
Device Support,
Validation Info,
Version Information,
Technical Support.
eXpress DSP Components (XDC) is a standard for reusable software
components, optimized for real-time embedded systems. XDC components
have hardware-neutral formal interfaces, are configurable offline to
optimize memory and performance, and support custom automation in the
development environment via a scripting language.
XDC 2.94 is a minor release.
This XDC release includes the following sets of packages:
- XDC core (xdc.*) - the xdc and
xs command line utilities for building packages
and execting scripts, together with the packages that implement
XDC itself;
- User tools (xdc.tools.*) - command-line
and graphical utilities for working with packages and repositories;
- Targets (*.targets.*) - definitions for using
various TI and third-party compiler tool chains with XDC;
- Platforms (ti.platforms.*) - definitions for
linking and running code on various TI board-level hardware and
simulator products using XDC.
Enable XDC in CCS Component Manager before opening XDC-enabled CCS projects
This release of XDC includes integration into Code Composer Studio v3.3 on
Windows, via an XDC tab in the CCS project build settings. The CCS Component
Manager must be used to enable this tab after installing XDC, before opening
any XDC-enabled CCS projects.
Failing to enable XDC in Component Manager will cause CCS to
delete XDC build settings from XDC-enabled .pjt files.
This issue primarily affects example CCS .pjt files delivered with XDC and
dependent products.
To enable XDC in CCS Component Manager:
- Launch Code Composer Studio v3.3
- Select "About.." item from CCS "Help" menu
- Click "Component Manager" button in About dialog
- Expand "Target Content (XDC)" tree item
- Expand "TMS320C62XX" tree item
- Enable check box beside "XDC <2.94>" item
- Repeat steps 4-6 for C64, C67, and TMS470R1, R2 and R3 items
- Close Component Manager
- Click "OK" button in About dialog
- Close CCS
The XDC build settings tab will be available in CCS when it is next launched.
The following documentation is available:
Release notes from previous releases are also available in the relnotes_archive
directory.
The following significant changes have been made since 2.93
- Compatible changes to XDC module binary contract implementation
- New graphical repository management tool, xdc.tools.repoman.sg
- Improved tracking of package dependencies for library ordering
- Improvements to Log and Timestamp modules in XDC runtime
2.94 (This Release)
XDC Module Binary Contract
- internal changes to the C language binding to both speed up
compilation of the generated package/cfg/*.c file as well to
reduce code size. no impact on the programming model
- move the generated .h file for proxies into the package/
directory, both to remove the clutter from the top-level
directory as well as to emphasize that these .h files are
*not* to be #include'd by clients; these .h files are
automatically included by the module that spec'd the proxy.
- deprecated use of xdc/program.h in favor of new xdc/cfg/global.h
XDC Runtime
- add xdc.runtimeTimestampNull, an "empty" timestamp provider
that returns 0 for all results. this provider is also the new
default bound to xdc.runtime.Timestamp.SupportProxy
- refactored the Log module into three distinct modules: Diags,
which manages the trio of per-module masks with bits
corresponding to ENTRY, ASSERT, etc; Assert, which breaks out
the "assert" capability as well as defines an Assert.Id type
for declaring messages not unlike Error.Id; and Log, which
continues to provide a write/print set of functions. Both
Assert and Log internally use Diags (specifically, Diags_query)
for run-time control; Assert continues to use Error when
run-time assertion tests fail.
- as part of the Log refactoring, the boolean returned by
Diags_query() no longer considers whether common$.logger is
non-null for the current module; actual calls to Log_write
and Log_print continue to test for a non-null logger as well
as call Diags_query() in their implementation. this implies
that Assert can be "active" in a module for which no logger has
been defined
- removed System_clock() and updated all examples. this
functionality is now provided by either calling the C clock()
fxn directly (examples only) or else by using
xdc.runtime.Timestamp
- renamed xdc.runtime.ITimestampSupport to ITimestampProvider,
consistent with other naming conventions
- renamed xdc.runtime.TimestampSys to xdc.runtimeTimestampStd,
and changed the implementation to no longer call System_clock()
but rather to call clock() directly
- renamed the few remaining module-wide configs in the
xdc.runtime package with ALLCAPS names to use camelCase
instead, consistent with prevailing conventions in this and
other packages. impacted modules include Log and Text.
- added a proxy to LoggerSys of type ITimestampProvider, with a
default binding to xdc.runtime.TimestampNull, which is used
internally to retrieve timestamps; this features enables
LoggerSys to use a different provider than the global
xdc.runtime.Timestamp module.
- changed the default value of common$.logger to 'null'; this
param must now be explicitly assigned a value of type
xdc.runtime.ILogger.Handle. updated basic/examples/logging
accordingly.
- fixed xdc.runtime.SysMin.c to avoid infinite loops in the
event that HOSTwrite() returns a failure code
Platforms
- Added DM6441 (DaVinci) catalog files
- Removed IMCOP and VICP memories from DM420, DM6446, DM6467 and
any other devices that inherit from them
- implemented IPlatform.renameMap parameter that allows changing
only the names of memory objects (SDSCM00013507)
- added TMS320CDM6467 to ti.catalog.c470
- fixed the bug in evmDM6437; SRAM was named DDR2
- the device for evmDM6467 is now c470/TMS320CDM6467
- fixed the bug in evm6424; SRAM was named DDR2
- added DM647/DM648 (Kailash) datasheet
- added renameMap parameter and used Utils.assembleMemoryMap()
call that generates a map using renameMap, memory coming from
the device, the board memory and customMemoryMap
- evmDM648 clock set to 726 MHz
- updated DM6443 and DM6446 (DaVinci) datasheets
Configuro Build Tool
- Fixed a bug in xdc.tools.configuro in supporting mixed
XDC / BIOS 5.X tconf use case. Forced
"config.programName" to be an absolute pathname, so that
the tconf-generated linker script gets included correctly.
Also added "ti.bios" package as a requirement to the
configuro-generated package.xdc in this use case.
- added support for C62, C67, and TMS470R1, R2 and R3 to XDC
configuro biuld in CCS.
Repoman Repository Management Tool
- Added xdc.tools.repoman.sg tool for managing XDC repositories.
Repoman allows XDC users to easily add packages to their repositories,
from other repositories or from archive files, and graphically
flags package compatibility issues between packages on the package path.
It is a graphical front end for the xdc.tools.repoman command-line
tool.
- Added support for bundles and tar.gz files
- Added '-C' option to copy package
- Added repository-based packages branch to Packages
view. Can now drag n drop (copy) un-archived packages
to a repository in Package path view
- Only allow repositories created with repoman to be
modified
Xdoc / Cdoc Package Documentation Tool
- Extended {@link} tag to allow http: hyperlinks,
and links to files in packages. The link target for files
in packages are specified the same way as for xdc.findFile().
Made the "doc-files" directory name in a package special.
If this directory exists, its entire contents are copied
into generated cdoc output tree.
- Expanded XDOC markup language examples in the
xdc.tools.xdoc.Markup module.
Path Tool
- Fixed xdcpkg bug when invoking on Linux
XDC Script
- Added persistent spec name to extern functions and pointers if
the value is derived from a spec'd object.
- Added xdc.cfg.jserver.XVal.Extern to handle extern types.
ROM Support
- internal changes in the generated package/cfg/*.c file to
reduce code size in the ROM flow
- changed the binding of proxies in the ROM flow to occur
immediately within the ROM assembly; this implies that delegate
bound to the proxy must itself be in the ROM (since no
undefined function references are permitted). the net effect
is that proxy calls in client modules in the ROM will pass
directly to the delegate function, which is also in the ROM.
(note that latter, like all ROM'd functions, goes through a
RAM-based jump-table -- which also may be selectively removed
in the future)
XDC Build
- changed ITargetFilter interface to pass all link (archive)
arguments passed to the ITarget link (archive) method to the
filter method.
- updated all examples and the tisb.coverity.filters to
implement the new ITargetFilter interface
- fixed TCF module to allow arbitrarily long XDCPATH settings
and to check library path lengths before writing to arrays
XGCONF Graphical Configuration
- fixed XVal.Extern spec name bugs in toNative()
- Updated Properties View display filter to hide
Config params declared with @System.
- Updated XGConfBasics.pdf with fresh screen-shots.
- Fixed path separator in xdc.xgconf.getLibs and
xdc.xgconf.test.Main.
- Implemented XVal.Extern usage. Added auto check
for IArg, UArg, and Any types such that an entry
beginning with a & is an extern pointer, an entry
that is a valid number is a number, else it is
a string. Added Icons to distinquish what the
current type is that is set.
RTSC Object Viewer
- ROV can now fetch/decode arrays whose base-type is a scalar;
declaring a one-field struct-type for this purpose is no longer
needed. if the base-type is a handle (or any pointer-type),
only the raw address value is fetched.
Enhancements
The following minor enhancements were resolved:
ID |
Headline |
SDSCM00014894 |
cdoc should provide a clean way to embed http:// hyperlinks |
Defects
The following defects were resolved:
- fixed an internal bug that resulted in compile errors in the
generated package/cfg/*.c file when using named instances
- Improved ordering of libraries in generated linker command file.
Improved tracking of references to other packages in
scripts, and and sorted packages based on this dependency
graph.
- fixed the bug in the dependency graph; in the case of packages
not being found, they were still left in the dependency graph,
so if the error thrown from xdc.loadPackage() was caught and
the configuration continues, an error would occur
ID |
Headline |
SDSCM00013507 |
Plaform files need to be more configurable |
SDSCM00013935 |
XDOC support for nbsp |
SDSCM00013937 |
XDOC and CDOC do not generate info about proxys |
SDSCM00014151 |
xdoc links should follow package scope rules |
SDSCM00015135 |
cdoc generates duplicate config params docs |
SDSCM00015257 |
"Go forward" and "Go back" arrows in CDOC are non-functional |
SDSCM00015455 |
cdoc sometimes removes '+' sign from strings |
SDSCM00015960 |
API's Documentation missing in CDOC/XDOC for Queue module |
SDSCM00016326 |
Clock_construct needs to take Error Block param as well |
SDSCM00016498 |
3 cdoc issues (2 creates, @_nodoc/module, hide proxies) |
SDSCM00016717 |
Mismatch in declaration of Semaphore_construct ( ) API in CDOC |
SDSCM00017016 |
cdoc should provide a way to link to other documentation |
SDSCM00016135 |
Order of libraries in generated .xdl may be incorrect |
SDSCM00015135 |
c generates duplicate config params docs |
SDSCM00015455 |
cdoc sometimes removes '+' sign from strings |
SDSCM00015960 |
API's Documentation missing in CDOC/XDOC for Queue module |
SDSCM00016326 |
Clock_construct needs to take Error Block param as well |
SDSCM00016717 |
Mismatch in declaration of Semaphore_construct ( ) API in CDOC |
SDSCM00016714 |
long paths break xs and tconf |
SDSCM00016428 |
XDC build for Windows Host throws Link Error with lnkx86 |
SDSCM00016374 |
DM6441 and DM6443 devices missing from ti.catalog.c6000 package |
SDSCM00016132 |
VICP/MEM base/length are incorrect in DM6446 catalog files |
SDSCM00016293 |
evmDM6437 and evm6424 platform files have 2 sections named
"DDR2" |
SDSCM00007214 |
Closed views generate errors on selection changes |
SDSCM00012059 |
Corrupt scripts can hang the config jserver. |
SDSCM00016110 |
Function pointers assigned to non meta only config objects
fail xdc build |
2.93.02
Platforms
- Bug fixes for some C64x device family platform files
Defects
The following defects were resolved:
ID |
Headline |
SDSCM00016293 |
evmDM6437 and evm6424 platform files have 2 sections named "DDR2" |
2.93.01
Configuro Build
- Fixed a bug in xdc.tools.configuro in supporting mixed
XDC / BIOS 5.X tconf use case. Forced
"config.programName" to be an absolute pathname, so that
the tconf-generated linker script gets included correctly.
Also added "ti.bios" package as a requirement to the
configuro-generated package.xdc in this use case.
Defects
The following defects were resolved:
ID |
Headline |
SDSCM00016256 |
Configuro fails on .tcf files |
- ti.targets - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,0,1)
- gnu.targets - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,0,1)
Warning: Beginning with xdc-o02, internal C files generated when
building package schemas are
named package_<package name>.c instead of <package_name>.c.
This may introduce incompatibilities with older xdc-n and xdc-o trees
(XDC 2.X products).
The compatibility with metaonly xdc-m packages (XDC 1.X products) is still maintained.
Compatibility Key Definitions
Compatibility keys are intentionally independent of Marketing product numbers
and are intended to:
- Enable tooling to identify incompatibilities between components, and
- Convey a level of compatibility between different releases to set end user
expectations.
Compatibility keys are composed of 3 comma-delimited numbers - M,S,R - where:
- M = Major. A difference in M indicates a break in compatibility.
- S = Source. A difference in S indicates source compability. That
is, the user's source doesn't require change, but does require
rebuilding.
- R = Radix. A difference in R indicates an introduction of new
features, but compatibility with previous interfaces has not broken. If
libraries are provided by the package, an application must re-link with the
new libraries, but not rebuild from source.
This release supports the following hosts:
- Windows XP
- RedHat Enterprise Linux 3
This release requires the following other software components and tools
versions to successfully function:
- C6x Code Generation Tools version 5.3.0. or later
- C55 Code Generation Tools version 3.2.0. or later
- GCC for x86 version 3.2.3 or later
- GCC for ARM version 3.2.3 or later
This release supports the following device families:
- C67P, C67, C64P, C64, C62
- C55P, C55, C54
- C28
- TMS470
- Native development host
This release was built and validated against using the following components:
- Code Composer Studio version 3.3
- C6x Code Generation Tools version 6.0.7
- C55 Code Generation Tools version 3.2.2
- GCC for x86 version 3.2.3
- GCC for ARM version 3.2.3
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, e.g.
xdc_2_93.
Subsequent releases of patch upgrades will be identified by the patch number,
ex. XDC 2.93.03 with directory xdc_2_93_03. Typically,
these patches only include critical bug fixes.
Please note that version numbers and compatibility keys are NOT the same. For
an explanation of compatibility keys, please refer to the 'Upgrade and
Compatibility Information' section.
For technical support, contact rtsc_champs@list.ti.com
Last updated: April 27, 2007