03-20-2010 04:14 AM
After profiling my program, i get the folowing result:
Each sample counts as 0.0001 seconds.
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
40.37 7.20 7.20 XUartLite_SendByte
36.96 13.79 6.59 __do_global_ctors_aux
5.59 14.79 1.00 __umodsi3
5.52 15.77 0.99 __udivsi3
4.09 16.50 0.73 outnum
3.72 17.17 0.66 xil_printf
1.86 17.50 0.33 main
0.62 17.61 0.11 padding
0.60 17.72 0.11 outbyte
0.23 17.76 0.04 end_len
0.14 17.78 0.02 len_loop
0.13 17.81 0.02 microblaze_register_handler
0.07 17.82 0.01 getnum
0.03 17.82 0.01 check_alignment
0.02 17.83 0.00 done_len
0.02 17.83 0.00 exit
0.02 17.83 0.00 strlen
0.01 17.84 0.00 align_arg
0.00 17.84 0.00 1 0.00 0.00 __fini
Using the code-profiling information, I have discovered why the design is running so slowly. Perhaps unsurprisingly for my simple design, the slowest operation in the code is the “XUartLite_SendByte”.
We can see that the function called “XUartLite_SendByte” is consuming over 40.37% of the processor's time during the execution of the software application. communication with UARTLITE is done with the folowing code:
for(lig=0; lig<512; lig++)
for(col=0; col<512; col++)
xil_printf("%d ", img_dest[lig][col]);
i'm working with the Spartan-3 XC3S200... and EDK 10.1...
i used the folowing configuration for the my XPS peripheral and hyperterminal:
03-22-2010 04:33 AM
there is no one to reply ???!!!
Any help would be greatly appreciated.
Any advice or recommendations are welcome !
03-23-2010 01:57 AM - edited 03-23-2010 02:00 AM
Minimize all printing on the UART and set the baudrate to something like 115200 or remove all printing while profiling.
03-23-2010 06:51 AM
Thanx Göran !!!
i can not minimise printing on the UART, but I will try to change the baudrate
Yes I'm using interrupts!
09-12-2016 05:29 PM
This topic title is pertinent, although my problem is different. But, before I create a new topic, I thought I'd try here first.
I am developing a bit of embedded SW on a MicroBlaze build on a KU60 using Xilinx SDK 2015.4. I need to measure the performance of some sections, or maybe profile it all. I've been searching for proper tools, with no success:
If I try the test code from the SDK Users Guide:
XTime start, end;
I get compile errors:
fatal error: xtime_l.h: No such file or directory
If I enable profiling:
(ie. ProjectProperties:Settings:MicroBlaze g++ compiler:Enable Profiling (-pg) ),
I get a linker error:
ld.exe: cannot find -lxilprofile
I assume it's user error (me) and I'm missing something. But, I don't know what. I think all I need is a very small example code with the correct includes or linked libraries, for use of timers. Help??
09-12-2016 10:00 PM
there is an example design available in this document which talks about profiling in Microblaze.
You need to have a axi timer to be included in the HW of your design to do profiling.
09-15-2016 10:48 AM
if you have any further new questions please feel free to create a new thread.