TASKING VX-toolset for MCS v3.1r2
Release Note


This release note covers the TASKING VX-toolset for MCS v3.1r2.


Important Notices

This is a stand-alone TASKING MCS C compiler toolset. This toolset is an open market product. The C compiler supports the BOSCH GTM-IP MCS versions 3.x. Due to restrictions in the instruction set architecture the GTM-IP MCS versions 1.x and 2.x can be programmed in assembly language only.

Typically the GTM-IP MCS core is part of a SoC where the MCS is initialized by the CPU. This TASKING VX-toolset for MCS v3.1r2 can be used in combination with TASKING as well as third party tools to program the CPU. The compiler output is available in ELF, HEX and C array format. The latter format has been introduced to support interoperability with third party compiler tools.

New in v3.1r2

C Compiler

The C compiler is fully ISO-C99 compliant. Several language extensions have been build into the compiler to support the specific features of the MCS hardware architecture. Numerous code size and execution speed optimization have been implemented since the previous release v3.1r1.

Intrinsic Functions

A set of intrinsic functions is provided to give access to those features of the MCS that cannot be addressed efficiently via ISO-C language features. The set covers ARU transfer operations, bus master addressing, and suspending wait instructions. The intrinsic functions and their protypes have changed between versions v3.1r1 and v3.1r2. Refer to the User Guide for more information.

MCS Channel Concept

The compiler supports the channel concept of the MCS architecture. By assigning the __attribute__((channel( ))) to a function it becomes the entry point for the specified channel. ISO-C requires a main() function, by default main() is the entry point of channel 0, but main() can also be assigned to another channel.

Extended Register Set

The compiler can emit code for the default register set (called OREG) as well as for the extended register set (called XOREG). Code that uses the extended register set may execute faster.

Data Types

All C data types such as _Bool, char, short, int, long, long long, float, double and complex are supported.

A 32-bit data type __aei_t is available to improve the efficiency of data transfers over the bus master interface. Due to the 24-bit architecture of the MCS this data type should not be used for arithmetic operations.

Special Function Registers

The compiler provides access to special function registers STA, ACB, CTRG, STRG, TBU_TS0, TBU_TS1, TBU_TS2, GMI0, GMI1, DSTA, DSTAX. SFR functionality has been augmented in the v3.1r2 release.

Refer to MCSVX-182.

Inline Assembly

Assembly instructions can be used within the C source code, however the available set of intrinsic functions should make the use of inline assembly superfluous.

MISRA C:2012 Static Analysis

The compiler can check source code against the rules defined in the MISRA C:2012 standard. Individual rules can be enabled and disabled on the compiler's command line as well as in the Eclipse IDE.

CERT Static Analysis

The compiler can also check code against the rules defined in the CERT C Programming Language Secure Coding standard.

Integration in Eclipse IDE

The Eclipse IDE is provided to configure and execute the tools. However all tools can also be invoked from the command-line. The Eclipse platform and CDT are based on the Luna releases (Platform 4.4.1 and CDT 8.5.0).

Device support

This release is shipped with an instruction set simulator that supports GTM-IP MCS versions 1, 2, 3.0 and 3.1.

The product includes linker script files for all GTM-IP MCS versions, there files are stored in the include.lsl directory. The devices can be selected in the Eclipse IDE upon project creation, which also automatically selects the use of the belonging linker script file.

Debugger with Instruction Set Simulator

The debugger and instruction set simulator are integrated in Eclipse. Rudimentary support for debugging applications that exploid the multi-channel concept is available. The debugger addresses the state of channel 0, other channels execute in parallel, but the debugger does not show the state of these other channels.

EABI and Object File Compatibility between v3.1r1 and 3.1r2

The EABI has been modified, therefore object files created with version 3.1r1 are not compatible with v3.1r2. For more detail refer to the "MCS Multi Channel Sequencer - Embedded Applications Binary Interface (EABI)" which is included with the toolset.

Refer to MCSVX-648.

Support for BOSCH ADX Specification

The output produced by the TASKING High Level Dump utility can be used as input for address calculation tools. The output format is compliant with "BOSCH ADX Specification, Address List Format for A2L Address Calculation Compiler vendors, Version 1.10, 2015-04-27".

Refer to MCSVX-484.

Interoperability with Third Party Toolsets

Interoperability with third party toolsets for programming the CPU has been realized by providing a "C array" output format.

The linker can emit the generated machine code in the form of C code. This is useful for the integration of MCS code in applications where the CPU is programmed with a non-TASKING compiler. Note that no symbolic debugging is possible unless you use the debug information from the ELF file.

The C array output format consists of a C source file with data encoded in a C array initializer combined with a C header file that contains necessary declarations and optionally provides access to the exported symbols of the program. You can use the C array format only for chip output files where, as with normal hex files, each memory gets its own output file that contains data for that memory only. The intended target for output files in C array format is a programmable peripheral where an application compiled for the peripheral is imported into a host application as C code. This "host application" must initialize the programmable peripheral's memory using the data in the C array(s).

Refer to MCSVX-545.

Fixed issues for v3.1r2


New Feature


The list of open issues for v3.1r2 can be found on the internet.

License Information

The TASKING VX-toolset for MCS uses the TASKING license management software. In order to be able to run this toolset, you will need a license key.

See either section of the Getting Started with the TASKING VX-toolset for MCS guide for information on obtaining a license, or consult the Support for TASKING License Management System (TLM) Support pages on our web site.

Local TASKING License Server

Important Information (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.