Hey! I am working on Streamline Performance Analyzer for Bare Metal Support.
Generated Barman files (Linear RAM Buffer) for cortex - R7 with 7 PMU counters, compiled them separately with armcc to create a library file.
My project code is also compiling with armcc and to enable the frame pointer, I have used --use_frame_pointer instead of --fno-fomit-frame-pointer as it is used for armclang.
The readings for PMU counters are visible in the timeline view, but the function view, call path view and code view are not showing function names rather only one function row with unknown_code_in_unresolved giving the complete 100% to its execution.
I am using ultimate version for DS-5.v5.28.1 for streamline.
Compiling my code on a different platform. Executing the .axf generated (after compiling) on my target and storing the buffer generated into a .raw file.
Does anyone know what is it that I am doing wrong?
Attached are the function and call path views image.
Hi Stephen,
Thank you for your response. I figured out what I was doing wrong and I could now see some profiling data visible in the code view and Function view with function names but it still does not list the data of all the functions.
I still have few questions based on my implementation:
For generating barman files, I have followed the same steps as shown in the video you mentioned. Linear RAM Buffer with Number of tasks as 258-> Cortex R7 -> Selected 7 PMU counters -> NO Custom Counters -> Generated.
For instrumentation, I have created a new implementation file, where I am calling the initialize function and passing the buffer, buffer length (2MB), Clock Info, and Task Info.
For interrupts, I have created a periodic timer of 200 micro seconds and in the timer handler I am calling the API - barman_sample_counters_with_program_counter with link register as the argument.
yes my .axf have symbols.
No my question is: I am not getting the data for all the functions that were hit during the start of execution till the copying of buffer data into a raw file. Instead I am only getting the profiling data of functions at which the timer expiry happened.
Does Streamline only captures the functions at which timer expired? If not, is there anything else specific to be taken care of to have the data of all the functions
Hi Anudhi,
Getting function information only when the timer has expired is expected. This is because this is the only place you are calling barman_sample_counters_with_program_counter. If you want to get sampling data for more of your application you have two options:
1) Increase the frequency of your timer so that more of your code is sampled
2) If you have any specific functions that you want to sample you can call the barman_sample_counters_with_program_counter manually on these functions meaning you will get a sample everytime the function is hit.
Unless you mean that you are only getting samples inside the sampling function itself. Then this usually points to the value of LR that you are passing into the function being corrupted somehow.
Cheers,Stephen
Thank you Stephen