TriCore VX-toolset v6.3r1 Eclipse IDE requires a 64-bit Java Runtime Environment (JRE) v8 or above. The installer tries to detect if a 64-bit JRE is already present. If not, it will install JRE build v1.8.0_162. If multiple JRE versions are installed, it might happen that the Eclipse inclu...
This article is for the TriCore toolset. A similar approach applies to SmartCode as well. However, the keywords or code snippets would be different. The following articles provide several helpful tips and tricks for using Linker Script Language (LSL) effectively in the TriCore VX-toolset. ...
This article is for the TriCore toolset. A similar approach applies to our other products, like SmartCode, and Arm. Note that the keywords or naming conventions are different in Arm. When you have a function that needs to be executed in RAM, a RAM-to-ROM copy loop is required to copy the f...
The information below shows a use case for the TASKING TriCore toolset. Since the LSL language is also used by the linker executables included in other TASKING compiler products, this information is basically applicable to those products too. The available on-chip memory of an Infineon AUR...
This application note explains the various multi-core aspects that are important while working on an AURIX™-based project. It presents the flow of functions in an embedded application, which starts with the synchronization of the startup codes, followed by the main entry point, and the act...
This article is for the TriCore toolset. A similar approach applies to our other products, like SmartCode, and Arm. Note that the keywords or naming conventions are different in Arm. By default, the linker places sections according to the 'priority' value entered for the memory block. Memo...
This article is for the TriCore toolset. A similar approach applies to our other products like SmartCode, and Arm. Note that the keywords or naming conventions are different in Arm. Output sections are used to reserve a dedicated memory range for selected sections. However, in some cases, ...
By default static symbols are not included in the linker-generated map file. Possible Solution This article is for the TriCore toolset. A similar approach applies to our other products like SmartCode, and Arm. To have the linker include information about static symbols, such as static vari...
If an address of a variable or a function is not known by the application, for example, because the variable or function is part of another application that is linked separately, you can use LSL symbols to specify the address of those symbols during link time. This approach prevents a reco...
This article is for the TriCore toolset. A similar approach applies to our other toolchains as they use the same linker script language. When a variable is initialized as shown below, the initialization value for this variable needs to be placed in flash memory : int var_1 = 10; The linker...
This article and the provided examples are for the TriCore toolset. Note that you can use a similar approach for SmartCode as well. If you need to do run-time stack checking, you will have to implement this yourself. A simple way to check the linker calculation result versus the actual sta...
Typically a stack overflow will show: a strange behavior of the application and/or a subsequent out-of-control behavior (crash/application trap). The post-mortem analysis will have to include an inspection of the stack pointer (A10 register), the trap status register, and possibly a trace ...
This article is for the TriCore product. A similar approach applies to our other products as they use the same linker script language. The C compiler adds section attributes to all code and data sections it creates. The available section attributes are: r readable sections w writable sec...
The cause of these warnings after upgrading to v6.3r1 is that the heap definition was moved from tc_mc_arch.lsl to derivative .lsl to support core-specific LSL files, where each core has its own heap. The tc_mc_arch.lsl file is now included in derivative .lsl . Possible solutions When the ...
Possible solution In TriCore v6.3r1, the entry_points keyword was introduced to specify different entry points for the stack size calculation. If those entry points are not defined, the map file will show a stack size of zero bytes in the 'Estimated stack usage' section like: * Estimated s...
The TriCore CPU does not have a hardware stack. Instead, the run-time environment uses a synthetic stack managed through register A10 for stack usage. As a result, there is no explicit stack checking option, as implementing such a feature would cause significant run-time penalties. More re...
Typically, a TriCore application has the following types of stacks: User Stack (ustack) The user stack demand for a single function is calculated by the C compiler . Furthermore, the C compiler generates information for the call graph generation. The call graph is generated by the linker a...
This article is for the TriCore toolset. A similar approach applies to our other products like SmartCode, and Arm. Note that the keywords or naming conventions are different in Arm. Our TriCore tools feature the language extensions __share , __private0 , __private1 , __private2 , and __clo...
The TriCore CPU core versions v1.3.1 up to v1.6.2 (AURIX 2G) include a hardware FPU unit for floating-point calculations. This makes float calculations very efficient because there are dedicated assembly instructions, for example, for floating-point multiplication, division, addition, or s...
This article and the provided examples are for the TriCore toolset. Note that you can use a similar approach for our other products as well. When you use an LSL group to select sections, for example, for a dedicated placement in memory, a section might not be assigned as expected. This may...
This article is for the TriCore toolset. According to the ISO C standard, global variables need to be initialized. If a variable is not initialized as shown below, it will be initialized with zeroes. int var_1; The initialization is conducted during the execution of the startup code. For i...
This article is for the TriCore toolset. A similar approach applies to SmartCode. However, the keywords or naming conventions would be different. This application note explains the migration of an AURIX/TriCore software project built with GCC to the TASKING toolset. It outlines the necessa...
This article is applicable for the TriCore toolset. If you need to know SmartCode-specifc details for the same, please contact us . This application note provides details on the internal sections that are generated in addition to the normal code and data sections. It walks you through the ...
Prerequisite CMake and its respective Generators Make sure that CMake is installed on your system along with the respective Generators . This article considers the use of Ninja and Ninja Multi-Config generators. 1. Place the Generator executable, in this case, ninja.exe , in the ..\ CMake ...
To determine the version, revision, and patch level information of a TriCore product, follow the below steps: 1. Navigate to the installation path\ctc\bin directory of the TriCore VX-toolset , for example, C:\Program Files\TASKING\TriCore v6.3r1\ctc\bin . 2. Open the command prompt (cmd.ex...
Note that you need to install a Java Virtual Machine (JVM) to use Eclipse. A 64-bit version of Eclipse requires a 64-bit JVM, and a 32-bit version requires a 32-bit JVM. You can install either a Java Runtime Environment (JRE) or a Java Development Kit (JDK). TASKING product releases up to ...
The AURIX Development Studio (ADS) can import example projects downloaded and extracted fromthe Infineon GitHub . Meanwhile, the TASKING TriCore Eclipse environment does not support the import of an existing ADS project into a TASKING Eclipse workspace. Possible solution To mitigate this, ...
During the execution of the erase memory command, i t is likely that the Boot Mode Header (BMHD) was also cleared . This is the case for TriCore 2xx devices where the Boot ROM is part of the Program Memory Unit. For TriCore 3xx devices, the Boot ROM is located in another part of the memory...
This application note explains the different stack types and provides guidance on estimating the stack size in the VX-toolset for TriCore. It also walks you through the process of setting up and selecting a stack type in a multi-core TriCore project, adding entry points, and estimating sta...
This article provides information regarding the TriCore v6.3r1 cross-linking in addition to the existing Chapter 7.5 Cross-Linking in the TriCore user guide . It explains the changes introduced in the v6.3r1-based patches due to EABI compliance reasons. Moreover, this article includes deta...
This application note outlines the comprehensive process of migrating an Infineon BIFACES ( Build and Integration Framework for Automotive Controller Embedded Software) project to the VX-toolset for TriCore Eclipse IDE. It provides a step-by-step guide, including the preparation of the BIF...
This application note provides detailed information on the alignment restrictions of the TriCore architecture. Additionally, it covers the alignment restrictions for Infineon EABI, and outlines the alignment options supported by the C compiler and the Linker Script Language (LSL). It also ...
This application note provides detailed guidance for creating and running a Docker image for VX-toolset for TriCore v6.3r1 whether on local disks or in remote repositories. It walks you through setting up Docker Desktop, preparing a Dockerfile, building and running the image, and managing ...