当前位置: 技术问答>linux和unix
测试linux定时器
来源: 互联网 发布时间:2016-03-28
本文导语: [size=11px]你门好,希望大家能够在百忙之中帮我一下,谢谢 现在我要用linux定时器,现在我的系统是redhat9(2.4内核的), 在网上看的他的时钟中断频率是100Hz,现在我要用定时器。 我的主要用处就是进行数据采集->数据处理...
[size=11px]你门好,希望大家能够在百忙之中帮我一下,谢谢
现在我要用linux定时器,现在我的系统是redhat9(2.4内核的),
在网上看的他的时钟中断频率是100Hz,现在我要用定时器。
我的主要用处就是进行数据采集->数据处理->数据发送。就是用一个数字量板卡,
现在我想用它进行精确的定时,本来老师的要求是精确定时1ms,但是
好像在2.4内核的linux下面实现不了,因为我可以通过示波器看它的波形,
我试了一下,虽然在程序中可以定时一毫秒,但是出来的波形不是均匀的方波(0或者1)
而是高低电平不均匀的一宽一窄的波形,并且每一个周期的时间和是20ms,这样是不是就说明定时器不准了那?
现在我想在这个系统下测试到底他能精确定时到几ms,请问该用什么样子的函数啊?
我已经试过了那个timer_create,时间更长,不知道该用哪个好?希望得到你们的建议(带程序更好)
谢谢! [/size]
现在我要用linux定时器,现在我的系统是redhat9(2.4内核的),
在网上看的他的时钟中断频率是100Hz,现在我要用定时器。
我的主要用处就是进行数据采集->数据处理->数据发送。就是用一个数字量板卡,
现在我想用它进行精确的定时,本来老师的要求是精确定时1ms,但是
好像在2.4内核的linux下面实现不了,因为我可以通过示波器看它的波形,
我试了一下,虽然在程序中可以定时一毫秒,但是出来的波形不是均匀的方波(0或者1)
而是高低电平不均匀的一宽一窄的波形,并且每一个周期的时间和是20ms,这样是不是就说明定时器不准了那?
现在我想在这个系统下测试到底他能精确定时到几ms,请问该用什么样子的函数啊?
我已经试过了那个timer_create,时间更长,不知道该用哪个好?希望得到你们的建议(带程序更好)
谢谢! [/size]
|
似乎很难做到精确,Linux内核定时器的原理好像是:
把所有的定时器处理函数注册到一个链表,在一定时间去遍历链表,看相应定时器是否超时,
超时就执行定时器处理函数。
把所有的定时器处理函数注册到一个链表,在一定时间去遍历链表,看相应定时器是否超时,
超时就执行定时器处理函数。
|
在linux下,时钟的精确度依赖于”时钟心跳 jiff“的值,在一般的系统中其值为100,此时时钟精确度约为20ms,可以在编译时对其它指定。
在应用程序中,不太容易精确到1毫秒.
在应用程序中,不太容易精确到1毫秒.
|
要"精确定时1ms", 用linux的timer不能做到吧! 何况2.4 kernel不是实时内核
LZ你要做的数据采集,硬件应该有它自己的采样时钟吧? 为什么还需要由Linux来提供精确定时?
LZ你要做的数据采集,硬件应该有它自己的采样时钟吧? 为什么还需要由Linux来提供精确定时?