簡體   English   中英

在Linux中如何從用戶空間獲得毫秒級的正常運行時間?

[英]How to get a millisecond precision uptime from user-space in Linux?

我正在一個基於Raspberry Pi的項目中,該項目具有GPS模塊,老板希望我從中獲取系統時鍾的時間。 但是,當GPS可能無法解決問題時,我們還需要在不同的傳感器上獲取讀數,並且需要知道獲取這些讀數時的毫秒精度(50-100ms的公差范圍是可以的)。

我個人希望為此使用硬件RTC,但已指示我解決該問題。 我的想法是用系統啟動時的相對時間標記每個讀數,系統時間不可靠,並且在可用時通過NTP /衛星時間進行更新(當相對時間可用時,我可以修正記錄時間)。

那么,如何從用戶空間C代碼在Linux中獲得毫秒級的精確運行時間呢? 諸如內核中的jiffies值之類的東西將是完美的。

我認為您必須檢查主板上的主控制器(CPU)。 通常,將有一個硬件計時器模塊集成到CPU中,或在CPU內核中實現減量器寄存器。

如果您的CPU上有硬件計時器或DEC寄存器,則可以使用它來執行定期中斷(頻率可以是1000HZ或其他)。 中斷處理程序可以通知/喚醒用戶空間進程以進行必要的實時工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM