TASKING VX-toolset for C166 v4.0r1
Release Note
Scope
This release note covers the changes between v3.1r1 and v4.0r1 of the TASKING VX-toolset for C166.
Contents
This section gives an overview of the most important new features and improvements in v4.0. See the sections with fixed issues for a complete list.
Installation and license manager
The installed Java Run Time environment has been updated to version 8 update 21. *
The Infineon DAS driver installation is done on demand. As soon as the debugger in Eclipse is started it
will check whether DAS is installed and verify its version. If needed it will prompt to download and install
the drivers before proceeding. *
FLEXlm license management system has been replaced by the TASKING License Management (TLM). See the user
documentation for more information.
* - Does not apply to Linux version
Eclipse IDE Changes
The Eclipse IDE distribution has been updated to Luna: Eclipse 4.4.1 and CDT 8.5.0.
The updated TASKING plug-ins include the following changes:
- New properties pages for MISRA C:2012, Floating-Point, C compiler cache
- Generate makefile from the command prompt
- Added DAvE support for XC2289I, XC2361E and XC2269I projects
MISRA C:2012
This release adds MISRA C:2012 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 C166 C compiler.
The new option --misrac-mandatory-warnings has been added to turn mandatory rule violation into warning.
A new predefined macro has been added: __MISRAC_VERSION__
New --fp-model option
The C compiler 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:
- The --no-double/-F C compiler option has been replaced by --fp-model=+float
- The --fp-trap control program option has been replaced by --fp-model=+trap
Related new pragmas:
- #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.
A new predefined macro __PRECISE_LIB_FP__ is added.
See the user manuals for full documentation of the --fp-model option.
Build time improvements with C compiler cache
The C compiler now has support for caching intermediate results to avoid full compilations. When the source
code after preprocessing and relevant compiler options and the compiler version are the same as in a previous
invocation, the previous result is copied to the output file. The cache only works when there is a single C
input file and a single output file. This cache can be enabled with the --cache option.
In Eclipse: Project > Properties > C/C++ Build > Settings > C/C++ Compiler > Optimization
> Compilation speed
Shift JIS Kanji support
Compiler option -Ak and assembler option --kanji enable support for Shift JIS encoded Kanji multi-byte
characters in strings and (wide) character constants.
_Static_assert()
The C compiler now supports _Static_assert() from the ISO 9899:2011 C-standard.
Standard C library function implementation extended
The implementation of the standard C library has been extended with the following functions:
fenv.h: _fesetround, fegetenv, fegetexceptflag, fegetround, feholdexcept, fesetenv, fesetexceptflag,
fesetround, feupdateenv
fprt.h: sp_round8_and_normalize
math.h: _isgreaterf, _islessgreaterf, _isnan, _isnanf, _isnanl, cbrt, cbrtf, cbrtl, erf, erfc, erfcf,
erfcl, erff, erfl, exp2, exp2f, exp2l, expm1, expm1f, expm1l, fdim, fdimf, fdiml, fma, fmaf, fmal, fmax,
fmaxf, fmaxl, fmin, fminf, fminl, ilogb, ilogbf, ilogbl, lgamma, lgammaf, lgammal, llrint, llrintf, llrintl,
llround, llroundf, llroundl, log1p, log1pf, log1pl, log2, log2f, log2l, logb, logbf, logbl, lrint, lrintf,
lrintl, lround, lroundf, lroundl, nan, nanf, nanl, nextafterf, remainder, remainderf, remainderl, remquo,
remquof, remquol, round, roundf, roundl, tgamma, tgammaf, tgammal, trunc, truncf, truncl
High Level Dump tool (hldump166) updates
The following updates have been made to hldump166:
- The -A/--address-size option has been removed
- New flags have been added to the -e/--expand symbols option:
b or +basic-types will expand arrays with basic C types
g or +gap-info will insert gap markers where data isn't consecutive
n or +nesting-indicator will print nesting bars in the symbol list
- New -b/--blank-out option will blank out addresses and optionally labels in all dump phases
- New -r/--disassembly-without-encoding option. When set the address and encoding in the disassembly of a
code section is omitted
- New -x/--hex option to dump ELF sections hexadecimally
- New --copy-table option, to use the copy table to translate disassembly addresses
- Option -d/--data-dump-format has been removed
- New flag for -i/--disassembly-intermix:
s/S +/-single-line will emit a single source line per instruction
C++ compiler updated to EDG 4.9
The EDG front-end in the C++ compiler has been updated from v4.2 to v4.9.
With this update the following new options are introduced:
Option | Description |
--c++03 | enable C++ extensions defined by the ISO/IEC 14882:2003 standard |
--c++11 | enable C++ extensions defined by the C++11 standard, ISO/IEC 14882:2011 (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++14 stabdardm ISO/IEC 14882:2014 |
--delegating-constructors | delegating constructors (a C++11 feature) are accepted |
--deprecated-string-conv | the deprecated conversion from string literal to char * is allowed in C++ mode. |
--generate-move-operations | generate move constructors or move assign operations |
--implicit-noexcept | implicit noexcept 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 (replaces --no-c++0x-sfinae) |
--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) |
Note: With the new STLport library all identifiers defined in the C++ headers for C library facilities
have been moved to the std namespace.
Example:
#include <iostream>
#include <cstdio>
int f()
{
std::cout << "test\n";
std::printf("test\n");
}
To build existing applications you can specify the --using-std command-line option instead.
With this update the following options of cp166 have been removed:
- --export
- --exported-template-file
- --no-auto-instantiation
- --no-export
- --template-directory
- --template-info-file
Debugger improvements and changes
- Debugger can now read Intel Hex files and S-record files
- The debugger supports downloading multiple absolute files. Multiple files can be added on the Project
tab of the Debug > Debug Configurations dialog.
- New versions of DAS are supported, minimum required version is 4.6.0. *
- Support for the USB Wiggler-box has been removed because this is no longer properly supported by Infineon
DAS *
* - Does not apply to Linux version
Some notes on the TASKING VX-toolset v4.0r1 on the Linux platform:
- The Linux version does not support debugging using hardware because the required Infineon DAS drivers are not
available for Linux
drivers for Linux.
- The Linux Eclipse IDE does not have the import wizard for importing projects created with the EDE of the
TASKING C166 Classic toolset.
- The Linux Eclipse IDE does not have the import wizard for importing Keil uVision C166 projects.
- The cnv2vx tool requires the original source file on the same file system as the backup file it creates.
- The keil2vx tool requires the original source file on the same file system as the backup file it creates.
- The ilo2lsl converter for converting linker script files from the TASKING C166 Classic toolset requires
the input files to use the Unix new line convention.
New Features
- C166VX-36037 - Function pointer are only displayed as address
- C166VX-36486 - possibility to generate or update the makefile(s) from the command line
- C166VX-37294 - Debugger lacks option to load Motorola S-record file
- C166VX-37709 - Allow loading multiple ELF files with symbolic debug info during debugging
- C166VX-38286 - Debugger lacks option to load Intel hex file
- C166VX-38322 - C++ compiler option to suppress specific warnings
- C166VX-38432 - C compiler cache to improve compilation times
- C166VX-38560 - Implement the C1x _Static_assert of the 9899:2011 standard
- C166VX-38723 - Update all tools to use the TASKING License Management (TLM)
- C166VX-38756 - Update to Luna
- C166VX-38784 - Floating point options changed, option --fpmodel introduced
Improvements
- C166VX-38039 - In disassembly, debugger should use function name instead of ELF label for coco functions
- C166VX-38473 - Ask for DAS installation when starting debugger, remove DAS installer from TASKING setup
- C166VX-38520 - Support for exclusion of sections from unreferenced section removal
- C166VX-38581 - Multiple fixes and improvements in high level dump tool
- C166VX-38608 - Code generation could be optimized for bit access of a bit struct which is part of a union in __bita memory
- C166VX-38660 - Update the C++ front-end to the EDG C++ front-end 4.9 release for C++11 support
- C166VX-38719 - Add the predefined macro _CPP_WCHAR_T
- C166VX-38758 - Update JRE to version 8 update 51
- C166VX-38771 - C++ Compiler update to EDG 4.9
Fixed Problems
- C166VX-36245 - Keyword 'const' removed by C++ compiler using a template function
- C166VX-36558 - Statics with same name in multiple modules not displayed correctly
- C166VX-36826 - Different result when preprocessing file
- C166VX-37201 - Strange scrolling effects in Disassembly window using Simulator
- C166VX-37547 - cp166: option --create-pch dysfunctional when -C is used
- C166VX-37549 - Eclipse syntax errors when using C166 specific language qualifiers in a C++ file
- C166VX-37593 - Suspending 'queens' example delayed by several seconds
- C166VX-37775 - Debugger cannot be started again after license error
- C166VX-37987 - Feature for overlaying several functions at once
- C166VX-38151 - debugger does not return license after linger time
- C166VX-38171 - Debug menu items shall not be initially available
- C166VX-38207 - Debugger does not take object size into account when calculating difference between pointers
- C166VX-38287 - Exception when selecting non-project file under 'C/C++ application'
- C166VX-38335 - c166 S911: internal consistency check failed - please report
- C166VX-38359 - debugger incorrectly complains that target is still running
- C166VX-38444 - locate error when using "direction = high_to_low"
- C166VX-38457 - Linker error message contains garbage
- C166VX-38471 - Flashing may fail if processor was changed in existing project
- C166VX-38472 - When debugging as instruction stepping the top disassemble line will disappear
- C166VX-38475 - Can not cancel (re)building of the project
- C166VX-38481 - Update project scheme so newer Keil C166 projects could be supported
- C166VX-38482 - Build Selected File(s) button does not compile modified file
- C166VX-38484 - Add DAvE support for XC2361E projects
- C166VX-38485 - Debugging settings and selected processor lost after project import
- C166VX-38486 - Assembler generates wrong opcode for CoABS [IDXn],[Rx]
- C166VX-38487 - Obsolete and hidden compiler option -e still present in library makefiles
- C166VX-38492 - On eclipse startup the projects in workspace are converted every time
- C166VX-38493 - Processor XC2288H-200FxL138 not imported from project v2.4r1
- C166VX-38494 - amk does not expand macros inside a "macro string substitution"
- C166VX-38502 - Option 'Allow SFRs in in-line asembly code' leads to as166 E704: cannot find sfr-file ... error
- C166VX-38503 - EXTP / EXTS instructions not working with SFR names
- C166VX-38505 - c166 S900: internal consistency check failed - please report
- C166VX-38507 - Generic assembly code optimization problem
- C166VX-38510 - Variables are not maintained at "Startup source/header file directory"
- C166VX-38524 - Typo's in chapter "3.1. Assembly Syntax"
- C166VX-38526 - Build error: lk166 F005: cannot create "project.mapxml" (No such file or directory)
- C166VX-38528 - __atbit not correctly translated by C++ compiler
- C166VX-38529 - Add DAvE support for XC2269I projects
- C166VX-38534 - Overlay items and associated ROM copies ordered differently when selecting multiple sections at once
- C166VX-38535 - Description of $OPTIMIZE / $NOOPTIMIZE is not complete
- C166VX-38536 - Disassembly view puts active line on top for every instruction step
- C166VX-38542 - USB Wiggler-box no longer supported by DAS
- C166VX-38548 - Incorrect bitfield using compiler optimization "Control Flow Simplification"
- C166VX-38553 - Debugger may terminate abruptly or not all
- C166VX-38559 - Wrong coded BFLDL instruction by the assembler when using a global symbol
- C166VX-38561 - Add DAvE support for XC2289I projects
- C166VX-38564 - Wrong addresses for bitfields in hldump symbol table output
- C166VX-38567 - Incorrect start and end labels for linker output section with bits
- C166VX-38569 - Wrong addresses in Disassembly window
- C166VX-38571 - .SECTION gives assertion when AT attribute is used with an expression that has no integer value
- C166VX-38572 - View Compare Application shows "Pending..." if no differences found
- C166VX-38573 - Global type checking does not detect signed/unsigned differences and short/int
- C166VX-38577 - On-chip flash programming error: "Loading failed: A problem occurred during downloading"
- C166VX-38578 - C++ #pragma section not working for the initialized module static variables
- C166VX-38579 - hldump166 does not print pointer type qualifiers
- C166VX-38580 - hldump near pointers are reported to have sizeof 4 instead of 2
- C166VX-38585 - S911: internal consistency check failed - please report
- C166VX-38586 - Wrong end addresses for reserved areas after importing board configuration
- C166VX-38590 - C library support ("FSS") may not work properly in the presence of a function called stat(...)
- C166VX-38596 - Name mangling when using MIL splitting not documented
- C166VX-38597 - c166 S900: internal consistency check failed - please report
- C166VX-38601 - Control program does not pass -gall switch to the C compiler but passes a non supported -all switch to the assembler
- C166VX-38603 - c166 S900: internal consistency check failed
- C166VX-38607 - incorrect hexfile generated when huge array crosses a 64kB segment boundary
- C166VX-38610 - Downloading fails if no section .debug_info
- C166VX-38615 - Undeserved compiler warning W507 "variable xxx is possibly uninitialized"
- C166VX-38617 - lk166 F009: internal error: file id does not exist
- C166VX-38620 - Debugger hangs when adding View "RTOS WIndow"
- C166VX-38626 - Debugger does not work with newer versions of DAS
- C166VX-38627 - Flash programming may fail where devices abut
- C166VX-38628 - ISO C99 macros FP_NAN, FP_INFINITE, etc missing
- C166VX-38629 - Missing ISO C99 floating point library functions
- C166VX-38630 - ISO C99 macro INFINITY is missing
- C166VX-38631 - ISO C99 strtof("INFINITY") not supported
- C166VX-38632 - ISO C99 macros/functions MATH_* macros and math_errhandling missing
- C166VX-38634 - Incorrect localtime with return from mktime
- C166VX-38635 - Scanf does not leave next argument untouched when it should
- C166VX-38637 - rintf does not give correct result
- C166VX-38640 - c166 S900: internal consistency check failed error
- C166VX-38643 - Value of local long variable not shown by debugger: <no storage assigned>
- C166VX-38650 - Stack breakpoint only works once
- C166VX-38651 - No error reported when breakpoint cannot be placed
- C166VX-38652 - Breakpoints disappear after reloading application
- C166VX-38653 - Breakpoint set in Disassembly view is disabled after relaunching session
- C166VX-38654 - Adding breakpoint via source line in Disassembly view may not work properly
- C166VX-38661 - A local const struct may not become initialized
- C166VX-38666 - #pragma ident results in an error
- C166VX-38674 - The -w command-line option filtered out the warnings turned into errors by -A
- C166VX-38705 - Different src file generated during successive builds
- C166VX-38732 - Preprocessor ignores definitions in nested includes
- C166VX-38742 - neq_spf.src and neq_dpf.src should return true if any argument is NaN
- C166VX-38783 - Using C163-24D results in lk166 W975: white-space separator required before replacement list
- C166VX-38791 - Debugger might be inoperable after breakpoints were removed when an application is running
The list of open issues for v4.0r1 can be found on the internet.
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 C166 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.