一种基于RTLinux的设备实时控制方法

文档序号:6630503阅读:330来源:国知局
专利名称:一种基于RTLinux的设备实时控制方法
技术领域
本发明涉及一种基于实时操作系统RTLinux的设备实时控制方法,是一项涉及实 时操作系统、设备驱动的计算机系统软件技术,提供了一套包括实时环境、设备驱动以及接 口 API函数库在内的设备实时控制的解决方法。
背景技术
基于实时操作系统的计算机实时控制技术在工业控制、通信和大型服务器中的应 用日益广泛。传统的通用系统由于操作系统的分时性,主要是过长的中断反应时间和任务 切换反应时间,无法提供对PCI设备、USB设备、网络设备等设备的实时控制,因此无法满足 这些设备对高效数据采集、时序控制等实时任务的要求。在众多实时操作系统中,Linux系统具备以下优点开放式性好,可免费获取内源 码,并进行任意修改;可以支持多种平台,移植性好;系统内核可根据需要裁减;支持的功 能丰富;安全性和可靠性高。采用裁减后的Linux可以在保证系统满足所需功能的前提下 保证体积的最小化,对专用的嵌入式设备而言能够最大限度的节省存储空间。但是,标准的 Linux系统由于实时性能不佳,通常采用在系统中加载RTLinux实时内核实现对硬实时的 支持。RTLinux与Linux操作系统共存的硬实时操作系统能够创建精确运行的符合 POSIX. Ib标准的实时进程。RTLinux实现了一个高效的可抢先的实时调度核心,全面接 管中断,并把标准Linux作为此实时核心的一个优先级最低的进程运行。RTLinux和标准 Linux构成一个完备的整体,实时内核确保了关键任务的硬实时性,能够完成既包括实时和 非实时的复杂任务。但是,RTLinux操作系统存在中断无法共享,不能同时支持多个同类设 备运行,内核线程无法相应设备中断等问题。同时,RTLinux作为实时系统内核,缺少对硬 件设备的支持。

发明内容
针对上述现有技术存在的不足,本发明提出了一种基于RTLinux的设备实时控制 方法,利用在裁减后标准Linux系统上加载RTLinux实时内核的实时操作系统,对RTLinux 进行扩展,增加RTLinux对所需控制设备的支持,实现RTLinux中断共享,主要包括以下步 骤(1)在RTLinux源码中编写支持设备接口函数,包括接口设备文件类型、文件操作 接口函数、方法函数、注册和撤销的函数,并生成对应接口模块;(2)在RTLinux的中断注册函数中增加对设备的中断注册,改写RTLinux中的 rtl_core. c文件,在保持RTLinux原有处理方式不变的情况下,增加对PLXPCI9000的设备 的中断支持;(3)对标准Linux驱动程序的设备驱动接口 file_operations采用RTLinux的 内核函数进行实时化,以及自旋锁实时化,在标准Linux驱动程序中使用RTLinux的rtl_wait_t处理中断等待,使用RTLinux的posix线程响应PLXPCI9000设备中断;(4)将标准Linux的API函数库采用RTLinux的内核函数封装为内核模块,把PLX PCI900设备的物理内存映射函数改写为与RTLinux内核函数一致的形式,增加posix的互斥量。本发明提出的基于RTLinux的设备实时控制方法,是一种具备硬实时性的设备实 时控制解决方法,包括实时操作系统环境、实时设备驱动以及实时控制API函数,解决了标 准RTLinux下无法实现中断共享的问题,可实现同时对多个同类设备的实时控制,经实际 验证,相同设备在实时控制下较之非实时控制中断响应时间由毫秒级提高到微秒级,实时 性能好;此外,本发明的方法不改变RTLInux的原有特性,支持原有RTLinux的全部功能,兼 容性好,能够进行RTLinux以及Linux系统下设备控制应用的扩展开发。
具体实施例方式本发明采用在裁减后标准Linux系统上加载RTLinux实时内核的实时操作系统。 对RTLinux进行扩展,增加RTLinux对所需控制设备,如PCI设备、USB设备、网络设备的支 持,实现RTLinux中断共享,确保多个同类设备在实时内核中能够同时运行。在设备原有标 准Linux驱动程序结构基础上,保持驱动框架结构和驱动接口,使用RTLinux实时内核函数 将其实时化。提供设备驱动的实时应用API接口函数,将设备驱动接口 API函数实时化,解 决驱动与RTLinux不兼容的问题。解决内核线程无法响应中断的问题,在RTLinux线程中 实现中断处理。最后,需要解决实时驱动与原API库函数不兼容问题,并将API库函数中 使用的系统函数用内核函数重写,将API函数库以RTLinux内核模块的形式实时化,库函 数在驱动模块加载后作为实时内核模块加载,由实时任务调用。具体是对实时RTLinux系 统进行扩展,实现中断共享机制,并在RTLinux的Posix线程中处理中断;在RTLinux中添 加对设备的支持。增加设备接口函数,包括接口设备文件类型、文件操作接口函数、方法函 数、注册和撤销的函数,并生成对应接口模块;在RTLinux中断注册函数增加对设备驱动的 实时处理。RTLinux的硬中断,同一中断号只能注册一个设备,无法被多个使用RTLinux驱 动的设备共享。为了在RTLinux中实现中断共享机制,改写RTLinux中的rtl_core. c文 件。为了与RTLinux原有的函数兼容,在保持原有处理方式不变的情况下,增加了对新设备 (XJS_device)的中断支持。使用该类新设备所对应中断注册、响应及处理函数,即可将同 一中断号与多个XJS_device共享;通过对驱动程序中断处理部分的进行实时化和设备驱 动接口 filejperations的RTLinux实时化改写,以及自旋锁实时化,实现了设备驱动的标 准Linux下驱动源码的实时化。由于内核线程中无法响应中断,为了在实时任务中响应设 备中断,在驱动中使用RTLinux的rtl_wait_t处理中断等待,实现实时任务使用RTLinux 的posix线程响应设备中断。将API改写为内核模块函数、把物理内存映射函数改写为与 实时内核一致的形式,增加posix的互斥量,将实时控制函数转换为内核函数,从而完成设 备API函数的内核化和实时化。最后编写设备实时驱动、API内核函数库的加载和删除脚 本,能够方便的在系统设备路径Zdev中加入和清除实时设备。对设备的实时控制任务,可在硬件系统载入设备后,启动扩展后的RTLinux实时 内核,并启动加载设备路径脚本,同时载入实时设备驱动模块以及API实时函数库内核模 块,不同实时任务可以依据任务要求调用实时API库函数进行对设备的实时控制。
本发明扩展后的RTLinux不改变RTLInux的原有特性,完全支持原有RTLinux的 全部功能。设备实时驱动、实时驱动API库将在RTLinux启动后以实时内核模块加载入系 统。设备的实时控制部分也将实时内核模块在系统中运行,而设备控制应用等非实时任务 可以运行在Linux用户空间,能够方便地使用系统提供的各种资源(网络、文件系统等),并 受到系统的保护,增加了系统的安全性。下面以提供PLX PCI9000系列芯片为接口控制器的PCI设备在RTLinux下的实时 控制解决方法,进一步说明本发明的技术内容。在RTLinux源码中编写支持PLX PCI9000接口芯片的设备接口函数,包括接口设 备文件类型、文件操作接口函数、方法函数、注册和撤销的函数,并生成对应接口模块。在 RTLinux中断注册函数增加对PCI9000驱动的实时处理。为了在RTLinux中实现中断共享 机制,改写RTLinux中的rtl_core. c文件。在保持原有处理方式不变的情况下,增加了对一 类新设备(XJS_device)的中断支持。使用该类新设备所对应中断注册、响应及处理函数, 即可将同一中断号与多个XJS_device共享。对PLX PCI9000系列芯片的标准Linux驱动 程序以及API函数库进行改进,使其能在权利要求1所述的扩展后的RTLinux内核中运行。 对驱动程序设备驱动接口 file_0perati0ns的RTLinux实时化,以及自旋锁实时化,实现了 PLX PCI9000系列接口芯片标准Linux驱动源码的实时化。由于内核线程中无法响应中断, 为了在实时任务中响应设备中断,在驱动中使用RTLinux的rtl_wait_t处理中断等待,实 现实时任务使用RTLinux的posix线程响应设备中断。将API函数库封装为内核模块函数, 把PCI9000物理内存映射函数改写为与实时内核一致的形式,增加posix的互斥量,将实时 控制函数转换为内核函数,从而完成PCI9000API函数的内核化和实时化。具体如下首先,需要对实时RTLinux系统进行扩展,增加对PLX PCI9000的支持,实现中断 共享机制,并能够在RTLinux的Posix线程中处理中断RTLinux原有的设备文件接口无法支持PLX PCI接口芯片,在RTLinux源码中编写 支持PLX PCI接口芯片的设备接口函数,包括接口设备文件类型、文件操作接口函数、方法 函数、注册和撤销的函数,并生成对应接口模块。在RTLinux的中断注册函数中增加对PLX PCI9000的设备的中断注册,改写 RTLinux中的rtl_core. c文件,在保持RTLinux原有处理方式不变的情况下,增加对PLX PCI9000的设备的中断支持。在RTLinux中断注册函数增加对PLX驱动的实时处理。RTLinux 的硬中断,同一中断号只能注册一个设备,无法被多个使用RTLinux驱动的设备共享。为了 在RTLinux中实现中断共享机制,改写RTLinux中的rtl_core. c文件。为了与RTLinux原 有的函数兼容,在保持原有处理方式不变的情况下,增加了对一类新设备(XJS_device)的 中断支持。使用该类新设备所对应中断注册、响应及处理函数,即可将同一中断号与多个 XJS_device 共享。对标准Linux驱动程序的设备驱动接口 f ile_operations采用RTLinux的内核函 数进行实时化,以及自旋锁实时化,在标准Linux驱动程序中使用RTLinux的rtl_wait_t 处理中断等待,使用RTLinux的posix线程响应PLX PCI9000设备中断。通过对驱动程序中 断处理部分的进行实时化和设备驱动接口 filejperations的RTLinux实时化改写,以及 自旋锁实时化,实现了 PLX PCI9000系列接口芯片标准Linux驱动源码的实时化。由于内 核线程中无法响应中断,为了在实时任务中响应设备中断,在驱动中使用RTLinux的rtl_wait_t处理中断等待,实现实时任务使用RTLinux的posix线程响应设备中断。将标准Linux的API函数库采用RTLinux的内核函数封装为内核模块,把PLX PCI900设备的物理内存映射函数改写为与RTLinux内核函数一致的形式,增加posix的互 斥量。将API改写为内核模块函数、把PLX物理内存映射函数改写为与实时内核一致的形 式,增加posix的互斥量,将实时控制函数转换为内核函数,从而完成PCI9000 API函数的 内核化和实时化。最后,编写PLX实时设备加载和删除脚本,能够方便的在系统设备路径Zdev中加 入和清除PLX实时设备。对基于PLX PCI9000系列的不同PCI设备的实时控制任务,可在硬件系统载入设 备后,启动扩展后的RTLinux实时内核,并启动加载设备路径脚本,同时载入PLX实时设备 驱动模块以及API实时函数库内核模块,不同实时任务可以依据任务要求调用API实时库 函数进行对设备的实时控制。本发明在开放源码的标准Linux驱动及RTLinux实时系统的基础上提出了一套完 全完整的实时Linux下PLX PCI9000系列PCI接口设备的实时控制解决方案,包括实时操 作系统环境、实时设备驱动以及实时控制API函数,并解决了 RTLinux下无法实现中断共享 的问题,在该方案下可实现多个同类设备同时实时工作。本发明通用性好,对PLX PCI9000 系列芯片的各种功能具有完全的支持能力,实时性能好,相同设备在实时控制下较之非实 时控制中断响应时间提高一倍。本发明加载于以标雁八准Linux为平台的PCI和CPCI计 算机作为设备的实时解决方案,也可作为基于PLX PCI9000芯片的嵌入式设备的实时控制 系统。
权利要求
1. 一种基于RTLinux的设备实时控制方法,主要包括以下步骤(1)在RTLinux源码中编写支持设备接口函数,包括接口设备文件类型、文件操作接口 函数、方法函数、注册和撤销的函数,并生成对应接口模块;(2)在RTLinux的中断注册函数中增加对设备的中断注册,改写RTLinux中的rtl_ core, c文件,在保持RTLinux原有处理方式不变的情况下,增加对PLXPCI9000的设备的中 断支持;(3)对标准Linux驱动程序的设备驱动接口file_operations采用RTLinux的内核函 数进行实时化,以及自旋锁实时化,在标准Linux驱动程序中使用RTLinux的rtl_wait_t 处理中断等待,使用RTLinux的posix线程响应PLXPCI9000设备中断;(4)将标准Linux的API函数库采用RTLinux的内核函数封装为内核模块,把PLX PCI900设备的物理内存映射函数改写为与RTLinux内核函数一致的形式,增加posix的互 斥量。
全文摘要
本发明提出了一种基于RTLinux的设备实时控制方法,利用在裁减后标准Linux系统上加载RTLinux实时内核的实时操作系统,对RTLinux进行扩展,增加RTLinux对所需控制设备的支持,实现RTLinux中断共享。本发明的方法不改变RTLInux的原有特性,支持原有RTLinux的全部功能,兼容性好,能够进行RTLinux以及Linux系统下设备控制应用的扩展开发。
文档编号G06F9/44GK102141915SQ20101061105
公开日2011年8月3日 申请日期2010年12月29日 优先权日2010年12月29日
发明者潘小群 申请人:中国船舶重工集团公司第七研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1