繁体   English   中英

如何在Vxworks中实现C定时器

[英]How to implement C timer in Vxworks

我已经实现了计时器功能来查找我的任务在 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 中实现这个计时器来计算任务的经过时间。

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

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

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

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

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

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

根据您的系统配置,计数器可能会频繁重置,并且您可以使用sysTimestampPeriod()来进行锻炼,这将发生在您的计时代码中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM