【问题标题】:Millisecond resolution timer on LinkIT 7688LinkIT 7688 上的毫秒分辨率计时器
【发布时间】:2018-06-01 22:11:11
【问题描述】:

我正在为 Mediatek 的 LinkIt Smart 7688 设备进行开发。我需要在需要至少 10 毫秒分辨率(最好是 1 毫秒)的用户空间应用程序中做一些计时。

但是,我尝试过的每个系统调用都仅以 1 秒的分辨率返回值。 clock_gettime(尝试了所有不同的时钟)和gettimeofday(应该提供亚秒级分辨率)却没有。

在目标上执行dmesg 表明内核时间戳的分辨率低于 1 秒,因此我得出结论,时钟源具有亚秒级分辨率。 (如果不是这种情况,我会非常昂贵:))

如何在 Linkit Smart 7688 设备上获得亚秒级分辨率的时间戳?

也许我可能缺少一些内核配置来选择正确的时钟源以供用户空间使用?一直没找到。

【问题讨论】:

  • 你应该知道这个网站的练习:展示你的代码来证明问题。

标签: linux timer embedded embedded-linux clock


【解决方案1】:

不要只使用gettimeofday返回的秒数,还要使用c

gettimeofday(&t0, 0);
/* ... */
gettimeofday(&t1, 0);
long elapsed = (t1.tv_sec-t0.tv_sec)*1000000 + t1.tv_usec-t0.tv_usec;

【讨论】:

  • 返回的struct timeval.tv_usec 在此平台上始终为零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
相关资源
最近更新 更多