2013-07-25 35 views
0

我正在開發一個基於Raspberry Pi的項目,該項目有一個GPS模塊,我的老闆希望我可以從系統時鐘中獲取時間。但是,我們還需要讀取不同傳感器的讀數,而GPS可能沒有修復,而且我們需要知道讀取這些讀數時的毫秒精度(公差爲50-100毫秒是否正常)。如何從Linux的用戶空間獲得毫秒級的精度正常運行時間?

就我個人而言,我需要一個硬件RTC,但我已被指示解決此問題。我的想法是在系統啓動時用相對時間標記每個讀數,系統時間不可靠,並且在NTP /衛星時間可用時更新(當可以使用相對時間的同步時間時,我可以修復記錄時間)。

那麼,如何從用戶空間C代碼中獲得毫秒級的Linux正常運行時間?內核中可用的jiffies值就是完美的。

回答

0

我認爲你必須檢查你的主板上的主控制器(CPU)。通常,CPU中會集成一個硬件定時器模塊,或者在CPU內核中實現遞減寄存器實現。

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

+0

謝謝,我做了一些谷歌搜索的基礎上,發現這一點:http://www.airspayce.com/mikem/bcm2835/index.html它有一個函數稱爲bcm2835_st_read(),返回uint64系統計時器。 – PeterBelm

相關問題