【问题标题】:How to implement C timer in Vxworks如何在 Vxworks 中实现 C 定时器
【发布时间】:2013-03-04 11:38:52
【问题描述】:

我已经实现了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 中实现这个计时器来计算任务的运行时间。

【问题讨论】:

  • 我刚刚用谷歌搜索了“vxworks 计时器”并获得了数百个明显相关的点击。您在寻找不同的东西吗?

标签: c timer performance-testing vxworks powerpc


【解决方案1】:

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

否则,您可以阅读 TBLTBU(特定于架构)

【讨论】:

    【解决方案2】:

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

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

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

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

    根据您的系统配置,计数器可能会频繁重置,您可以使用sysTimestampPeriod() 进行锻炼 - 您需要在计时代码中进行处理。

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

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 2011-04-29
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      相关资源
      最近更新 更多