TASKING VX-toolset for C166 v2.4r1
Release Note


This release note covers the changes between v2.3r1 and v2.4r1 of the TASKING VX-toolset for C166.


New in v2.4

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

Improved Map File Viewer in Eclipse

The map file viewer in Eclipse has been improved to make it easier to analyse the results of your build. The following improvements have been made:

See the User Guide, section "13.2. Linker Map File Format" for a detailed description of the map file viewer

New C compiler Attribites: __attribute__((used)) and __attribute__((export))

Two new attributes have been added to the compiler:

Attribute Description
__attribute__((used)) Prevent unreferenced objects from being removed by the compiler or linker. This replaces the #pragma protect, which becomes depricated.
__attribute__((export)) Indicates that not all uses of a variable/function can be known to the compiler during the mil-link phase. For example when a variable is referenced in an assembly file or a (third-party) library.

Changed Control for Automatic Inlining

The automatic inlining optimization of the compiler can now be controlled with the --trade-off (-t) option. This makes it easier to configure the optimizations for an application. The --inline-max-incr and --inline-max-size options are still available and can be used to overrule settings made by --trade-off.
In Eclipse the default values of the --inline-max-incr and --inline-max-size options is now empty, meaning that the --trade-off setting is used.

See the User Guide section "4.6.3. Optimize for Size or Speed" paragraph "Automatic Function Inlining" for details.

Improved Optimization

Several improvements to the optimization have been made:

119-36867 - Improvement of unreferenced object removal.The compiler now also removes initialized static unreferenced objects. To prevent the removal the "used" attribute can be used:

 __attribute__((used)) static char id[] = "123456789"; 

119-37062 - Improved constant propagation. Most significant improvements can be expected when using MIL linking in combination with automatic inlining in the shuge and huge memory models.

119-37094 - Optimize dead stores on stack. Occasionally the compiler generates code for storing registers on stack while this is not necessary.

Option to Make Volatile Access Blocking for Optimizations

The behavior of a compiler with respect to optimization across volatile accesses is defined as implementation defined in the ISO-C '99 standard. With the new C compiler option -Av (--language=+volatile) you can control this behavior. By default the compiler has the same behavior as in previous versions and will optimize across volatile accesses. With the -Av or --language=+volatile option the compiler will make a volatile read or write access blocking for optimizations.

New Option and Pragma to Copy const Data from ROM to RAM

In v2.3r3 a new compiler option --ramdata and the #pragma ramdata are introduced, which can be used to force allocate static and global const variables in RAM. The initialization is done by copying the data from ROM to RAM, using the copy table, just like with any not const global or static initialized variable. The #pragma noramdata turns back to the normal behavior of putting const global and static variables only in ROM.

The option and pragmas allow you to put const variables into fast on-chip RAM.

New Option to Ignore the Memory Type for Automatics

Normally the compiler will not accept a memory type other then __near for automatic/parameter variables and will issue an error. The reason for this is that the user stack is always in near memory. In v2.3r3 the option --ignore-memory-type-for-automatics is introduced to let the compiler accept any memory type. The compiler will ignore the memory type and use __near instead.

CERT C Secure Coding Standard Checks Added.

The C compiler in the VX-toolset for C166 Premium Edition now has support for checking CERT C Secure Coding Standard rules and recommendations.
All level 1 checks that can be performed by a compiler without significantly impacting the compilation time are supported, as well as some checks at other levels.

The compiler can check for the following rules and recommendations:

Category Implemented Checks
01. Preprocessor PRE01, PRE02, PRE10, PRE11
02. Declarations and Initialization DCL30, DCL31, DCL32, DCL35
03. Expressions EXP01, EXP12, EXP30, EXP32, EXP33, EXP34, EXP37, EXP38
04. Integers INT30, INT34, INT35
05. Floating Point FLP30, FLP35, FLP36
06. Arrays ARR01, ARR34, ARR35
07. Characters and Strings STR30, STR33, STR34, STR36
08. Memory Management MEM00, MEM08, MEM30, MEM31, MEM32, MEM33, MEM34, MEM35
10. Environment ENV32
11. Signals SIG30, SIG32
49. Miscellaneous MSC32

See the CERT site for more information: https://www.securecoding.cert.org/confluence/display/seccode/CERT+C+Secure+Coding+Standard

Additional Features in Make Utility (amk)

The make utility, amk has been extended with several new features:

See for details the User Guide, section "9.3. Make Utility amk".

MCDS Support in Debugger

With v2.4r1 support for MCDS has been added to the debugger. To debug using MCDS the Hitex TantinoXC wiggler and MCDS drivers are required.

Support for DAP

With the installation on Windows a new version of DAS (v2.9.0) is installed. With this version the new Infineon MiniWiggler with support for DAP is supported. For using DAP on the EasyKit boards the dip switches have to be set correctly (1,2 and 5 on; 3 and 4 off). In Eclipse you have to select "DAS over MiniWiggler" as communication method.

Stand-alone Script Debugger

Starting with v2.3r3 a new stand-alone debugger program is introduced, additionally to debugger that is integrated in the Eclipse environment. This stand-alone script debugger is not a complete debugger; facilities such as a register or a memory window are not available. Instead, its primary purpose is to run scripts created by the user for testing purposes.

More information can be found in the TASKING Script Debugger User Guide.

Fixed issues for v2.4r1


New Features

Fixed Problems

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

Fixed issues for v2.3r3

New Features


Fixed Problems

The list of open issues for v2.3r3 can be found on the internet.

Fixed issues for v2.3r2

Fixed Problems

The list of open issues for v2.3r2 can be found on the internet.

License Information

15-day Trial

When using the product without a valid license, the tools will run in trial mode. This means you can use the toolset 15 days with full functionality. When running in trial mode, each tool will report the number of days left. When using a license that does not cover the full toolset, the tools that are not covered by the license will run in trial mode.

When after installing the license file the tools that are covered by the license still report that they are running in trial mode, this means that there is a license error. If you want to force the termination of the trial mode to get the FLEXlm error message you can set the environment variable FORCE_NO_TRIAL to "yes".

How to Obtain a License Key

All TASKING products include the industry standard FLEXlm license management software. In order to be able to run this toolset, you will need a license key, although you can use the full functionality during the 15 day trial period as described above. You can only obtain a license key if you have purchased this product.

To obtain a license key, you can start the License Administrator from the program group of your installed TASKING toolset. In case you still need to install the toolset, you can start the License Administrator by setting a check mark at the end of the setup/installation process. The wizard of the License Administrator will guide you through the steps to obtain your license key.
Once you have received your license key from Altium, you can install it on your system by running the License Administrator again. Alternatively you can simply save the license key as the file 'license.dat' in the C:\FLEXLM folder on your PCs hard disk.

More information is available on http://www.tasking.com/support/flexlm. On this page you also find assistance to setup a floating network license, or for installation on Linux or Sun systems.