I was recently asked by a customer if they could use RapiTime to analyse a program compiled for Windows using GCC and CygWin. The answer, with a few caveats, is yes!
Firstly, performing precise timing analysis for applications running on Windows is very difficult due to the precision of the system timers. For example, the GetProcessTimes API call will return the current account of elapsed user and kernel time, but the resolution is around 1/64 of a second.
This makes WCET estimates pretty useless, since for precise calculations you need a timer resolution close to your instruction execution frequency. All is not lost however, since we can still produce valuable coverage information, and test the RapiTime integration without the need to run the code on an embedded target system.
We usually write a very simple 'dummy' implementation of RPT_Ipoint which increments a counter, allowing us to see coverage information and follow the execution trace.
int rpt_counter = 0; void RPT_Ipoint(int i) { rpt_counter ++; printf("%d %d\n", i, rpt_counter); }
The stdout trace can then be recorded to a file and parsed by traceparser.
Just remember to ignore any execution times you may obtain this way!