TriCore Toolchain v1.5r1


TriCore Product Page, TriCore Support Page, TASKING Developers' Forum, TASKING Home Page, TASKING Embedded Communications Home Page



This release note describes the changes and new features of all TASKING TriCore products since v1.4r1.

The following parts are described:

The solved and known problems are not part of this release note, they are described in separate files: "solved_<name>_1_5r1.html".

The main reasons for this release are:


The default menu layout has been changed, resulting in a more comprehensible menu structure. The former 'EDE' menu has been removed, while a new 'Build' menu was added. All dialogs that used to be part of the 'EDE' menu have been subdivided over the 'Project', 'Build' and 'Help' menu. Other dialogs have been classified differently as well and moved to another menu entry. For example, the selection of the 'CPU' and 'Execution Environment' has been moved from EDE | Project Configuration to respectively Project | Processor Options and Project | CrossView Pro Options.
If you prefer the menu structure you are used to, then you have the option to switch back to the old style by selecting 'TASKING Classic Style' in the Customize | Menu Layout ... dialog.

Besides the menu layout improvements, the TriCore specific chromacoding lexers have been improved (e.g. PCP) and template expansion for C and C++ has been added.


Reported problems in the C++ compiler have been solved, no new functionality has been added.


TriCore 2 Support

From this release of the TASKING TriCore toolchain on, the TriCore 2 architecture is fully supported. For this purpose the option -TC2 has been introduced for both the compiler and assembler. This new option allows the compiler to generate TriCore 2 specific instructions, such as the FCALL, MOV En, LD.DD and ST.DD instructions.
Based upon register-usage information at compile-time the compiler will generate the CALL instruction or the FCALL instruction where appropriate.

Note that with the existing -C option you can select a specific CPU derivative. Since there are no derivatives for the TriCore 2 available yet, you can select a generic TriCore 2 CPU by means of invoking the option -Ctc2; The compiler now will include the special function register file For proper support of the TriCore 2, it is required that both options -TC2 and -Ctc2 are invoked.

Beside this new option, TC2 specific intrinsic functions have been introduced, which are described in the next paragraph.

TriCore 2 Specific Intrinsics

New intrinsic functions specific for TriCore 2 have been added to support TriCore 2 instructions:

Intrinsics _transpose_byte and _transpose_hword mixes 8 bytes or four halfwords into a double register that is represented by the additional data type _packw.

The _void _swapmsk (int value, int mask, int *memory); intrinsic exchanges the values of parameters 'value' and 'memory', but only those bits that are allowed by argument 'mask'. Before the _swapmsk instruction is generated, the parameters 'value' and 'mask' are moved into a double register.

The intrinsic _disable yields an indication whether the interrupts were enabled before. This indication can be passed to the _restore intrinsic to restore the state of the interrupt handling.

Other new Intrinsic Functions

New intrinsics that are available for both TriCore 1 and TriCore 2 derivatives:

To determine the minimum or maximum value of two short integers the intrinsics _mins and _maxs are available.

The new intrinsic short _clssf ( _sfract ); is the 'short fract' variant of _cls();.

Intrinsic _sfract _round16 ( _fract ); converts a 32 bit fractional data type to a 16 bit fractional data type by rounding the value instead of truncating it. When a "_sat" qualified argument is passed then rounding will be done with saturation.

Type qualifiers "restrict" and "_restrict"

When a loop updates an array it is necessary in most cases to tell the compiler that the array cannot overlap with other arrays used in the same loop. This can be achieved by declaring the arrays as "restrict" qualified pointers.
For example:

_sfract *restrict p;

declares a restrict qualified pointer to an _sfract object.
Strictly spoken, these type qualifiers are an ISO/IEC 9899:1999(E) feature, while the TASKING TriCore toolchain complies to ANSI X3.159-1989. However the "restrict" keyword can be enabled by the -Ar option.

New Options

The "restrict" keyword can be enabled or disabled by the -Ar or -AR option respectively.

With -Oo you enable Software Pipelining. Software Pipelining is a technique which increases parallelism in loops by executing iterations in an overlapped fashion. This includes the use of SIMD (single instruction multiple data) instructions. The optimization requires -Ocfv. Loops may execute up to four times faster with this optimization at the expense of an increased code size. With -OO you disable Software Pipelining.

Code Generation Improvements

Some existing optimizations of the compiler have been improved, resulting in either faster code or more dense code to be generated. Improvements should be noticeable for the loop unrolling, invariant code motion and dead code elimination optimizations.


The option -TC2 has been introduced for the assembler, it allows the use of TriCore 2 specific instructions in your assembly code.
Note that with the existing -C option you can select a specific CPU derivative. Since there are no derivatives for the TriCore 2 available yet, you can select a generic TriCore 2 CPU by means of invoking the option -Ctc2; The assembler now will include the special function register file regtc2.def. For proper support of the TriCore 2, it is required that both options -TC2 and -Ctc2 are invoked.


Synchronization feature can be turned off

When a breakpoint is hit, CrossView Pro will generate an ISYNC and a DSYNC instruction, to make sure that Memory windows and Register windows are synchronized. However in those situations where you are interested in accurate cycle counting, for instance when you are profiling, you want to be able to turn this feature off. To accomplish this, the startup option --sync_on_halt was introduced. From within CrossView Pro you can switch the feature on or off via the 'Run' menu and by selecting 'Synchronize on Halt' on/off.

New boards supported

The list of supported boards has been extended with evaluation boards for the TC1765, TC1920 and 'Rider D'.

TriCore 2 Support

Both a simulator for the TriCore 1 and TriCore 2 architecture are shipped with this release. If CrossView Pro is started from EDE, the correct simulator is selected for you. If you start CrossView Pro from the command line you will need to specify the simulator yourself. For this purpose two configuration files are available in the 'etc' directory: tsim.cfg and tsim2.cfg.

Download and Compare functionality

You can use the new File | Compare Application... dialog to check if an .abs file matches the downloaded application. This can be useful when you want to check if the program code has been changed, for example due to uninitialized pointers. The same check can be accomplished through the command window with the dcmp command.

Save Profiling Report

It is now possible to save your profiling results. Either you can use the commands cproinfo and proinfo from the command window or you can press the Tools | Profiling | Report | Save... button from the GUI to save the profile report in a file.
Note that profiling is only available when you use the simulator.

General improvements

Further improvements are introduced; for instance you will be warned if a source is newer than the .abs file.
Static variables within a function can be inspected and a hexadecimal display option in the Data Window has been added.
Furthermore, the performance of the terminal windows has been improved; scrolling and updating of windows has become much faster.

Copyright 2002 Altium BV