如何在Vxworks中实现C计时器

时间:2013-03-15 16:43:47

标签: c timer performance-testing vxworks powerpc

我已经实现了timer功能,以便在Windows和Linux中查找我的任务的性能。但是Linux实现在Vxworks PPC 750板上不起作用。 Vxworks中不提供gettimeofday

t1 = vxworks_start_timer(); //How to implement ?
my_task();
t2 = vxworks_stop_timer(); //How to implement ?
elapsedtime = t2-t1;

如何在Vxworks中实现此计时器以计算任务的已用时间。

2 个答案:

答案 0 :(得分:0)

如果系统计时器刻度分辨率足够,您可以使用tickGet()sysClkRateGet()clock_gettime(),但解决方案仍限于系统时钟滴答

否则,您可以阅读 TBL TBU (特定于拱门)

答案 1 :(得分:0)

根据您的需要,有各种方法。

如果要测量的活动长时间运行,您可能会使用系统计时器计数器,可通过tickGet()tickGet64()访问。

这以系统时钟频率频率(即调度程序的速率,而不是CPU频率)递增,因此分辨率限制为单个滴答 - 可能大到1/60秒。您可以使用sysClkRateGet来确定频率。

对于长时间运行的任务,上述内容可能已足够,但如果您需要更高的分辨率(可能以有限的持续时间为代价),则可以使用系统时间戳计数器(如果已配置)。为此,您可以使用sysTimestamp(或sysTimestamp64),也可以使用sysTimestampFreq来获取频率。

根据您的系统配置,计数器可能会频繁重置,并且您可以使用sysTimestampPeriod进行锻炼 - 您需要在计时代码中处理此问题。

当然,您可以同时使用这两种方法来提供长时间运行但高分辨率的计时器