采用混合时钟模式提高Linux时钟精度的方法
3.2 模拟测试
测试环境为Pentium4 3.0 GHz CPU,1GDDR内存的硬件平台和2.6.15.6版本内核的Fedora core linux操作系统平台。
根据数控实时任务的要求设定了周期为0.1 ms、1 ms和100 ms的进程模拟数控实时周期任务[10],统计运行1 000次的数据,比较改进后的高精度定时器和原linux定时器的平均定时偏差,并令阈值为30,设置周期任务数量为4、20、40,使时钟工作在不同模式下。测试结果如表1所示。
由测试数据对比,原linux系统的定时平均偏差为968 μs,改进后系统的定时平均偏差为34 ?滋s。显而易见,改进后的定时器定时精度大大提高,达到10 μs级,能满足数控系统应用的要求。
在原Linux内核和改进后的高精度定时器内核上睡眠50 μs各1 000次,测试实际睡眠时间所得结果与表1类似,50 μs的实际睡眠时间从(2.001~2.116) ms级降到(57~91) μs级。
全软件数控系统以应用软件的形式实现运动控制,是开放式数控系统的发展方向。开源的Linux是开发具有自主知识产权数控系统的理想平台,但是其粗糙的时钟粒度是普通Linux直接应用于数控系统的最大障碍,因此需要细化Linux的时钟粒度提高其实时性。
简单地提高系统时钟频率将引起频繁的中断处理,导致系统性能的下降。KURT-Linux采用的one-shot方式将周期性的时钟中断改进为单次触发状态,实现了μs级的定时精度。本文分析了普通Linux时钟机制和几种实时Linux操作系统细化时钟精度的方式,提出了一种混合多种时钟模式的动态时钟机制,达到了CNC要求的时钟精度。最后的性能分析和模拟测试证实了新时钟机制的技术性能。
- Linux实时化解决方案Xenomai的原理及应用(01-19)