TASKING TriCore VX-Toolset v2.0r2

RELEASE NOTE


SUMMARY

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

(The release notes of the previous TASKING TriCore VX-toolset v2.0r1 release can be found in the readme_2_0r1.html document)

The following parts are described:

The main reasons for this release are:


INTRODUCTION TO THE VX-TOOLSET

As you may have noticed the letters VX are added to the name of this new TASKING TriCore toolset. VX is short for Viper eXperience, and it indicates that this toolset incorporates the new generation VIPER DSP-C compiler technology. This compiler has been developed in-house by Altium and offers true state-of-the-art code generation. Furthermore specific DSP optimizations have been added, so you will find an improved performance of the compiler in both generated code size and run-time speed.

The compiler offers full compliance with the latest ISO C 1999 standard, for instance the _Bool and long long data types are available and ready for use.

In our strive for being in accordance with the TriCore EABI (Embedded Application Binary Interface), we have introduced the ELF/DWARF 2 object format. This smoothes the integration with many third party products such as RTOS's, software libraries and debuggers. For this purpose the assembler and linker have been redesigned as well. The new linker comes with an enhanced Linker Script Language (LSL) that replaces the obsolete DEscriptive Language For Embedded Environments (DELFEE).

With the upgrade to the Viper technology it turned out to be not possible to maintain full backwards compatibility. However, we have included a migration tool to help you convert a project, originally set up for a previous TriCore toolset, to one that will build with this new toolset.


EDE

New Features


C++ COMPILER

No new/changed features.


C COMPILER

Incompatibility Warning

Byte and halfword parameters on the stack were misaligned in version v2.0r1 of the TriCore VX-toolset. This has been corrected in version v2.0r2. Please be aware that functions using byte and halfword parameters on the stack, cause incompatibility problems between versions v2.0r1 and v2.0r2 of the TriCore VX-toolset.

New Silicon Bug Workarounds

New silicon bug workarounds have been introduced:

New Pragmas

New Features

The -A language extension option of the compiler has been modified. The "k" suboption has been removed and the "x" suboption, relaxed const check for string literals, has been added. Several bugfixes and improvements have been included within the compiler. For example, value range tracking has been introduced and updates for pack2 and saturated int have been implemented.


ASSEMBLER

No new/changed features.


LINKER

Range Restricted Section Groups

This feature allows you to use arbitrary address ranges as group addresses in LSL. Full memory ranges were already available with the simple mem : mem_name. A space address range is written as [ expr .. expr ], a memory range as mem : mem_name [ expr .. expr ]. As usual, it is possible to allow the linker to use multiple address ranges by separating the ranges with |. Furthermore, a space address range from a certain offset till the end of the memory can be written as mem : mem_name [expr ..].

Examples

group(ordered, run_addr = [0xA0000100..0xA0000200])
{
    ...
}

group(ordered, contiguous, run_addr=mem:mychip:internal_rom[0x0..0x100])
{
    ...
}

group(ordered, contiguous, run_addr=mem:ext_ram | [0x80010000..0x80020000] | mem:ext_ram2[0x0..0x30000])
{
    ...
}

group(ordered, contiguous, run_addr=mem:mychip:internal_rom[0x1000..])
{
    ...
}

Reserved Memory

If the reserved keyword is not used on a memory type, that memory is available for the linker without any restriction. All sections can be located into that memory.
If the reserved keyword IS used on a memory, that memory is default excluded from the locate algorithm. You can only locate into that memory by locating sections explicitly. Explicit locating is done with one of the following group types:

Examples

memory ext_c
{
    type = reserved rom;
    // type = rom;

    mau = 8;
    size = 512k;
    map ( dest=bus:spe:fpi_bus, dest_offset=0xA0000000, size=512k );
}

Reserved Groups

The locate algorithm now supports locating single or multiple absolute sections into reserved areas.

To use this feature, do the following:

  1. Create a reserved area
  2. Select the sections of your choice, which you would like to place within this reserved area

Examples

Revised Linker Output Format Option

The -F and -s options have been removed, the -o option should be used instead.

-o [<filename>][:<format>[:<addr_size>][<,space_name>]]
--output=...

specify a task output object file

filenamethe full filename to use; if not specified, the task's basename will be used with the default file extension for the format
formatthe file format (ELF,IEEE,IHEX,SREC); if not specified, the default format will be used
addr_sizethe size of addresses in bytes; supported values: 1, 2, and 4 for IHEX, 2, 3, and 4 for SREC; if not specified, the default address size for the format will be used
space_namethe name of the address space to which hexfile the filename applies; if not specified, the default hexfile address space is used, other space hexfiles of the specified format get the name <basename>_<spacename>.<extension>


UTILITIES

No new/changed features.


CROSSVIEW PRO

No new/changed features.


Copyright 2003 Altium BV