2010-04-01 35 views
2

我有一個內置模塊,它的內置模塊需要至少1毫秒的時間分辨率。我目前使用do_gettimeofday(),但是我擔心,一旦將我的模塊移動到嵌入式設備,這不起作用。該器件具有180 Mz處理器(MIPS),內核中默認的HZ值爲100.因此,使用jiffies只能給我10毫秒的最佳分辨率。這不會削減它。嵌入式設備(Linux Kernel)上的微秒(或一個毫秒)時間分辨率

我想知道的是,如果do_gettimeofday()基於定時器中斷(HZ)。可以保證提供至少1毫秒的分辨率嗎?

謝謝!

+2

嵌入式系統通常有一堆定時器可用 - 您可以將其中的一個專用於您的問題嗎? – 2010-04-01 23:50:59

+0

您是否需要絕對的時間(例如2010年4月2日8:44:15.12455)?或者你只需​​要相對時間? (例如50usec已經過去) – 2010-04-02 12:46:08

+0

相對時間也可以。除了jiffies和do_gettimeofday之外,我不熟悉跟蹤時間的其他方法。我還有其他方法嗎? – ChrisDiRulli 2010-04-05 18:33:23

回答

3

ms不是微秒,而是毫秒。在不瞭解設備選擇的更多信息的情況下,沒有人能夠回答這樣一個與實現相關的問題,例如gettimeofday是否基於定時器中斷。如果你選擇了一個知道指令集和時鐘速度的設備,那麼你爲什麼不看看該特定內核的實現以找出答案?

+1

在這種情況下,你可能會說「比我們好」。 – 2010-04-02 00:23:12

2

在嵌入式設備上,它不能得到保證。看起來它是基於MIPS的,可能還行,大多數MIPS機器都有循環計數器。但是,你將不得不閱讀源代碼到內核的那個部分,看看它在你的平臺上做了什麼。

2

是的,您需要在您的內核中啓用CONFIG_HIGH_RES_TIMERS,並確保您的平臺註冊了clock_event_device。這是允許向用戶空間公開高分辨率定時器的機制。您可以通過在用戶空間中調用clock_getres()來檢查定時器的分辨率。