我正在开发一个基于 Raspberry Pi 的项目,该项目有一个 GPS 模块,我的老板希望我从中获取系统时钟的时间。然而,我们还需要在不同的传感器上获取读数,而 GPS 可能无法修复,并且我们需要知道获取这些读数的时间,精度为毫秒(50-100 毫秒的容差即可)。
我个人想要一个硬件 RTC 来解决这个问题,但我被指示要解决它。我的想法是用系统启动后的相对时间来标记每个读数,系统时间不可靠,并且在可用时由 NTP/卫星时间更新(然后,当同步时间可用时,我可以使用相对时间来修复记录)时间)。
那么,如何从用户空间 C 代码获得 Linux 中毫秒级的精确正常运行时间?像内核中可用的 jiffies 值之类的东西将是完美的。
我认为你必须检查主板上的主控制器(CPU)。通常,CPU 中会集成硬件定时器模块,或者 CPU 内核中的递减寄存器实现。
如果你的CPU上有硬件定时器或DEC寄存器,那么用它来实现周期性中断(频率可以是1000HZ或其他)。中断处理程序可以通知/唤醒用户空间进程以执行必要的实时工作。
使用
clock_gettime( CLOCK_BOOTTIME, ... )