【问题标题】:How to get a millisecond precision uptime from user-space in Linux?如何从 Linux 中的用户空间获得毫秒精度的正常运行时间?
【发布时间】:2013-07-25 10:35:18
【问题描述】:

我正在开发一个基于 Raspberry Pi 的项目,该项目有一个 GPS 模块,我的老板希望我从中获取系统时钟的时间。然而,我们还需要在不同的传感器上读取读数,而 GPS 可能无法修复,并且我们需要知道读取这些读数的毫秒精度(50-100 毫秒的容差即可)。

就我个人而言,我想要一个硬件 RTC,但我被指示解决它。我的想法是用系统启动后的相对时间标记每个读数,系统时间不可靠,并且在可用时由 NTP/卫星时间更新(然后我可以在同步时间可用时使用相对时间来修复记录时间)。

那么,如何在 Linux 中从用户空间 C 代码中获得毫秒级的精确运行时间?像内核中可用的 jiffies 值这样的东西会很完美。

【问题讨论】:

    标签: linux timing uptime


    【解决方案1】:

    我认为您必须检查板上的主控制器(CPU)。通常会在 CPU 中集成硬件定时器模块,或者在 CPU 内核中实现递减寄存器。

    如果你的 CPU 上有硬件定时器或 DEC 寄存器,则使用它来实现周期性中断(频率可以是 1000HZ 或其他)。中断处理程序可以通知/唤醒用户空间进程以完成必要的实时工作。

    【讨论】:

    • 谢谢,我在此基础上进行了一些谷歌搜索,发现:airspayce.com/mikem/bcm2835/index.html 有一个名为 bcm2835_st_read() 的函数,该函数返回 uint64 系统计时器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多