1

我已经实现了计时器功能来查找我的任务在 windows 和 linux 中的性能。但是 linux 实现在 Vxworks PPC 750 板上不起作用。gettimeofday在 Vxworks 中不可用。

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

如何在 Vxworks 中实现这个计时器来计算任务的经过时间。

4

2 回答 2

1

如果系统计时器滴答分辨率足够,您可以使用tickGet()andsysClkRateGet()clock_gettime(),但分辨率仍仅限于系统时钟滴答

否则,您可以阅读TBLTBU (arch-specific)

于 2013-03-16T10:18:33.260 回答
1

有多种方法可以解决此问题,具体取决于您的需求。

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

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

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

根据您的系统配置,计数器可能会频繁重置,您可以sysTimestampPeriod()在发生这种情况时用于锻炼 - 您需要在计时代码中处理此问题。

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

于 2017-10-06T10:36:53.720 回答