Hello all,
I have implemented a service in genode os which is based on tz_vmm demo on i.mx53-qsb board. Now I want to measure the execution time of the service. I measure the execution time both in linux and genode,but find a incredible result:
1. In linux, I record the start time t1 and end time t2 ,then I use t2-t1 to measure the execution time.
2. In genode, I get a timer use : Timer::Connection _timer(_env), and use _timer.elapsed_ms() to get the start and the end of the service time and use end-start to calculate the execution time.
However, the result of the two world are far from each other. In linux, it's about 45 seconds, but in genode it's only about 11 seconds. I know, in linux side, it will first open the help module in kernel space and issue smc to switch to secure world and switch back when service is done. But I think it won't take such a long time.And actually, I think the execution is about 45 seconds which I observed from the start and end message. So I doubt there's problem with my measurement in genode.
My settings:
1. In tz_vmm.run:
add targets {drivers/timer}
add <start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
add boot_modules {timer}
2. In service file , server.cc:
add #include <trace/timestamp.h>
in funcion add: Timer::Connection _timer(_env); start=_timer.elapsed_ms();
Any help will be grateful, thanks!