Home > On-Demand Archives > Q&A Sessions >

Live Q&A - Troubleshooting Embedded Applications with Runtime Visualizations

Kristoffer Martinsson - Percepio - Watch Now - EOC 2022 - Duration: 18:55

Live Q&A - Troubleshooting Embedded Applications with Runtime Visualizations
Kristoffer Martinsson
Live Q&A with Kristoffer Martinsson for the theatre talk titled Troubleshooting Embedded Applications with Runtime Visualizations
M↓ MARKDOWN HELP
italicssurround text with
*asterisks*
boldsurround text with
**two asterisks**
hyperlink
[hyperlink](https://example.com)
or just a bare URL
code
surround text with
`backticks`
strikethroughsurround text with
~~two tilde characters~~
quote
prefix with
>

Otzen
Score: 0 | 3 years ago | 1 reply

Hi
As i deduct from the talk this only works if you have a "real" OS?
Most of the systems I come across only have what we call a "Camshaft OS", meaning interrupts is the only threadding available. In other words: 1 task == 1 ISR
Can this tool (realistically) be used for those systems?
One example is that i often use an I/O pin to visualize how often and for how long an ISR is running, By simply putting a pin_high, and pin_low, at the beginning and end of the ISR, then connectiong a osciloscope to that pin (or pins)
This however has several limitations, for one it does not tell me anything of the timing overhead in shifting in and out of that interrupt, as the pin high/low happens inside the IRQ. Also I have to manually measure and compenstae if this is not the higest level IRQ, thus it itself can be interruptet. Not to say if it interrups itself....
I don't know if this information is present in the ETM. But also could this tool help ilustrating this?

Kristoffer MartinssonSpeaker
Score: 0 | 3 years ago | no reply

You can use a tool like Tracealyzer to analyze runtime of the ISR. You would be able to see nesting and could analyze execution time, time interrupted by higher priority ISR etc.
Of course this could also be done using instruction trace (ETM).

Andreas-J
Score: 0 | 3 years ago | 1 reply

Great Talk Kristoffer!
Hearing all the interesting questions in the Q&A, brought up another question on my side: For the use case of porting an application from on Target/Rtos/... to another: How generic is the instrumentation of the code?
Is it possible to instrument once and then use Tracelyzer in any setup? If not- How complicated is the adoption to different Target-Set-Ups?
Thanks,
Andreas

Kristoffer MartinssonSpeaker
Score: 0 | 3 years ago | no reply

Thanks. In the application code there is normally just a few types of instrumentation. It is for ISR tracing and what we call user events. The API for these is generic for all RTOS that we provide a trace recorder library for. So no porting should be necessary because of tracing if you use FreeRTOS, Azure RTOS ThreadX, Zephyr or SafeRTOS.

Most of the instrumentation is done in the RTOS kernel and this is done ?automatically? when adding our trace recorder library to the project.

GillianM
Score: 1 | 3 years ago | no reply

There is not nearly enough emphasis put on the benefit of visualization tools in understanding the behavior of your system better, and of RTOSs in general. To that point, I can see Tracealyzer being a great educational tool. Computer engineering students learn about task scheduling by drawing it out; I can see a huge benefit in incorporating this tool after they have base knowledge of scheduling and are now ready to see it for a real system.

Zsolt
Score: 0 | 3 years ago | no reply

Amazing presentation and demos, thank you for this very valuable content! :)

leandropg
Score: 1 | 3 years ago | 1 reply

Hi Kristoffer... Amazing talk... Of course the Percepio tools are the best to find and analyze strange situations... I have used the tool with the debugger connected to obtain the real data from the device... I have a question... There is a way to save the Percepio information for example in Flash memory to obtain real issues in the field? I have had strange issues to analyze but in the real field... not in development environment... Is possible save that details and after analyze the situations recover the information from the Flash memory? BTW: My favorite technique to track issues is Application Logging

Kristoffer MartinssonSpeaker
Score: 0 | 3 years ago | 1 reply

Thanks for the comment. It is possible to store traces in flash so that you can read them later. Getting feedback from the field is an interesting topic and I would suggest that you take a look at our DevAlert product:
https://percepio.com/devalert/

Also check the presentation by our CEO on this topic:
https://embeddedonlineconference.com/session/How_to_Detect_Anomalies_in_RTOS_Applications

leandropg
Score: 0 | 3 years ago | no reply

Thanks Kristoffer... Of course I will be

LeroyLe
Score: 0 | 3 years ago | 1 reply

Great multi-queue blocking demo, thanks

Kristoffer MartinssonSpeaker
Score: 0 | 3 years ago | no reply

Thanks for the comment.

Erwin
Score: 0 | 3 years ago | 1 reply

Thanks for this nice presentation along with the demos. I'm using Tracealyzer now for rughly 3 years and it helped a lot to understand the timing of our application. I truely agree that it is much easier to analyze and understand what's causing a problem if you have a visual view on it.
It is also very useful to see if you have any bottlenecks in your software and see where starting to optimize is beneficial.
Some more capabilities to do automated measuring and analysis would be fine.

Kristoffer MartinssonSpeaker
Score: 0 | 3 years ago | no reply

Thanks for the comment. Automation is interesting, especially in testing. We see more requests on these types of features.

Davide.Ferrari
Score: 0 | 3 years ago | 1 reply

Great presentation and great tool, I'm learning every day more features. Some improvements in the usability would be needed, e.g. while measuring the distance between events (one must select the time span on the trace, it would be also nice to have the possibility to select two events in the log or on the events name in the trace and get immediately the time difference).

Kristoffer MartinssonSpeaker
Score: 0 | 3 years ago | no reply

Thanks for the comment. We really appreciate ideas for improving usability in Tracealyzer.

12:05:15	 From  Gonzalo : Is this tool able to be used into bare metal projects?
12:05:56	 From  Paul Vittorino : What about proprietary RTOS?
12:08:59	 From  Leandro Pérez : I have a question Kristoffer… This license… Tracealyzer for FreeRTOS, Permanent License ---> Is a lifetime license that include 12 months of support… This is right?
12:13:35	 From  Gonzalo : What are the requirement to use Tracealizer? Is it used just as a C/C++ library? how does it communicates from the device to the pc application?
12:15:04	 From  Enrico : can this be containerized ?
12:15:08	 From  Leandro Pérez : Thanks Kristoffer
12:16:02	 From  Erwin : Regarding the last Question for reporting: I'm currently also using it. It generates an XML report which can easily parsed using Python.
12:17:54	 From  Gonzalo : ok, Thank you Kristoffer

OUR SPONSORS

OUR PARTNERS