欢迎光21点官网官网!

21点官网-采用混合时钟模式提高Linux时钟精度的方法

发布时间:2021-06-10 人气:

本文摘要:数控技术(CNC)早已沦为现代制造业的核心技术之一,开放式数控系统相对于传统数控系统在功能、灵活性、成本等方面的优势,使得开放式数控沦为数控系统未来发展的主要趋势。目前,开放式数控系统主要有三种结构,即专用CNC+PC、标准化PC+运动控制器和软数控系统。其中硬数控系统使用多任务实时操作系统,将运动控制部分与管理部分构建到一个硬件平台上,符合数控系统在功能方面和非功能方面(主要展现出在实时性)的拒绝[1]。

21点官网

数控技术(CNC)早已沦为现代制造业的核心技术之一,开放式数控系统相对于传统数控系统在功能、灵活性、成本等方面的优势,使得开放式数控沦为数控系统未来发展的主要趋势。目前,开放式数控系统主要有三种结构,即专用CNC+PC、标准化PC+运动控制器和软数控系统。其中硬数控系统使用多任务实时操作系统,将运动控制部分与管理部分构建到一个硬件平台上,符合数控系统在功能方面和非功能方面(主要展现出在实时性)的拒绝[1]。开放式数控系统的理想软件平台是动态多任务操作系统,目前,商业动态多任务操作系统有很多,较为知名的有VxWORKS、iRMX、QNX等,但这些操作系统产品大多成本高、开放性劣。

Linux是一种发展十分迅速的类UNIX系统,已被普遍地运用到服务器、桌面系统以及嵌入式应用领域。Linux由于其对外开放源代码的特点,可以在此基础上研发具备自律知识产权的数控系统。但是Linux最初的设计目标是一个分时操作系统,执着系统效率和公平性,在对实时性拒绝低的领域应用于受到限制。

虽然2.6内核的Linux时钟粒度提升到了1ms,但仍远无法符合数控系统对定点精度的拒绝。  近年来的研究以细化时钟粒度来提升Linux的动态应用于能力明确提出了一些方案和设想,主要有KURT-Linux系统、RT-Linux系统。本文对KURT_Linux、RT-Linux提升时钟精度的方法展开分析,考虑到在强劲周期性应用于或者在某个时段内有大量高精度定时器将超时的情况下,使用一种动态的多模式时钟机制来提升Linux的时钟精度,并通过分析测试证明该方案显然不切实际。

  1Linux时钟机制与改良  1.1Linux时钟机制  时钟和定时器对Linux系统来说是至关重要的。首先,内核要管理系统的运行时间以及墙上时间;其次,内核中大量的任务是基于时间驱动,其中有些任务是周期继续执行,如对调度程序中运营队列展开均衡调整或对屏幕展开创下,而有些任务必须推迟继续执行的I/O操作者则必须等候一个比较时间后才运营。  系统时钟是定时器硬件和系统软件的融合,在X86体系结构中,用于最广泛的定时器硬件是Intel8254可编程定时器芯片(PIT),它产生的中断就是时钟中断(tick)。

时钟中断是特定的周期性中断,对应中断服务程序,已完成改版系统时间以及任务的管理、调度等工作;系统在每次时钟中断处置中改版jiffies,确保系统定时器链表timer_list,对超时的定时器展开处置。  与系统定时器比较的是动态定时器,是用来调度事件在将来某个时刻再次发生的机制。它依赖系统时钟中断,在时钟中断服务程序的下半部,系统检查否有超时的动态定时器并展开处置。

linux2.6内核的系统时钟频率为1000Hz,即时钟中断的启动时周期为1ms,中断服务程序最慢每1ms继续执行一次。动态定时器随时都有可能超时,但只有在中断服务处理程序继续执行时才不会检查、继续执行超时的动态定时器,所以动态定时器的平均误差约为半个系统时钟周期。  CNC数控系统的工作过程一般来说是首先内辟一个定时器(由操作系统已完成),然后周期性地继续执行控制程序,周期一般来说为几十微秒到十几毫秒。在每个周期内要已完成状态监测、译码、刀具补偿计算出来、插补计算出来、PLC管理、方位掌控等工作。

可见,在加工工件过程中,CNC拒绝的实时性十分低,必需在很短、很准确的周期内已完成一系列的计算出来和输入输出,否则加工精度无法获得确保。标准2.6内核Linux定时器精度相比之下约将近数控系统周期动态任务拒绝的微秒级定点精度。

21点官网

  1.2提升时钟精度的办法  近年来人们对Linux展开动态化改建明确提出了一些方案和设想,主要有KURT-Linux、RT-Linux等[2]。下面分别展开讲解。

  KURT_Linux[3]由kansas大学研发,通过对Linux内核内部展开改建来符合动态应用于市场需求。在时钟精度方面,KURT-Linux将Linux的时钟中断相同模式改回单次启动时模式(one-shotmode),即每次给时钟芯片设置一个超时时间,然后等到该超时事件再次发生,在时钟中断处理过程中再度根据必须设置一个超时时间。通过这种逆宽时钟模式,将Linux时钟精度提升到s级。既保证了特定动态任务的精度拒绝,又防止了不必要的调度开销。

  RT-Linux是新墨西哥工学院研制的一个基于Linux的硬实时系统。它使用双内核方法,在原先Linux基础上设计一个专门处置动态进程的内核,然后把整个Linux作为动态内核上运营的一个低优先级进程。

21点官网

在时钟精度方面类似于KURT_Linux,将系统动态时钟设置为单次启动时状态,然后利用TSC获取高达CPU时钟频率的定点精度。  MontaVistaLinux是由JamesReady领导研发的嵌入式Linux,通过对Linux内核展开内部改建,必要改动原先Linux内核的数据结构等来符合动态必须。

在高精度时钟方面,充满著传统的周期中断CPU的方法,使定时器在必须的任何一个s产生中断,但不出每个s产生中断,将系统的定点精度提升到s级。  Linux-SRT是剑桥大学DavidIngram的博士论文项目,它非常简单地改动了Linux中Hz的定义,将Linux时钟频率由100Hz提升到1024Hz。这种方式构建一起很非常简单,但是由此带给频密的定点中断使得系统支出相当大。  糅合KURT-Linux的one-shot思想来提升时钟精度,并利用高级可编程中断控制器(APIC)[4]或通过可选的硬件资源构建一个与系统时钟分段的高精度动态时钟,在系统中确保一个高精度动态时钟和一个较低精度系统时钟[5-7],是一种广泛使用的提升时钟精度的方法。

但是在缺少可选硬件反对或APIC用于有限的应用环境下,不能利用PIT芯片作为高精度时钟源,在每次中断处置时要新的计算出来下一次中断时间和对PIT展开编程。由于PC的兼容性,PIT芯片坐落于短距离的ISA总线上,频密设置定时器硬件也必须花费大量的时钟周期。因此one-shot模式时钟中断处置时间有可能超过标准Linux时钟中断处置时间的7~15倍[8-9]。

在强劲周期应用于或有大量定时器集中于在某个时段内时超时,必须采行一种不同于one-shot的时钟模式。  如果系统中没任何动态定时器,则系统间隔1ms不会有一次周期性jiffies时钟中断,使用one-shot模式使得系统性能上升约1.5%。

如果系统中没任何动态定时器,则必须新的将时钟设置为RTLCLOCKMODEPERIODIC工作模式,并且时钟周期和标准Linux下时钟周期完全一致,使Linux能在系统中不不存在动态任务的情况下高效地工作。


本文关键词:21点,官网,采用,混合,21点官网,时钟,模式,提高,Linux

本文来源:21点官网-www.sanhum.com