我不确定这问题要发在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...