TriCore Toolchain v1.5r1
RELEASE NOTE
TriCore
Product Page, TriCore
Support Page, TASKING Developers' Forum, TASKING Home Page, TASKING Embedded Communications Home Page
SUMMARY
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 EDE menu structure has been made more intuitive.
- Support for TriCore 2 specific instructions has
been added to the C compiler.
- The functionality of the C Compiler has been extended with a number
of new Options, Qualifiers, and Intrinsic functions.
- CrossView Pro has undergone some general
improvements and new evaluation boards are supported.
- Simulators for both TriCore 1 and TriCore 2 are included.
- Solving of reported problems.
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.
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 regtc2.sfr. 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.
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.
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.
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'.
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