gpt4 book ai didi

c - 如何在Vxworks中实现C定时器

转载 作者:行者123 更新时间:2023-11-30 17:53:44 25 4
gpt4 key购买 nike

我已经实现了timer查找我的任务在 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()访问或tickGet64() .

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

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

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

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

关于c - 如何在Vxworks中实现C定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15437789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com