我已经实现了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中实现此计时器以计算任务的已用时间。
答案 0 :(得分:0)
如果系统计时器刻度分辨率足够,您可以使用tickGet()
和sysClkRateGet()
或clock_gettime()
,但解决方案仍限于系统时钟滴答
否则,您可以阅读 TBL 和 TBU (特定于拱门)
答案 1 :(得分:0)
根据您的需要,有各种方法。
如果要测量的活动长时间运行,您可能会使用系统计时器计数器,可通过tickGet()
或tickGet64()
访问。
这以系统时钟频率频率(即调度程序的速率,而不是CPU频率)递增,因此分辨率限制为单个滴答 - 可能大到1/60秒。您可以使用sysClkRateGet来确定频率。
对于长时间运行的任务,上述内容可能已足够,但如果您需要更高的分辨率(可能以有限的持续时间为代价),则可以使用系统时间戳计数器(如果已配置)。为此,您可以使用sysTimestamp
(或sysTimestamp64
),也可以使用sysTimestampFreq
来获取频率。
根据您的系统配置,计数器可能会频繁重置,并且您可以使用sysTimestampPeriod
进行锻炼 - 您需要在计时代码中处理此问题。
当然,您可以同时使用这两种方法来提供长时间运行但高分辨率的计时器