Get current system clock time

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
I am working on porting some piece of software for the Infineon Tricore TC29x. The software requires a function to return the current system clock time measured in system ticks.

Can it be done using some iLLD framework functions?

I know I can get the frequency of a system timer module with the function below.

IfxStm_getFrequency(&MODULE_STM0);
0 Likes
29 Replies
cwunder
Employee
Employee
5 likes given 50 likes received 50 solutions authored
I am not sure if this answers your question.

The STM has the following features:
• Free-running 64-bit counter
• All 64 bits can be read synchronously
• Different 32-bit portions of the 64-bit counter can be read synchronously
• Flexible service request generation based on compare match with partial STM content
• Counting starts automatically after an Application Reset
• STM registers are reset by an Application Reset if bit ARSTDIS.STMxDIS is cleared. If bit ARSTDIS.STMxDIS is set, the STM registers are not reset.

The iLLD function IfxStm_get provides the 64-bit value of the STM. By reading this and knowing its frequency you know the number of system ticks that have occurred since it was reset.
0 Likes
User13290
Level 5
Level 5
First like received First solution authored
Hi,

kobi1 wrote:
I am working on porting some piece of software for the Infineon Tricore TC29x. The software requires a function to return the current system clock time measured in system ticks.

Can it be done using some iLLD framework functions?

I know I can get the frequency of a system timer module with the function below.

IfxStm_getFrequency(&MODULE_STM0);


You may want to take a look at the Time Demo. It installs a user handler derived from STM. To create this project you need to do the following:


  • Select File > New > Example
  • Press Next
  • Expand the TriCore Free Entre Toolchain tree
  • Expand the Time Demo tree
  • Select AppKit-TC297TFT
  • Press Finish



In this example module timer.c implements everything related to STM. Its code is used in timerdemo.c to drive 4 LED's on your application kit. Note these two lines very early on in main:


/* initialise timer at SYSTIME_CLOCK rate */
TimerInit(SYSTIME_CLOCK);
/* add own handler for timer interrupts */
TimerSetHandler(my_timer_handler);


Variable runcount will now be incremented every 100 ms and is used to toggle each LED at specific time intervals. With some minor changes you can also use it to drive the ANSI-C clock() function. For this create a new module called times.c and add it to your the above example. Add the following code to this module:

    #include 
#include
#include

#include "bspconfig.h"

extern volatile unsigned int runcount;

clock_t times (struct tms *buf)
{
clock_t clk = (clock_t )runcount;
if (buf != NULL) {
buf->tms_utime = clk;
buf->tms_stime = 0;
buf->tms_cutime = 0;
buf->tms_cstime = 0;
}
return clk;
};

Note that it makes a reference to runcount so you must make sure to remove the static keyword in its declaration in timerdemo.c. Now add the following global variables to timerdemo.c:

    #include 
volatile double dt;
volatile clock_t t0;

At the beginning of main add:

   t0 = clock();

And in the loop that counts down minutes add the following:

    if (60 == ++Seconds)
{
dt = 1.0*(clock()-t1)/SYSTIME_CLOCK;

If you now proceed to debug this application using the integrated UDE you can place a watch on dt and set a runtime refresh rate by right-clicking it in the watch window. Next let the target run free. At every beat of LED2 dt will now be updated with 60 seconds. Hope this helps.

Best regards,

Henk-Piet Glas
Principal Technical Specialist
0 Likes
Not applicable
Thank you for your thorough answer! It helped a lot.
0 Likes
User13290
Level 5
Level 5
First like received First solution authored
kobi1 wrote:
Thank you for your thorough answer! It helped a lot.


Brilliant. Good to hear that. Happy developing.

Best regards,

Henk-Piet Glas
Principal Technical Specialist
0 Likes
Not applicable
Hello ,

I am using infineon tricore tc299tf , i have initialised the STM module and now want to create an interrupt using STM compare registers but everytime i try to run it I am getting a TRAP 4 tin 3 error. Could you please help me with the same ?
0 Likes
cwunder
Employee
Employee
5 likes given 50 likes received 50 solutions authored
I you start with an example Bifaces project you can add this code for the STM0. Then on a TriBoard and see the LED toggle on STM0 ISR events.

In the file Cpu0_main.c

#define CMP0_COMPARE_VALUE (0x5F5E1u)
#define MSIZE0 (19u)
#define MSTART0 (6u << 8u)
#define CMP1_COMPARE_VALUE (0x5F5E1u)
#define MSIZE1 (19u << 16u)
#define MSTART1 (7u << 24u)
#define INTPRIO_STM0_STMIR0 (2)
#define INTPRIO_STM0_STMIR1 (3)
#define SRE (10u) /* Service Request Enable */
#define PORT_TOGGLE_PC10 (0x04000400u)

IfxCpu_syncEvent cpuSyncEvent= 0;

/**************************************************************************
Object: Interrupt routine for STM0
Parameters: None
Return: Nothing
**************************************************************************/
void STM0_ISR0(void) {
STM0_CMP0.U += CMP0_COMPARE_VALUE; /* load compare register for next event */
P33_OMR.U = PORT_TOGGLE_PC10; /* indicated event on LED */
}

/**************************************************************************
Object: Initialization of the CPU0 System Timer Peripheral
Parameters: None
Return: Nothing
**************************************************************************/
void STM0_Init(void) {
unsigned short cpuWdtPassword = IfxScuWdt_getCpuWatchdogPassword();
IfxScuWdt_clearCpuEndinit(cpuWdtPassword);
STM0_CLC.U = 0x200u | 0x14u;
IfxScuWdt_setCpuEndinit(cpuWdtPassword);
/* The Periodic interval for STM0 is 0.50 Seconds */
STM0_CMP0.U = STM0_TIM0.U + CMP0_COMPARE_VALUE;

/* The Periodic interval for STM1 is 1.00 Seconds */
STM0_CMP1.U = STM0_TIM0.U + CMP1_COMPARE_VALUE;

/* STM Compare Match Control Register Value: 0x7120612 */
STM0_CMCON.U = MSTART1 | MSIZE1 | MSTART0 | MSIZE0;

/* the SRC0 Interrupt serviced by TriCore */
IFX_INTERRUPT(STM0_ISR0, 0, INTPRIO_STM0_STMIR0);
SRC_STM0SR0.U = (1 << SRE) | INTPRIO_STM0_STMIR0;

/* Configure the Interrupt Control Register of the STM */
STM0_ICR.U = 0x1u;
}

int core0_main (void) {
P33_IOCR8.B.PC10 = 0x10; /* Use LED on P33.10 */
STM0_Init();

IfxCpu_enableInterrupts();
/*
* !!WATCHDOG0 AND SAFETY WATCHDOG ARE DISABLED HERE!!
* Enable the watchdog in the demo if it is required and also service the watchdog periodically
* */
IfxScuWdt_disableCpuWatchdog (IfxScuWdt_getCpuWatchdogPassword ());
IfxScuWdt_disableSafetyWatchdog (IfxScuWdt_getSafetyWatchdogPassword ());

/* Cpu sync event wait*/
IfxCpu_emitEvent(&cpuSyncEvent);
IfxCpu_waitEvent(&cpuSyncEvent, 1);

while (1)
{
}
return (1);
}
0 Likes
Not applicable
Hello cwunder,

Thank you very much for the help, my interrupts are working now.

I have one more question , if i want to implement RCP(remote procedure call) in my tricore, which is the best technique that i can use it for all the cores to work synchronously?

With best regards
Praktikant
0 Likes
User17394
Level 2
Level 2
I am trying to recover the average execution time of a program (I would like to retrieve the result in seconds precisely because the program is very small) from an Aurix TC275 application kit card. I am currently using the example program "LCDDemo_ApplicationKitTC275C-Step" offered by HighTec Free Tool chain.



#define SYSTIME_CLOCK 1000 /* timer event rate [Hz] */


/* counter for time services */
static volatile unsigned int timeInTicks = 0;
static volatile int timeEvent = 0;

/* timing control */
static void TimerCallback(void)
{
++timeInTicks;
timeEvent = 1;
}

void Delay(unsigned int time);

void Delay(unsigned int time)
{
timeEvent = 0;

do
{
while (!timeEvent)
;
timeEvent = 0;
} while (--time);
}

time_t t;


/* initialise timer at SYSTIME_CLOCK rate */
TimerInit(SYSTIME_CLOCK);
/* add own handler for timer interrupts */
TimerSetHandler(TimerCallback);


while (1)
{
Delay(SYSTIME_CLOCK);

/* display time */
t = (time_t)timeInTicks / SYSTIME_CLOCK;
/* convert time in t manually to hh:mm:ss */
tm.tm_sec = t % 60;
t /= 60;
tm.tm_min = t % 60;
t /= 60;
tm.tm_hour = t % 24;

usr_sprintf(text, " %02d:%02d:%02d", tm.tm_hour, tm.tm_min, tm.tm_sec);
GLCD_setTextColor(textColorTab[indColTab]);
GLCD_displayStringLn(LINE5, text);
/* switch to next colour */
if (textColorTabSize == ++indColTab)
{
indColTab = 0;
}



}



I try to modify this code by wanting to recover the time of beginning and end of the program and to make the subtraction but I can not recover an understandable result. Basically I removed the infinite loop and tried to include the time t1 at the beginning of the code and the time t2 at the end of the code and then make the difference between these two moments.


time_t t1;
time_t t2;
time_t t3 = 0;

t1=(time_t)timeInTicks / SYSTIME_CLOCK;

my_function();

t2=(time_t)timeInTicks / SYSTIME_CLOCK;

t3=t2-t1;

tm.tm_sec = t3 % 60;
t3 /= 60;

usr_sprintf(text, "%d",tm.tm_sec);
GLCD_displayStringLn(LINE5, text);



This shows me the value 0 on the screen, so either this value is too small because my small function runs fast, or I did not understand the operation of this library ^^.

I think that the better solution is to use the librairy with clock_t but it doesn't work in my source file I already try the solution of HIGHTEC.henk-piet.glas but it doesn't work in the example 'TimeDemo_ApplicationKitTC275C-Step" on HighTec. Can someone who can help me to include this librairy in my project ?

Thank you in advance
0 Likes
lock attach
Attachments are accessible only for community members.
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

I worked out the example that I discussed a couple of pages before this one. I don't have a TC275 board, so I tested it on the TC277 TFT Application Kit.

I added simulated IO (for the UDE starterkit) and most of the addendums that I discussed here. All of the modules that I added/changed have been saved into a folder called extra. So you will be able to quickly recognise them.

Once you've downloaded the example onto your target, you have to open de simulated IO terminal and then press go. The terminal window will (or should) then be updated every minute that transpires. This is confirmed by means of the call to function clock(). Let me know if you can get this to work on your target as well.


Henk-Piet Glas
Principal Technical Specialist
Embedded Software

0 Likes
lock attach
Attachments are accessible only for community members.
User17394
Level 2
Level 2
Thank you so much for your help HIGHTEC.henk-piet.glas. I have a another problem because I try to use clock_t on the LCDdemo example but it return the the value 0.


t0 = clock();

//my function
Delay(5000);

t1 = clock();

dt = 1.0*(t1-t0)/SYSTIME_CLOCK;




I attached my project to facilitate the comprehension of my problem. So in the source file LcdDemo.c I declared t0 and t1 between the Delay(5000) and normally the output of dt have to be a value different of 0.I checked the values of t0 and t1 and both take the value 0, I don't know why ? (maybe because de library is not recognized).

Thank you in advance.
0 Likes
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

Looking at your project I think you need to make the following changes:


  • Times.c contains both an external reference and a declaration of variable TimeInTicks. You must comment out the declaration because the actual variable is defined in LcdDemo.c.
  • In LcdDemo.c you must remove the static keyword from the declaration of TimeInTicks.
  • Also in this module replace the double-type of variable dt with clock_t.
  • In main drop the 1.0 floating point constant from the dt assignment. So in this case I'm purposely dropping the remainder.
  • In the printf statement you may cast dt to an integer.

After these modifications I expect it will work as intended. The printf statement should print a 5 second delay.


Henk-Piet Glas
Principal Technical Specialist
Embedded Software

0 Likes
lock attach
Attachments are accessible only for community members.
User17394
Level 2
Level 2
Thank you for your reactivity, your solution work well. I have a last question, how can I have the exact CPU time with the function clock() because now I have a output only in second (0 to 60) and not the exact CPU time from the beggining to the end of a small program.

I think this solution should be the good one :


#define SYSTIME_CLOCK 1000 /* timer event rate [Hz] */


t0 = clock();

//my function

int i=0;

Delay(1);

t1 = clock();

dt = (t1-t0)*1000 /CLOCKS_PER_SEC;
dt = (float)dt;



But when the program is executed very quickly (under a second), It show me '0'.
(How can I retrieve the size in memory that take my function in the board ? Address calculation ?)
0 Likes
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

I think you were well under way with the snippet of code that you included. The problem is most likely caused by the "%d s" format string. Since you changed the type of dt to double you'd have to use a double or float format specifier instead, for example "%3.0f milliseconds". I expect that in that case it will work.

But using a double for dt is perhaps a bit too expensive. You might want to stick to a clock_t type. For example, the following should work. First, at the top of LcdDemo.c add the following macro:

#define SCALE_MICRO_SECONDS(seconds) ((seconds)*((clock_t)1e6))


Next make sure dt is of clock_t type. Then for dt use the following assignment:

dt = SCALE_MICRO_SECONDS(t1-t0)/SYSTIME_CLOCK;


And proceed to print the result as before:

usr_sprintf("Milliseconds: %lu\n",(unsigned long)dt);


Given these conditions a Delay(1) should result in 1000 us.

Best regards,

Henk-Piet Glas

Principal Technical Specialist
Embedded Software

0 Likes
User17394
Level 2
Level 2
Hello HIGHTEC.henk-piet.glas, thank you for your help, I manage to make the same thing with the time_t librairy so thanks for your support. From few days I try to get the size that take this function on the memory during the execution on the board. After to retrieve the time measurement and the memory size information to my desktop PC (I try to search a solution to transfer these informations from the board to the PC by the USB connection but I don't find anything in the forum).

Do you have a solution ?
Thanks in advance 😄
0 Likes
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

You can consider using simulated IO as I demonstrated in this example. Here I added the PLS simulated IO routines. These same routines allow you to create a file on your host OS as well. Of course such a solution creates a tethered dependency on the debugger so it really depends on whether you want to be able to do this in the field, or just during debugging.

As for the size of your function, I suppose you're referring to the amount of code it consumes. For this you can use the map file of your project. You'd need to enable the -ffunction-sections in the Code Generation tab of your compiler options. This mangles the function name into the default section name. So function main for example is (then) mangled into a section called .text.main. You can then easily lookup this section name into your map file and determine its code size.

Best regards,

Henk-Piet Glas

Principal Technical Specialist
Embedded Software

0 Likes
User17394
Level 2
Level 2
Hello, thank you for your reply Henk-Piet Glas

I see the example that you show but I don't see understand where is the PLS simulated IO routines. Because I want to send the information that I executed from the board to the PC only by the USB connection and save the information in a txt file on the PC.

Also,do you think that is possible to retrieve the adresses that I have in the map file directly in the code (if you have a example with the start and the end adress of the main for example) ?

Best regards,

Pirate02
0 Likes
lock attach
Attachments are accessible only for community members.
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

I have attached an example that demonstrates simulated IO. I have not been able to test it on real hardware because I haven't got it on me right now. But it should work. It should create a file called simio.out containing the following content:


_lc_b_main := 0x80000412
_lc_e_main := 0x80000468


Defining the start and end labels of main. You will need to replace the user name glas with the username that you have yourself on your OS. If it doesn't work then I'll need to give this another look tomorrow.

Best regards,

Henk-Piet Glas

Principal Technical Specialist
Embedded Software

0 Likes
lock attach
Attachments are accessible only for community members.
User17394
Level 2
Level 2
Hello henk-piet.glas thank you for you reply. I tested the code that you show me and I included it to my project. The problem is that I don't have any error during the compilation but the function don't create any file on my PC in the path that I specified.

In the attached zip you'll find in the file LCDDemo.c the main() where I display the execution time of my code on the GLCD of the board (this part is operational) and after I try to create the file by specified path with the replacement of "glas" by my personal username on W10 to write the information that I have on the GLCD in the file on my PC.

And finally, I want to retrieve the amount of my function in the memory of the card (retrieve the start and end adress of Delay(5000) but in the future it will be a another different function so I have to retrieve the start and end adress dynamically in this section of the code).

(The information written in the file is retrieve after the execution on the board ? Maybe I can use the ASC0 transmission ?)

Thank you in advance.
0 Likes
lock attach
Attachments are accessible only for community members.
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

Have a look at the attached example, and recording. The recording has a limited lifetime. It will expire a week from now. Use Blomkamp as a password to access it.

Within the example, note tiny function nill. From this function I calculate the start and end address in linker script solution.ld. I do this by means of labels _lc_b_nill and _lc_e_nill. These are assigned with the current location pointer and can subsequently be accessed as labels within your application. The labels are printed to stdout. I did this because we only support stdin, stdout and stderr. Host file IO isn't supported at this point.

The recording shows the simulated IO windows. I access its properties and then grab the contents of stdout and redirect it to a file that I store on the desktop. Note that stdout appears on the simulated IO window and also note that a file is created on the desktop containing the same content.

Best regards,

Henk-Piet Glas


Principal Technical Specialist
Embedded Software

0 Likes
lock attach
Attachments are accessible only for community members.
User17394
Level 2
Level 2
Hello HIGHTEC.henk-piet.glas, thank you for your example. I try simio2 but I have a error in the main(). The IDE say that the 2 variables are undefinied (_lc_b_nill and _lc_e_nill), so I can't generate the makefile (I attached the project). And also, I run the code HelloSerial on the board and I change de Baudrate in the simulatedI/O interface by 38400 but I have no output.

3658.attach

3659.attach

3660.attach

Can I have to change something in the Comm Port or Terminal in the propreties of SimulatedI/O to have the output of simio or the example HelloInterrupt of HighTec ?

Thank you in advance.

Best regards,
0 Likes
lock attach
Attachments are accessible only for community members.
User13290
Level 5
Level 5
First like received First solution authored

Hi,

The reason why the labels are marked as unresolved is because you created a new project based on the iRAM.lm model file. This model file contains an XML description of your target and it generates iRAM.ld containing the effective linker script language. You subsequently forgot to add the symbols to this script.

If you scroll through RAM.ld you will note it repeatedly contains Protection-Area blocks. These are reserved spots where you can inject your own linker script snippets. For as long as you do this in a reserved spot they will not be overwritten if the linker script is regenerated from the iRAM.lm.

I made the following changes to your project:


  • In the compiler options I enabled to -ffunction-sections optimisation. This tells the compiler to suffix default function section names with the name of the function it is coding. So instead of .text you get .text.nill for this specific case.
  • In iRAM.ld I added the same linker script snippet as before. You'll find it embedded into output section .text.


After the above I rebuild your project. Here's a snippet taken from your mapfile. Note how labels _lc_b_nill and _lc_e_nill nicely encapsulate your nill function.


.text memory region -> PMI_PSPR
0xc0000400 0x3e18
0xc0000400 PROVIDE (__text_start, .)
0xc0000400 PROVIDE (_lc_b_nill, .)
*(.text.nill)
.text.nill 0xc0000400 0x4 src\nill.o
0xc0000400 nill
0xc0000404 PROVIDE (_lc_e_nill, .)


To be complete I have uploaded my changes so you can review them for yourself. Also note that since you selected the iRAM configuration, that your code will be downloaded into RAM memory.

For the serial example, in addition to setting the baudrate you must afterwards right-click the console area of the simulated IO window and from there select Connect COM Port.... This should do the trick. Also see the snapshot below:

3663.attach

Best regards,

Henk-Piet Glas

Principal Technical Specialist
Embedded Software

0 Likes
lock attach
Attachments are accessible only for community members.
User17394
Level 2
Level 2
Hello, Thank for the answer.

I don't understand how you did the step 1 and 2 that you describe. I take the files in "ld" and I paste it into my project and when I executed the code on my board it send me the adress 0x000400 for the start and end adress (so the board doesn't send nothing, it's the default values). I work on a IROM version because I have to load a lot of information in the memory (so I left the IRAM). Futures I have to retrieve the adresses between a section where I call my function (I want to integrated this code to my follow project here).

In parallel I work in a different project in order to display the execution time on the glcd and send this information through the serial port. I succeeded to display the CPU time on the GLCD and retrieve this information through the serial PORT :D.

So now I search to save the output of SIMULATIONI/O that I have in a text file (Port 4, baudrate 34800) automatically through the code in main() on my PC (not from the option of the interface of SIMULATIONI/O).

Thank you in advance. (I wanted to thank you for your help. It assist me to learn how to use the board.)
0 Likes
lock attach
Attachments are accessible only for community members.
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

I have attached a retouched version of the serial IO example. I also uploaded a new recording (password:District 9). I made retouches to the hello.c module and also to nill.c. Both are demonstrated in the recording. Not demonstrated in the recording is the setting that I referred to in my previous posting. You can check this yourself via:

Project | Properties | C/C++ build | Settings | TriCore C Compiler | Code Generation


Note in here that I enabled the -ffunction-sections option. I also demonstrate in the recording where you need to create your locator symbols. Note that I'm using a protected region within the .text output section. Also note that it effectively is the first selection within this output section. This assures that .text.nill is uniquely selected and not accidentally bundled with the hoi polloi of the remaining code sections.

I then build the example as before and download it on my ShieldBuddy target. This time I don't enable the simulated IO tab. I just start an external terminal connected to COM3 (COM3 emulates a serial channel via the DAS drivers). I then enter 3 and the labels are printed. I then press the save output button to redirect to an external file. I then open this file to list its contents. It may still not be entirely what you're after, but this is the best I can do for now.

Best regards,

Henk-Piet Glas


Principal Technical Specialist
Embedded Software

0 Likes
lock attach
Attachments are accessible only for community members.
User17394
Level 2
Level 2
Hi henk-piet.glas, thanks for reply.

In my project in parallel, I just noticed a problem today. When I measured the CPU time with the function Delay() there is no problem, but when I executed my function for example 10 000 times in a for loop it return me 0 for the CPU time and it's not possible (even with my pc with a 3,50 GHZ processor it takes 20 sec ^^) ? Can you check the code and find what is the problem please ? (in the file CPU_Demo.c, towards the end of the main())

Thank you in advance henk-piet.glas.
0 Likes
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

I've been working on some other stuff, so it's already been a while since your last posting. Is the problem still current or have you meanwhile figured out the answer for yourself?

Best regards,

Henk-Piet Glas

Principal Technical Specialist
Embedded Software

0 Likes
User17394
Level 2
Level 2
Hello henk-piet.glas thanks for your reply.

I tried to search for 2 days but I can not find the solution, so it must be a few things relatively simple. I would like a helping hand from you.

It's as if the function I'm running 10,000 times did not run at all and the t0 and t1 were worth 0 seconds so that's weird.

Best regards,

Pirate02
0 Likes
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

I looked at the disassembly of your project, and function sort() wasn't created. Rephrasing, since all of its variables are automatics and since it has no incoming our outgoing parameters, the compiler drops its content. Rephrasing, it concludes that it adds no logic to your application other than some void operations, which are subsequently dismissed.

A quick-and-dirty solution would be to declare array as volatile (so volatile int array). Typically you only need this qualifier for SFRs and variables shared between the main program and an ISR. In this case it's netto effect is that the compiler doesn't optimise it out of your application. It's not the best solution, because all reads and writes to array are now explicit, so it doesn't result in the best code.

The preferred solution would be to pass array as a parameter that you want to bubble sort. You probably didn't do that because you wanted to run some quick tests.

Best regards,

Henk-Piet Glas

Principal Technical Specialist
Embedded Software
0 Likes
User17394
Level 2
Level 2
Hi henk-piet.glas, thank you, It was the problem that you told me. I search on the website of infineon a software that can analyze the performances of the board in term of CPU time, Memory RAM/ROM, etc. with graphic but they are all in trial version or paying. Do you know a software that I can use to analyze these kind of informations on the IDE freetool chain maybe or something else (and how I have to use it ?).

Best regards,

Pirate02
0 Likes
User13290
Level 5
Level 5
First like received First solution authored

Hi Pirathap,

My apologies for the delay. I was enjoying my holidays.

Within the HighTec development platform for AURIX (and also the free entry toolchain) you have the ability to use tricore-gcov. This provides non-graphical information about which branches have been taken. You'll need to study chapter 20.13 of the user manual to decide if it can help you.

In addition to the above you can obtain some information from the tsim log, but again it will not be graphical. So you'd need to transform this information yourself. TSIM also supports CCNT. If you decide to use it you must use the -g command line option.

Best regards,

Henk-Piet Glas


Principal Technical Specialist
Embedded Software

0 Likes