[英]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()
,但分辨率仍限于系统时钟滴答
否则,您可以阅读TBL和TBU (特定于拱门)
有多种方法可以解决此问题,具体取决于您的需求。
如果要测量的活动长时间运行,您可能更喜欢使用系统滴答计数器,可通过tickGet()
或tickGet64()
。
这以系统时钟频率频率(即调度程序的速率,而不是 CPU 频率)递增,因此分辨率仅限于单个滴答声 - 可能大到 1/60 秒。 您可以使用sysClkRateGet()
来确定频率。
对于长时间运行的任务,以上可能就足够了,但是如果您需要更高的分辨率,可能以有限的持续时间为代价,您可以使用系统时间戳计数器(如果已配置)。 为此,您可以使用sysTimestamp()
(或sysTimestamp64()
),也可以使用sysTimestampFreq()
来获取频率。
根据您的系统配置,计数器可能会频繁重置,并且您可以使用sysTimestampPeriod()
来进行锻炼,这将发生在您的计时代码中。
当然,您可以同时使用这两种方法来提供长时间运行但高分辨率的计时器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.