TriCore and AURIX Toolset Support

Where Safe­ty Meets Per­for­mance



Version 6.3

May 2019

Release Notes

Downloads

Documentation


Version 6.2

March 2017

Release Notes

Downloads

Documentation


Version 6.1

Sep­tem­ber 2016


Version 6.0

June 2015


Version 5.0

July 2014


Version 4.4

Cor­re­spond­ing Revi­sions of 4.4 and 4.3 are func­tion­al­ly iden­ti­cal, except the change from FLEXlm to TASKING License Man­age­ment (TLM)


Version 4.3

July 2013


Version 4.2

May 2013


Version 4.1

Octo­ber 2012


Version 4.0

April 2012


Version 3.5

Novem­ber 2010


Version 3.4

April 2010


Version 3.3

Decem­ber 2009


Version 3.2

March 2009


Version 3.1

Novem­ber 2008


Version 3.0

Decem­ber 2007


Version 2.5

Jan­u­ary 2007


Version 2.4

Octo­ber 2006


Version 2.3

Jan­u­ary 2006


Version 2.2

Feb­ru­ary 2005


Version 2.1

June 2004


Version 2.0

May 2003


Version 1.5

April 2002


Version 1.4

Novem­ber 2001

APPLICATION NOTES

Down­loadDateSizeDescrip­tion

How to migrate from BIFACES to TASKING IDE.pdf
Octo­ber 20193 MBAppli­ca­tion Note: How to migrate from BIFACES to TASKING IDEThe Build and Inte­gra­tion Frame­work for Auto­mo­tive Con­troller Embed­ded Soft­ware (BIFACES) from Infi­neon, is an inter­nal­ly devel­oped build frame­work for Infi­neon auto­mo­tive micro-con­trollers’ soft­ware develop­ment. This appli­ca­tion note describes how you can migrate a project cre­at­ed with Infi­neon’s BIFACES to the TASKING VX-toolset for Tri­Core IDE.

Stacks and Stack Size Esti­ma­tion in the TASKING VX-toolset for TriCore.pdf
May 20191 MBAppli­ca­tion Note: Stacks and stack size esti­ma­tion in the TASKING VX-toolset for Tri­CoreThe Tri­Core archi­tec­ture defines two stacks: the user stack (ustack) and the inter­rupt stack (istack). Sev­er­al Tri­Core devices have more than one Tri­Core core, each of which has its own pair of ustack and istack. In the TASKING VXtoolset for Tri­Core ver­sion v6.2r2 or old­er, the stack usage is cal­cu­lat­ed for a sin­gle stack for all cores. From Tri­Core toolset ver­sion v6.3r1 it is pos­si­ble to cal­cu­late the stack usage for inter­rupt han­dlers and the stack usage for each core sep­a­rate­ly, which is described in this APP-note in more detail.

GCC to TASKING Migra­tion Guide for Infi­neon AURIX.pdf
March 20191 MBAppli­ca­tion Note: GCC to TASKING migra­tion guide for Infi­neon AURIXThis migra­tion guide describes the port­ing of an AURIX/TriCore soft­ware project built with GCC to the TASKING toolset. It cov­ers the changes to be made to the C/C++ source code, the assem­bly source code, the start­up code, and the link­er script file.

Tri­Core Align­ment Requirements.pdf
March 2019735 KBAppli­ca­tion Note: Align­ment require­mentsThe Tri­Core archi­tec­ture com­pris­es some con­straints relat­ed to the align­ment of cer­tain data types, structs and struct mem­bers. This APP-note describes sev­er­al align­ment relat­ed top­ics.

How to Mit­i­gate the TASKING Tri­Core Tools Link­er Error E121.pdf
March 2019739 KBAppli­ca­tion Note: How to mit­i­gate the TASKING Tri­Core tools Link­er error E121This appli­ca­tion note explains the most com­mon rea­sons for E121 link­er errors and how they can be mit­i­gat­ed.

How to build your iLLD appli­ca­tion with TASKING VX-toolset for TriCore.pdf
Feb 20191 MBHow to build your iLLD appli­ca­tion with TASKING VX-toolset for Tri­CoreThis appli­ca­tion note describes how you can use the Low Lev­el Dri­ver library (iLLD) from Infi­neon togeth­er with the TASKING VX-toolset for Tri­Core to access and con­fig­ure the inte­grat­ed periph­er­als of Infi­neon Tri­Core deriv­a­tives. Note: The iLLD sources and exam­ples are avail­able for down­load from the Infi­neon web­site.

TASKING Tri­Core tools Link­er tips & tricks.pdf
Apr 20181 MBLink­er Script Lan­guage (LSL) Tips & Tricks for TASKING Tri­Core ToolsetThis appli­ca­tion note pro­vides sev­er­al help­ful tips and tricks to help you ben­e­fit from the oppor­tu­ni­ties that LSL pro­vides
Jan 2009Starter Kit TC1796 for TASKING Tri­Core VX-toolset v2.3r1
Jan 2009Starter Kit TC1766 for TASKING Tri­Core VX-toolset v2.3r1
Jan 2009Starter Kit TC1130 for TASKING Tri­Core VX-toolset v2.3r1
Mar 2005LSL Sam­ple Cas­es using Con­trol Pro­gramDemon­stra­tion of the usage of the Link­er Script Lan­guage while using the Tri­Core tool­chain to locate your appli­ca­tion. It con­tains exam­ples that deal with the most com­mon­ly used aspects of the lan­guage.
Mar 2005LSL Sam­ple Cas­es using EDEDemon­stra­tion of the usage of the EDE’s Script File page while using the Tri­Core tool­chain to locate your appli­ca­tion. It con­tains exam­ples that deal with the most com­mon­ly used locat­ing aspects.
Apr 2002Appli­ca­tion Note: Set­ting Loca­tor Options (v1.4r1 & v1.5r1)This appli­ca­tion note shows how the loca­tor con­trols influ­ence the locat­ing process. It is intend­ed both for EDE and com­mand line tools users. After read­ing, the user should be able to con­fig­ure the locat­ing process and resolve pos­si­ble errors that may result from applied set­tings and con­trols.
Apr 2002Appli­ca­tion Note: The sat­u­rate type qual­i­fi­er and inte­gral typesThis appli­ca­tion note cov­ers all aspects of using sat­u­ra­tion with inte­gral types.

TIPS AND TRICKS

This page con­tains Tri­Core tips & tricks from our cus­tomer sup­port staff.

Eclipse

Compiler

Linker

Debugger


Eclipse

After updat­ing Java JRE or installing Smart­Code, Eclipse does not start but quits with an error. How to solve this? After updat­ing Java JRE the fol­low­ing Eclipse error may show up:

 An error has occured. See the log file
 <workspace>\.metadata\.log.

The log file shows a line like:
Caused by: java.lang.IllegalArgumentException: Invalid ver­sion num­ber: Ver­sion num­ber may be neg­a­tive or greater than 255

To mit­i­gate, install a pre­vi­ous JRE like ver­sion 202 which can be down­loaded from here and use one the fol­low­ing options:

  • Mod­i­fy the eclipse.ini file which is includ­ed in the \eclipse sub­fold­er of the TASKING tools instal­la­tion direc­to­ry. Add the fol­low­ing two lines at the begin­ning of eclipse.ini:
    -vm
    C:\Program Files (x86)\Java\jre1.8.0_202\bin\javaw.exe
  • Or adapt the short­cut which starts the Eclipse exe­cutable and mod­i­fy the Tar­get by adding option:
    -vm “C:\Program Files (x86)\Java\jre1.8.0_202\bin\javaw.exe”

Do the Eclipse based TASKING products work with OpenJDK?

Yes. You can use the free Open­JDK 8 with our TASKING prod­ucts that use the Eclipse plat­form v4.5.1 (Mars 1). These are the TASKING VX-toolset for Tri­Core ver­sions v6.1r1 and high­er, GTM v3.2r1 and high­er and TASKING Embed­ded Debug­ger v1.0r3 and high­er.

Eclipse requires that you have some Java vir­tu­al machine (JVM) installed. 64-bit Eclipse requires a 64-bit JVM, and a 32-bit Eclipse requires a 32-bit JVM. You may either install a Java Run­time Envi­ron­ment (JRE), or a Java Develop­ment Kit (JDK). Cur­rent­ly we ship the free Ora­cle JRE with our prod­ucts. Ora­cle JRE 1.8 (before April 2019 update) will stay for free. For new­er ver­sions Ora­cle charges a license fee. Instead of installing the Ora­cle JRE, you can use the free Open­JDK 8. For exam­ple, you can use Open­JDK 8 (LTS) from https://adoptopenjdk.net/.

If you have installed Eclipse Mars 2 your­self and use the TASKING VX-toolset for Tri­Core as a plu­g­in (only pos­si­ble for v6.3r1), you can also use high­er ver­sions than Open­JDK 8.

After instal­la­tion of the Open­JDK, make sure that the Open­JDK is your default JVM. Oth­er­wise you need to update the file eclipse.ini in the eclipse direc­to­ry of the prod­uct to point to the cor­rect JVM. See https://wiki.eclipse.org/Eclipse.ini#Specifying_the_JVM for more infor­ma­tion.

Our future prod­ucts will ship with a free Open­JDK.

Show help on tool errors

When you encounter errors and/or warn­ings, they are dis­played in the Prob­lems view in Eclipse. If you want to get more details/information about errors/warnings that are encoun­tered dur­ing the build process, right-click on an error or warn­ing in the Prob­lems view and select Detailed Diag­nos­tics Info. A mes­sage box will appear with more details about the error or warn­ing.

In a com­mand prompt you can use the option –diag=<error num­ber> on a spe­cif­ic tool. For exam­ple:

ctc --diag=207
E207: syntax error - token "<token>" deleted
The compiler detected a syntax error caused by an unexpected token. The token was removed in an attempt to recover.

Does the Eclipse based TriCore toolset v6.3r1 work with the Amazon Corretto distribution of OpenJDK?

Yes, the 64-bit ver­sion of Ama­zon Cor­ret­to has been test­ed suc­cess­ful­ly with Tri­Core toolset v6.3r1. Also, the 32-bit ver­sion of Ama­zon Cor­ret­to JRE8 can be used for the 32-bit ver­sions of the TASKING Tri­Core tools (ver­sions up to v6.2r2) which are JRE8 com­pli­ant.

To force Eclipse using Cor­ret­to JRE you can update file eclipse.ini locat­ed in the sub-direc­to­ry ctc\eclipse of the tools and add the fol­low­ing two lines at the top of the ini file:

 -vm
<path to the Amazon Corretto JRE 8 install>\bin\javaw.exe

Can I see the command line invocations of all executed tools during a build?

To view all tool invo­ca­tions dur­ing a build in the Con­sole view of Eclipse, open dia­log Project | Prop­er­ties | C/C++ Build | Set­tings | Glob­al Options, enable option Ver­bose mode of con­trol pro­gram and rebuild your appli­ca­tion or file. From the com­mand line, use con­trol pro­gram option –ver­bose (or sim­ply ‑v) like:

cctc --verbose test.c

Compiler

How can I minimize the impact of turning off a particular optimization?

Enabling and dis­abling opti­miza­tions for the com­plete project or one of its mod­ules can have sig­nif­i­cant con­se­quences. With the #prag­ma opti­mize instruc­tions you are able to selec­tive­ly enable/disable spe­cif­ic opti­miza­tions at source lev­el, and obtain more fine-tuned result.

#prag­ma opti­mize [flags] Con­trols the amount of opti­miza­tion. The remain­der of the source line is scanned for option char­ac­ters, which are processed like the flags of the ‑O com­mand line option.

#prag­ma opti­mize restore End a region that was opti­mized with a #prag­ma opti­mize. The prag­ma opti­mize restore restores the sit­u­a­tion as it was before the cor­re­spond­ing prag­ma opti­mize. #prag­ma optimize/optimize restore pairs can be nest­ed.

EXAMPLE:

#pragma optimize Y
[code]
#pragma optimize restore

In this exam­ple, the peep­hole opti­miza­tion is turned off for the code that’s between the #prag­ma opti­mize instruc­tions.

What should I do when I encounter a system error such as S900 internal consistency check failed — please report?

Sys­tem errors such as S900, S903, S911, S917 indi­cate an inter­nal prob­lem of the C com­pil­er. There is a good chance this is caused by a prob­lem of a cer­tain C com­pil­er opti­miza­tion. Thus dis­abling this opti­miza­tion might be a pos­si­ble mit­i­ga­tion. To deter­mine whether an opti­miza­tion caus­es the prob­lem you can fol­low these steps:

 1. Dis­able all opti­miza­tions by spec­i­fy­ing C com­pil­er option ‑O0, or by adding the fol­low­ing prag­ma at the begin­ning of the affect­ed C source file:

 #pragma optimize 0

2. If the S9xx error dis­ap­pears after this change, you can do fur­ther tests to deter­mine which opti­miza­tion exact­ly caus­es the prob­lem. You can first try to enable some opti­miza­tions, by spec­i­fy­ing ‑O1, or by adding the fol­low­ing prag­ma at the begin­ning of the affect­ed C source file:

  #pragma optimize 1

3. If the prob­lem still does­n’t show up you can try option ‑O2, or add the fol­low­ing prag­ma at the begin­ning of the affect­ed C source file:

   #pragma optimize 2

4. When the prob­lem does show up you need to com­pare the com­pil­er opti­miza­tions set­tings between the work­ing and non work­ing ver­sion. Then you can con­tin­ue to locate the sin­gle opti­miza­tion that caus­es the prob­lem, by switch­ing off indi­vid­ual opti­miza­tions. For exam­ple, use ‑OF or use

   #pragma optimize F

to dis­able the con­trol flow opti­miza­tion.

Hint: you can con­trol these Com­pil­er opti­miza­tion options from Eclipse GUI as well, see sec­tion 4.6. “Com­pil­er Opti­miza­tions” from the User Guide ctc_user_guide.pdf.

5. If switch­ing off an opti­miza­tion does not solve the prob­lem, our TASKING sup­port staff needs a pre­processed ver­sion of the affect­ed C source code plus the C com­pil­er options you are using for fur­ther inves­ti­ga­tion. You can cre­ate this by adding the option ‑ECp to the C com­pil­er options. Then a pre­processed file will be cre­at­ed instead of a .src file for the assem­bler.

Note that even if you did find a mit­i­ga­tion, we encour­age you to send this pre­processed C source file, so that we can find out if this is a known issue or a new one. Because almost all S9xx errors will be fixed in an upcom­ing release.

Linker

Why do I get Linker warning W132: cannot bind symbol _lc_ub_heap … and cannot bind symbol _lc_ue_heap … after upgrading to v6.3r1?

The cause of these warn­ings is that the heap def­i­n­i­tion was moved from tc_mc_arch.lsl to the file deriv­a­tive.lsl to sup­port core spe­cif­ic LSL files where each core has its own heap. The file tc_mc_arch.lsl file is includ­ed by deriv­a­tive.lsl.

When the project uses a (cus­tomized) deriv­a­tive.lsl from an old­er ver­sion you can mit­i­gate the issue as fol­lows:

  • Either: copy the file tc_mc_arch.lsl includ­ed in the ctc\include.lsl sub­fold­er of the old­er Tri­Core toolset ver­sion to the same fold­er which includes the file deriv­a­tive.lsl your project uses. Then the heap def­i­n­i­tion is includ­ed again.
  • Or: add the fol­low­ing entries to the file deriv­a­tive.lsl your project uses:
#ifndef HEAP
#define HEAP  16k  /* heap size */
#endif
section_setup :vtc:linear
{
    heap "heap"
    (    
        min_size = (HEAP),
        fixed,
        align = 8
    );
}
Why is the user stack size calculation in the map file showing zero sized stacks after upgrading to v6.3r1?

In v6.3r1 the ‘entry_points’ key­word was intro­duced to allow the spec­i­fi­ca­tion of dif­fer­ent entry points for the stack size cal­cu­la­tion. In case you are using a cus­tomized deriv­a­tive.lsl from an old­er Tri­Core toolset ver­sion in your project, you need to add the default ‘entry_points’ entry for core 0 to that file.

// macro definition added 
#define __USTACK0_ENTRY_POINTS_ATTRIBUTE ,entry_points=["_START"]

section_setup :tc0:linear
{
    stack "ustack_tc0"
    (
        min_size = (USTACK_TC0),
        fixed,
        align = 8
        // macro added to the core 0 user stack section
        __USTACK0_ENTRY_POINTS_ATTRIBUTE
    );
I am using the C startup code included in v6.3r1 with a customized derivative.lsl file from an older version of the toolset. The linker generates the warning: ltc W132: cannot bind symbol _lc_ub_ustack.

The C start­up code includ­ed in v6.3r1 refers to the link­er label _lc_ub_ustack which indi­cates the start address of the user stack for core 0. You can add this label to the cus­tomized deriv­a­tive.lsl as fol­lows:

section_layout :tc0:linear
{
    //added for TriCore tools v6.3r1 compliance
    "_lc_ub_ustack" := "_lc_ub_ustack_tc0"; /* common cstart interface for first or single core */
    "_lc_ue_ustack" := "_lc_ue_ustack_tc0"; /* common cstart interface for first or single core */
    "_lc_ue_istack" := "_lc_ue_istack_tc0"; /* common cstart interface for first or single core */
}

An alter­na­tive approach is to use the C start­up code of the old­er ver­sion instead.

Debugger

My application does not start on a target board after the Program Flash memory was erased. How can I solve this problem?

What prob­a­bly hap­pened is that dur­ing the erase mem­o­ry com­mand, the Boot Mode Head­er (BMHD) was also cleared. This is the case for Tri­Core 2xx devices where the Boot ROM is part of the Pro­gram Mem­o­ry Unit. For Tri­Core 3xx devices, the Boot ROM is locat­ed in anoth­er part of mem­o­ry and will stay untouched when you clear the Pro­gram Mem­o­ry.

Nor­mal­ly, the Boot Mode Head­er on a tar­get board is ini­tial­ized by fac­to­ry default to run the tar­get stand-alone. When you flash an appli­ca­tion using the TASKING debug­ger, with­out any Boot Mode Head­er con­fig­u­ra­tion, you can dis­con­nect the tar­get board from the debug sys­tem and after a reset the appli­ca­tion will start just as it went in the debug­ger. If how­ev­er the Pro­gram Mem­o­ry was erased, the Boot Mode Head­er could be unavail­able and your appli­ca­tion does not run stand-alone on the tar­get board.

To solve this prob­lem, you need to ini­tial­ize a Boot Mode Head­er for your tar­get. But be care­ful, you need to know what you are doing, because wrong use of the Boot Mode Head­ers might brick the device. There­fore, we advice you to first read chap­ter 4 TC29x BootROM Con­tent of the AURIX™ TC29x B‑Step User’s Man­u­al, or sim­i­lar chap­ter in the User’s Man­u­al for oth­er devices. Also read sec­tions 7.9.13 Boot Mode Head­ers, and sec­tion 9.7.1. Boot Mode Head­ers in the Tri­Core User Guide.

To ini­tial­ize the Boot Mode Head­er using Eclipse:

1. From the Project menu, select Prop­er­ties -> C/C++ Build -> Mem­o­ry, and open the Boot Mode Head­ers tab.

2. In Boot Mode Head­er 0, from the Boot Mode Head­er con­fig­u­ra­tion, select Gen­er­ate Boot Mode Head­er. 

3. Leave the oth­er default set­tings untouched and select OK.

This will ini­tial­ize the Boot Mode Head­er to allow for stand-alone exe­cu­tion of the tar­get.

After stepping into a function while debugging, how can I return quickly?

If you (acci­den­tal­ly) step into a func­tion, you can return to the high­er lev­el by select­ing the Run | Return from Func­tion menu item.

When my application is fully located in RAM memory, the TASKING debugger fails to download it and run it on the target. The debugger issues an error “Loading failed: A problem occurred during downloading”. What’s the reason for this error?

Parts of inter­nal mem­o­ry gets cleared at pow­er-on and soft-reset auto­mat­i­cal­ly due to secu­ri­ty rea­sons of the TriCore/AURIX micro­con­troller. This can be pre­vent­ed by set­ting bit­field RAMIN from reg­is­ter UCB_DFLASH to “Don’t init RAM after pow­er on reset”. This requires a 3rd par­ty flash tool like the free mem­tool from Infi­neon. After set­ting this bit­field, the appli­ca­tion can be loaded and run from RAM suc­cess­ful­ly using the TASKING debug­ger.

DRIVERS

ItemFile/Notes
Infi­neon mini­Wig­glerDebug­ger dri­verThe Infi­neon DAS dri­ver for the mini­Wig­gler are avail­able from the TASKING site:

DAS dri­ver v4.6.0 rec­om­mend­ed for Tri­Core toolset v6.0

DAS dri­ver v5.0.0 rec­om­mend­ed for Tri­Core toolset v6.1

DAS dri­ver v6.0.0 rec­om­mend­ed for Tri­Core toolset v6.2 and TASKING Embed­ded Debug­ger v1.0

DAS dri­ver v7.0.6 required for 64-bit TASKING appli­ca­tions (Tri­Core toolset v6.3 and high­er and TASKING Embed­ded Debug­ger v1.1 and high­er)

Note: we rec­om­mend to first exe­cute DAS_V7.0.6_Setup_WIN32.exe to sup­port exist­ing 32-bit TASKING prod­ucts, then exe­cute DAS_V7.0.6_Setup_WIN64.exe to sup­port TASKING 64-bit prod­ucts.DAS dri­ver v7.1.8 rec­om­mend­ed for TASKING Mul­ti Core Per­for­mance Tool and oth­er 64-bit TASKING appli­ca­tions
Note: DAS dri­ver v7.1.8 or lat­er may not sup­port old­er TC1xx devices any­more. For these, please use DAS dri­ver v7.0.6.Infineon may make new­er ver­sions avail­able on their own web­site. Please under­stand that these new­er ver­sions may not work with your toolset ver­sion though, so it is advised to keep a back­up copy of your exist­ing instal­la­tion upon try­ing a new ver­sion.  
Scroll to Top