我不確定這問題要發在linux板或C_and_CPP板比較好,
目前我打算用嵌入式開發板 beaglebone black 上安裝Debian, kernel 3.15,
因為某些需要,所以時間精度要求要在 1us 以下,所以我打算用clock_nanosleep()實現
但我給 1s 的delay,他實際睡眠時間卻是 1s 又 120us,我是在clock_nanosleep()前後
加上clock_gettime(),然後把兩個時間相減得到的數字.. 總是會睡過頭。
另外我有用linuxPTP(某種利用PTP校正系統時間(CLOCK_REALTIME)的軟體),並且將示波器
接上GPIO看1PPS的準確度,delay也是多了100us左右...
請問有辦法讓系統達到至少 1us 以下的時間精度嗎? 譬如我設delay 1s,實際delay是
1s 又 200ns 之類的,用realtime OS有幫助嗎? 或者這是kernel counter的問題(但我對
linux的時間設計並不是很了解,只知道作業系統的計時跟counter有關)?
希望能獲前輩指教,謝謝。
下面是我其中的三組數據:
da 69033 dan 946956445
db 69034 dbn 947070913
da 69035 dan 947355036
db 69036 dbn 947490079
da 69037 dan 947738536
db 69038 dbn 947863215
左邊是秒(絕對時間),右邊是奈秒(絕對時間),故上下兩組相減可看到多了快100us...