TASKING VX-toolset for TriCore v5.0r2
Release Note

Scope

This release note covers the changes between v4.4r3 and v5.0r2 of the TASKING VX-toolset for TriCore.

For release notes prior to v5.0r1, please visit the TASKING TriCore support website.


Contents

Important Notices

HSM

Support for the special function registers (SFR) of the HSM is available through a separate installer. For security reasons related to the HSM,  Altium will verify the possible availability of the SFR installer to an end user with Infineon. Once Infineon gives Altium permission to release the SFR installer, we will make it available through a secure FTP location.

Simulator update

To support the latest AURIX derivatives hardware it is required to upgrade to the latest simulator from Infineon, TSIM v1.11.62. Therefore this version is included in this release.

DAS 4.6.0 support

The v5.0r2 has been tested with the latest DAS version 4.6.0 of Infineon. No problems have been found. It is recommended to use DAS 4.6.0  with TriCore v5.0r2. Download here.

New in v5.0r2

This section gives an overview of the most important new features and improvements in v5.0r2. See the sections with fixed issues for a complete list.

C++ Compiler update for C11 compliancy

To be able to support the C11 in the TriCore C++ Compiler, its front end has been upgraded. With this update the following new options are introduced:

Option
Description
--c++03 enable C++ extensions defined by the C++ 2003 working paper
--c++11
enable C++ extensions defined by the C++ 2011 working paper (replaces --c++0x)
--c++11-sfinae enable the C++11 SFINAE rules (replaces --c++0x-sfinae)
--c++11-sfinae-ignore-access allow access errors in C++11 SFINAE that make deduction fail (replaces --c++0x-sfinae-ignore-access)
--c++14 enable C++ extensions defined by the C++ 2014 working paper
--delegating-constructors delegating constructors (a C++11 feature) are accepted
--deprecated-string-conversion the deprecated conversion from string literal to char * is allowed in C++ mode.
--export enable recognition of exported templates
--generate-move-operations generate move constructors or move assign operations
--implicit-noexcept implicit noexcep specification for destructors and deallocation functions
--inline-statement-limit=<num> sets the maximum number of statements that a routine can have and still be inlinable. Default=100
--lossy-conversion-warning issue a diagnostic whenever a conversion occurs from one arithmetic type to a smaller one or from a floating to an integral type.
--max-constexpr-call-count=<value> the maximum number of constexpr function and constructor calls allowed in the expansion of one top-level call. Default=50000
--max-constexpr-call-depth=<value> the maximum permitted depth of constexpr function and constructor call nesting. Default=1000
--no-c++11-sfinae disable the C++11 SFINAE rules
--no-c++11-sfinae-ignore-access disallow access errors in C++11 SFINAE (replaces --no-c++0x-sfinae-ignore-access)
--nonstd-anonymous-unions a set of extensions is supported that permits features similar to C++ anonymous unions
--preserve-lvalues-with-same-type-casts a cast of an lvalue to its own type should result in an lvalue
--unrestricted-unions accept C++11-style "unrestricted unions"
--user-defined-literals C++11 user-defined literals are permitted.
--variadic-templates accept C++11 variadic templates (i.e., parameter packs)

Refer to TCVX-40106.

Note: in this release the option --c++0x (alias for --c++11) is still available for backwards compatibility. In the next major release this option will become obsolete (and thus removed).

Support for C++ lock-free atomic operations

Support for C++ lock-free atomic operations in machine word size has been added to this release.

The atomic operations are implemented through the use of atomic operations provided by the TriCore instruction set architecture, the implementation does not use mutexes or other locking mechanisms to stall threads.

Objects of atomic type and the data objects that are protected by atomic types shall be allocated in non-cached memory. This can either be achieved by disabling the caches or by updating the linker script language file (LSL file). In the latter case the sections in which the objects are allocated must be selected and allocated at addresses that correspond to non-cached memory.

Refer to TCVX-40247.

Multi-core hardware debug support

The TriCore debugger does now support multi-core hardware debugging. Refer to the below picture while reading the following.

IDE_Debug

Multi-core Debug

Note: multi-core hardware debug support in the script debugger (dbgtc) is planned for the next major release.

High Level Dumper new features

Elfpatch tool new features

The Data Reference Modification feature is extended with modification of data references inside C structures. The data references are const pointer initializers referencing global variables. The global variables can have any data type. The C structures can be defined as const. The syntax of the new structure related DRM is:

    structure: original_const_pointer_initializer = new _const_pointer_initializer;

These rules needs be included in to the function DRM file (--data-reference-modification-file=<file>). All references are symbol references. Refer to TCVX-39965.

Further the --report option is extended to be able to give a final global report on the commands executed or not executed. The -vv option is no longer really required anymore. Besides this the usage of the --report option is changed to hold the long sub-option names (like --dump-format of hldumptc). Refer to TCVX-40080.

New C compiler intrinsics functions

There are two new intrinsics function to get and set stack pointer register A10:

When a trap service routine is called, the d15 register contains the so-called Trap Identification Number (TIN). This number identifies the cause of the trap. In the trap service routine you can test and branch on the value in d15 to reach the sub-handler for a specific TIN.

With the new intrinsic function you can use the TIN anywhere in your code:

Multi-core example Mandelbrot for TriBoard TC27x

In the TriCore examples an example is added, named Mandelbrot, which demonstrates multi-core Mandelbrot on TriBoard tc27x. This program generates an image of the Mandelbrot set using a number of CORES. This shows the speed up of the algorithm using parallel processing on AURIX cores. The number of cores used can be set with macro CORES. The process time is printed on stdout in milliseconds. Time measurement is default enabled with macro MEASURE_TIME. The output is a binary image with 1 byte per pixel. The program prints the instructions on stdout as to how to process the output to produce a jpeg file using unix command line tool convert. The output is generated in a file at Debug/output. Output generation is default enabled with macro OUTPUT.

This example is a good starting point when starting programming a multi-core application.

New in v5.0r1

This section gives an overview of the most important new features and improvements in v5.0r1. See the sections with fixed issues for a complete list.

Support for MISRA C:2012

This release adds MISRA-C12 support to the C compiler. Rules selection and related configuration can be done from Eclipse. See the User Guide for the list of rules supported by the TriCore C compiler, PCP C compiler and ARM C Compiler (HSM).

Eclipse IDE update to version 'Kepler'

This release holds an updated version 4.3.2 of the IDE Eclipse named Kepler. For features, improvements and bug fixes please refer to the Eclipse community web-site.

New AURIX derivatives SFR support

SFR support has been added for the following AURIX derivatives: TC21x, TC22x, TC26x B-step and TC29x B-step.

TriBoard support TC27x C-step

With this release the AURIX TriBoard TC27x C-step is being supported.

Shift JIS Kanji support

In order to allow for Japanese character support on non-Japanese systems (like PCs), you can use the Shift JIS Kanji Code standard. This standard combines two successive ASCII characters to represent one Kanji character. A valid Kanji combination is only possible within the following ranges:

Compiler option -Ak and Assembler option --kanji enables support for Shift JIS encoded Kanji multi-byte characters in strings and (wide) character constants. Without this option, encodings with 0x5c as the second byte conflict with the use of the backslash ('\') as an escape character. Shift JIS in comments is supported regardless of this option.

Note that Shift JIS also includes Katakana and Hiragana.

Improved floating point configuration: --fp-model

The C compilers and control program support a new option --fp-model to control all floating point related settings. Some of those settings were formerly done with separate options. Also Eclipse got a new separate page for setting the floating point model options.

The following flags are available:

--fp-model=<flag>
Description
Target
Replaces and deprecates option
0
strict alias for --fp-model=CFLNRStZ TriCore, PCP

1
precise alias for --fp-model=cFLNRSTZ TriCore, PCP

2 (default)
fast-double alias for --fp-model=cFlnrSTz TriCore, PCP

3
fast-single alias for --fp-model=cflnrSTz TriCore

c/C +/-contract allow expression contraction TriCore, PCP
--no-macs
f/F +/-float treat 'double' as 'float' TriCore
--no-double
l/L +/-fastlib allow less precise library functions TriCore, PCP
n/N +/-nonan allow optimizations to ignore NaN/Inf TriCore, PCP
r/R +/-rewrite allow expression rewriting TriCore, PCP
s/S +/-soft use software floating point library TriCore
--no-fpu, --fpu-present
t/T +/-trap support trapping on exceptions TriCore, PCP --fp-trap
z/Z +/-negzero ignore sign of -0.0
TriCore, PCP

The defaults are:

Refer to the below table for usage of the --fp-model sub-options.

Option
Description
--fp-model=+contract Allow the compiler to contract multiple float operations into a single operation, with different rounding  results. A possible example is fused multiply-add.
--fp-model=+float Tell the compiler to treat variables and constants of type double as float. Because the float type takes less space, execution speed increases and code size decreases, both at the cost of less precision. Used libraries have to be built with the same setting for this option.
--fp-model=+fastlib Allow the compiler to select faster but less accurate library functions for certain floating-point operations.
--fp-model=+nonan Allow the compiler to ignore NaN or Inf input values. An example is to replace multiply by zero with zero.
--fp-model=+rewrite Allow the compiler to rewrite expressions by reassociating. This might result in rounding differences and possibly different exceptions. An example is to rewrite (a*c)+(b*c) as (a+b)*c.
--fp-model=+soft No hardware floating point instructions are generated, only calls to the software floating point library.
--fp-model=+trap Operations trap on floating-point exceptions. Typically a trapping floating-point library is needed.
--fp-model=+negzero Allow the compiler to ignore the sign of -0.0 values. An example is to replace (a-a) by zero.

Related pragmas
Pragma
Description
#pragma STDC FP_CONTRACT (*) (+) Standard ISO-C99 pragma, that controls the +contract flag of --fp-model.
#pragma fp_negzero (*) (+) Control the +negzero flag of --fp-model.
#pragma fp_nonan (*) (+) Control the +nonan flag of --fp-model.
#pragma fp_rewrite (*) (+) Control the +rewrite flag of --fp-model.

TriCore Compiler __atbit() and __bit are deprecated

The compiler (up to version v4.x of the toolset) was supporting __atbit() for backwards compatibility. With v5.0r1 it is deprecated. When used the following warning will be given:

W766: __atbit has been deprecated, use classic method of C masking and shifting, intrinsic functions __extru and __imaskldmst or bitfields.

You should rewrite your application as recommended.

TriCore Compiler __bit is deprecated

The compiler was supporting __bit, but actually it was exactly the same as _Bool. The __bit was used with __atbit() which has been deprecated too. Use _Bool instead.

Changes in High Level Dumper

Some updates have been made to the High Level Dumper, hldumptc. Below is a small list with the major updates. For the complete list refer to 160-39604 .

Fixed issues for v5.0r2

Improvement

New Feature

Problem

The list of open issues for v5.0r2 can be found on the internet.

The list of open MCS issues for v2.0r1 can be found on the internet.

Fixed issues for v5.0r1

Improvement

New Feature

Problem

The list of open TriCore issues for v5.0r1 can be found on the internet.

The list of open MCS issues for v2.0r1 can be found on the internet.

Quick start

For a quick start, just start the TriCore Eclipse IDE from the Start menu. This will start the Eclipse based development environment. You will be asked to select a workspace. In case you used Eclipse before it is recommended to select a new workspace. After clicking OK, you will see the 'Welcome' view. On this view you will see icons that link to specific information. You can, for example, select the 'Samples' icon and import the TriCore project examples, PCP project examples, MCS project examples, 8051 project examples and/or ARM example projects.

Another icon on the Welcome page, the 'First Steps' icon, links to the 'TriCore Getting Started' document. This is a good starting point for exploring the capabilities of the environment and the tools.

License Information

TASKING products are protected with TASKING license management software.

License key

You need a license key when you install a TASKING product on a computer. When you order a TASKING product from Altium or one of its distributors, a license key will be sent to you by email or on paper.

See the Getting Started with the TASKING VX-toolset for TriCore guide for information on obtaining a license.

Local TASKING License Server (not applicable to evaluation licenses)

If you have ordered a TASKING product with a floating license, you can have it serviced by the Remote TASKING License Server (the most convenient solution) or through a Local TASKING License Server (in case you have no external network access for example). Consult your Altium representative for assistance on deciding what the best setup would be for your situation.

If you like to setup up a local license server, we kindly refer you for more information to Support for TASKING License Management System (TLM) on our website. Here you can also download the Local TASKING License Server package.

It is advised that you install the Local TASKING License Server before you install products that require this server.