2014-03-24 137 views
0

除了tickGet()和tickAnnounce之外,是否還有VxWorks中的系統時間?我想測量指定任務的任務切換之間的時間,但我認爲tickGet()的精度不夠好,因爲開始時的兩個tickGet()值和taskSwitchHookAdd函數的結尾始終是相同的!在Vxworks中獲取系統時間

回答

0

這取決於你是什麼平臺上,但如果是86,那麼你可以使用:

pentiumTscGet64(); 
+0

所以你知道這個函數有多精確嗎? – Zeinab

+0

TSC以CPU的時鐘速率遞增。 –

2

如果您正在尋找嘗試和時間任務切換,我會假設你需要一個計時器至少在微秒(美國)水平。

通常情況下,定時器/時鐘這種細粒度只能由你所運行的平臺提供。如果您正在使用嵌入式系統,您可以嘗試閱讀您的電路板支持包(如果有的話)的手冊以查看是否有任何功能提供訪問電路板上的各種定時器。

的更低水平的解決方案將是弄清楚,在系統上運行的處理器,然後寫一些簡單的彙編代碼來輪詢所述處理器的內部時基寄存器(TBR)。這可能需要對正在運行的處理器進行一些研究,但可以輕鬆完成。 如果您在基於PPC處理器上運行,你可以使用下面的代碼讀取TBR:

loop: mftbu rx #load most significant half from TBU 
mftbl ry #load least significant half from TBL 
mftbu rz #load from TBU again 
cmpw rz,rx #see if 'old' = 'new' 
bne loop #repeat if two values read from TBU are unequal 

來源:http://www-inteng.fnal.gov/Integrated_Eng/GoodwinDocs/pdf/Sys%20docs/PowerPC/PowerPC%20Elapsed%20Time.pdf

祝你好運!