在Linux中,如何从用户空间获得毫秒级的正常运行时间?

在Linux中,如何从用户空间获得毫秒级的正常运行时间?,linux,timing,uptime,Linux,Timing,Uptime,我正在做一个基于Raspberry Pi的项目,它有一个GPS模块,我的老板想让我从中获取系统时钟的时间。然而,我们还需要在不同传感器上读取读数,而GPS可能没有固定位置,我们需要知道读取这些读数时的毫秒精度(公差为50-100ms是可以的) 就我个人而言,我想要一个硬件RTC来解决这个问题,但我已经得到指示去解决它。我的想法是用系统启动的相对时间标记每个读数,系统时间不可靠,可用时由NTP/卫星时间更新(然后,当同步时间可用时,我可以使用相对时间修复记录) 那么,如何从用户空间C代码中获得Li

我正在做一个基于Raspberry Pi的项目,它有一个GPS模块,我的老板想让我从中获取系统时钟的时间。然而,我们还需要在不同传感器上读取读数,而GPS可能没有固定位置,我们需要知道读取这些读数时的毫秒精度(公差为50-100ms是可以的)

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


那么,如何从用户空间C代码中获得Linux中毫秒级的精确正常运行时间呢?内核中提供的类似jiffies值的东西将是完美的。

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


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

谢谢,我在谷歌上搜索了一下,发现了这个:它有一个名为bcm2835_st_read()的函数,返回uint64系统计时器。