一种提高VxWorks实时性的CPCI设备中断复用方法

文档序号:6565010阅读:308来源:国知局
专利名称:一种提高VxWorks实时性的CPCI设备中断复用方法
—种提高VxWorks实时性的CPCI设备中断复用方法技术领域
本发明是一种基于嵌入式操作系统VxWorks,为提高系统执行效率及实时性,解决 多个CPCI设备访问控制及中断复用的方法,具体应用于多个CPCI设备共存的控制系统。
背景技术
Vxfforks作为嵌入式实时操作系统,由于其性能高、具有很好的安全性和可靠性, 已经成为事实上的工业标准和军用标准,目前应用于许多领域。随着某些控制系统功能要 求的增多,单一系统中的功能接口设备数量在不断增加,处理好这些功能接口设备在一个 系统中的共存问题,尤其是中断冲突问题,对于整个系统工作的稳定性、可靠性以及良好的 实时性具有非常重要的意义。
目前多功能板卡的控制系统中常采用CPCI总线将各个具有独立功能的板卡进行 集成,由VxWorks统一控制管理,使其在同一系统中分别实现不同的功能。VxWorks提供了 对标准CPCI接口设备的支持。对每一个系统中的CPCI设备,操作系统会为其分配一个中 断号,并且有可能给不同的设备分配相同的中断号。VxWorks对某一 CPCI设备的访问控制, 常用的方法即标准驱动方式,应用程序通过操作系统内核调用操作系统提供的标准接口模 块访问设备。这种方式下,被访问控制设备大致分为三种类型字符设备、块设备和网络 设备,根据不同的设备类型设备驱动程序的管理也被划分成与设备类型对应的三种模块。 Vxfforks的I/O系统为用户提供了与设备无关的用户接口,应用程序通过标准接口 openO、 read O > write O、ioctl O访问设备控制程序。当向系统中添加设备时,操作系统会向自身 的设备列表中添加新的结点,除了设备列表外,Vxfforks操作系统还管理驱动程序描述表, I/O系统通过这个表存储驱动程序的各个函数的入口点。只要是在系统中安装过的驱动程 序都会在这个表中的相应的入口点。根据设备驱动的主要功能,标准接口的设备驱动程序 需要的标准函数一般包括注册、卸载函数,打开、关闭函数,读、写操作函数,设备控制函数 和中断服务函数。
目前大部分应用实现中,VxWorks对CPCI设备的控制均采用了上面提到的访问方 式。这种方法在系统中只有一个CPCI设备时是没问题的,但当系统中有多个CPCI设备时, 它的缺点及带来的问题就会暴露
1、操作系统的驱动程序描述表的大小是固定的,因此在系统的一次运行中,只能 安装有限的驱动程序,当系统中存在的设备多时,无法共同工作;
2、对于每个CPCI设备,由于必须按照系统规定实现所有需要的接口函数,因此接 口函数繁多;
3、当多个CPCI设备都需要使用中断时,系统可能会为不同设备分配相同的中断 号,对使用相同中断号的不同设备的中断复用实现复杂;
4、由于对设备的很多操作都需要回调函数,中断响应的执行效率不高,实时性效 果不理想。发明内容
本发明的目的是针对上述的VxWorks系统中多个CPCI设备共存时设备访问及中 断控制的缺点和问题,提供一种高效的、可扩展的设备访问及中断复用处理的方法,只要是 使用VxWorks操作系统,系统中共存多个CPCI设备的应用模式都可以使用。
本发明是这样实现的一种提高VxWorks实时性的CPCI设备中断复用方法,其中, 包括
步骤1、对设备设置中断方式;
对于不同的设备设置不同的中断方式的步骤,其中,设置为
对于由采用外部设备清除中断的处理方式的设备,采用电平触发方式来产生中 断,当VxWorks完成中断处理后,由VxWorks直接通过写双口 RAM固定地址清中断;
对于采用自行清除中断的处理方式的设备,采用边沿触发的中断处理方式,操 作系统在响应中断后专心处理数据,连续的数据读取完成后,芯片自身清除自身的中断状 态;
步骤2、编写驱动;
对标准驱动方式中使用的函数进行精简与选择、在标准驱动方式众多需要包含和 实现的函数中,选择使用以下函数
找到PCI设备的函数;获取PCI设备地址空间的函数;获取系统为PCI设备分配的 中断号函数;中断设置函数;
步骤3、编写设备操作函数;
步骤4、编写各个设备的中断服务程序;
在自行实现中断服务程序后,直接利用系统提供的中断设置函数设置中断服务程 序,使得系统被中断时能够调用此中断服务程序处理中断。
本发明的优点是
1、对系统中的设备数量没有限制,处理步骤也不会增加,以前常用的标准方式当 设备增加时,工作量是成倍增加的,每个设备必须完整的实现一整套符合标准接口的函数 包,而采用以上方式只需要在各个步骤中增加该设备相关的一点内容,大大减少了工作
2、系统中断复用的控制分散到各个设备的中断服务程序中实现,不会过多的增加 操作系统的负荷,提高了系统对中断的响应和处理速度,经工程中通过示波器实际测量,当 系统中的4块设备同时工作、有中断复用情况存在,并频繁产生中断时,传统处理方式每个 设备的每次中断响应及处理需要15us左右,而抛开标准驱动格式,采用上述方式,每个设 备的每次中断响应及处理仅需要5us左右,当系统复杂度更高,设备更多时,这种时间的优 势便更加可以体现;
5、实时性良好,对不同设备采取设置不同的中断触发方式及中断清除方式,充分 发挥设备的特性,提高了统实时性。
本发明通过一个实际应用环境的实现,说明给出不同类型设备采用的访问控制、 中断触发方式、中断清除方式,在以后的实际应用环境中可快速解决VxWorks系统中多 CPCI设备共存且有中断复用情况时的控制访问及中断处理。
具体实施方式
下面结合具体实施例对本发明做进一步的说明
某控制设备采用VxWorks操作系统,系统中包含4种CPCI接口的设备。分别实现 1553B通讯、串行接口通讯、开关量控制以及网络数据交换功能,各个设备均需使用中断,中 断号由操作系统分配,有设备中断复用情况。与CPCI总线连接使用PCI9052控制芯片。
具体的设备控制访问及中断处理方法实现包括如下
步骤1:首先通过硬件配置工具PLX_M0N配置各个设备的PCI9052芯片的中断控 制寄存器。该步具体配置的内容根据设备自身的特点及使用方式来确定,在该控制系统中, 1553B通讯设备为智能设备,自身有处理器负责处理1553B总线上的消息,并将处理后的消 息放在双口 RAM中,以中断方式通知操作系统取走消息。1553B板卡自身的处理器只能产 生中断,无法自动清除中断,中断的清除工作必须由操作系统主动完成。开关量板卡的情况 与1553B板卡类似,将这种类型的设备中断触发方式配置为电平触发。串行接口设备的特 点是收到一定量的数据是会产生中断,当数据被取走后会自动清除中断,操作系统不需要 做清除中断的操作,网络接口设备的情况与串行接口设备类似,这种可以自动清除中断的 设备将中断触发方式配置为边沿触发方式。
步骤2 :编写驱动代码,根据各个设备的VENDER ID和DEVICE ID获得操作系统为 各个设备分配的资源,包括地址空间、中断号,并且以非独享的方式为各个设备设置中断服 务程序入口;
不需要实现标准驱动模式所要求的众多接口函数,对标准驱动方式中使用的函数 进行了精简与选择。
该功能模块操作伪代码描述如下
>找到PCI设备。在操作系统中找到已安装的设备,目前介绍的系统中
包含4块板卡,在其它应用中可根据板卡情况增加或减少
pciFindDevice(1553B_VENDER_ID,1553B_DEVICE_ID,O, &pciBus, &pciDevice, &pciFunc)
pciFindDevice(SI0_VENDER_ID, SI0_DEVICE_ID,0, &pciBus, &pciDevice, &pciFunc)
pciFindDevice(NET_VENDER_ID, NET_DEVICE_ID,0, &pciBus, &pciDevice, &pciFunc)
pciFindDevice(KGL_VENDER_ID, KGL_DEVICE_ID,0, &pciBus, &pciDevice, &pciFunc)
>获取PCI设备地址空间。获得系统为这些设备分配的地址空间,包括MEMORY地 址空间和I/O空间,将MEMORY空间加入系统地址映射,以下只列出一个对一个设备的操作, 其余每个设备相同
pciConf iglnLong (pciBus, pciDevice, pciFunc, PCI_CFG_BASE_ADDRESS_2, &membaseCsr);
pciConfiglnLong(pciBus, pciDevice, pciFunc,, PCI_CFG_BASE_ADDRESS_1, &iobaseAdd);
SysMmuMapAdd((void
*)membaseCsr,0x100000, initialStateMask, initialState)
>获取系统为PCI设备分配的中断号,以及设置中断。获得系统为这些设备分配的 中断号;并以非独享方式挂接中断服务程序,开启中断,即利用系统提供的中断设置函数设 置中断服务程序,使得系统被中断时能够调用此中断服务程序处理中断。
以下只列出对一个设备的操作,其余每个设备相同
pciConf iglnByte (pciBus, pciDevice, pciFunc, PCI_CFG_DEV_INT_LINE, &irq);
pcilntConnect(INUM_T0_IVEC(((int)irq)+INT_NUM_IRQ0), Process_Int,0) sysIntEnablePIC(irq);
本例中,Process_Int,表示下述步骤中实现的对于上述的一个设备的中断服务程 序,本实施例中,首先对设备的中断服务程序命名,并进行设置,中断服务程序中具体的代 码在下述步骤中实现;当然,也可以首先按照下述步骤实现中断服务程序中具体的代码,然 后进行此处所述的设置过程。
步骤3 :根据系统分配的地址空间,实现设备访问功能模块,以普通函数的方式, 只实现将来应用系统中要使用的与设备紧密相关的操作即可,不需要套用标准驱动方式, 不必实现标准访问方式下规定的繁多访问接口;
步骤4 :实现各个设备的中断服务程序
> 1553B设备中断服务程序
①1553B设备的中断触发方式为电平触发方式,设备自身无法清除中断。中断服 务程序中包括以下内容
②根据系统分配给1553B设备的基地址,加0x4C为PCI9052中断控制寄存器在系 统的地址,通过该地址获取中断控制寄存器的值。
③判断中断状态标志位是否有效,若有效表明是1553B设备的中断而不是其它设 备的中断,因为在中断复用的情况下,中断号相同的设备产生中断后,在中断未清除前,所 有中断服务程序都会被执行一遍。执行中断处理,通过写双口 RAM,清除1553B设备中断输 出信号,不需要清中断控制寄存器中相应的状态位。
开关量设备的中断服务处理与1553B板卡类似,都是由系统清除硬件设备的中断 输出信号,而不必清除PCI9052的中断状态标志。
>串行通讯设备的中断服务程序
串行通讯设备的特点是,当接收到一定数量的数据后,会产生中断,当这些数据被 读走后,设备自动可以将中断状态清除掉,对这种类型的设备,中断服务程序中前两步与 1553B设备相同,第③步处理有别于1553B和开关量类型的设备,当中断处理完成后,清除 PCI9052中断控制寄存器的中断状态位。
网络通讯设备的中断处理方式与串行接口设备的处理方式相同。
中断服务程序执行过程中可以根据需要调用设备操作函数,此过程为公知的技 术。
在以上4个步骤中,实现了系统对设备的访问控制及中断处理的元素。操作系统 在中断到来时,调用上述中断服务程序,完成对设备的操作,快速解决VxWorks系统中多 CPCI设备共存且有中断复用情况时的控制访问及中断处理。
下面详细阐明本方法中的几个关键思想操作系统对设备的直接访问、中断方式的选择与处理;
(I)操作系统对设备的直接访问
如果按照标准的操作系统设备访问方式,每个设备至少都要实现
①xxDrv O :驱动程序安装函数
②xxDevCreate O :设备创建函数
③xxOpenO :打开设备函数
④xxRead()、xxWrite ():设备读写函数
⑤xxIoctlO :1/0控制函数
⑥xxCloseO :关闭设备函数
而实现完成以上函数只是完成了系统对该设备访问的初步控制,还没有涉及到设备具体功能访问控制的核心,实现具体的功能访问控制之外增加了许多工作量。而本发明 所提供的方法不需要实现以上函数,直接实现设备功能相关的访问控制接口即可,设备有 什么样的需要就实现什么样的函数,不必为实现该功能的调用而增加其它操作。
(2)中断方式的选择与处理
针对不同类型的设备根据其功能特点,选择不同的中断触发方式及清除方式以提 高系统的实时性。
①1553B设备是智能通讯设备,自身有处理1553B总线消息的处理器,与VxWorks 系统通过双口 RAM交换数据,VxWorks不需要直接访问1553B总线控制芯片;这种类型的芯 片中断的产生及撤消通过双方对双口 RAM中固定地址单元的操作实现,因此采用电平触发 方式来产生中断,当VxWorks处理完成后,直接通过写双口 RAM固定地址清中断。
②串行接口通讯设备,串行接口通讯设备在数据接收过程中会随时产生中断,自 身没有处理器进行控制,在数据读取完成后芯片会自动清掉芯片本身的中断状态,因此采 用边沿触发的中断处理方式,操作系统在响应中断会可专心读取数据,而不会被再来数据 产生的数据打断操作流程,连续的数据读取完成后,芯片自身会清除自身的中断状态。
③开关量设备与网络设备也是根据自身的特点选取不同的中断触发方式,在不丢 掉任何有效信息的前提下,尽可能的减少了系统中断次数,可有效提高系统的实时性。
权利要求
1.一种提高VxWorks实时性的CPCI设备中断复用方法,其特征在于包括 步骤1、对设备设置中断方式; 对于不同的设备设置不同的中断方式的步骤,其中,设置为 对于采用由外部设备清除中断的处理方式的设备,采用电平触发方式来产生中断,当Vxfforks完成中断处理后,由VxWorks直接通过写双口 RAM固定地址清中断; 对于采用自行清除中断的处理方式的设备,采用边沿触发的中断处理方式,操作系统在响应中断后专心处理数据,连续的数据读取完成后,芯片自身清除自身的中断状态; 步骤2、编与驱动; 对标准驱动方式中使用的函数进行精简与选择、在标准驱动方式众多需要包含和实现的函数中,选择使用以下函数 找到PCI设备的函数;获取PCI设备地址空间的函数;获取系统为PCI设备分配的中断号函数;中断设置函数; 步骤3、编写设备操作函数; 步骤4、编写各个设备的中断服务程序; 在自行实现中断服务程序后,直接利用系统提供的中断设置函数设置中断服务程序,使得系统被中断时能够调用此中断服务程序处理中断。
全文摘要
本发明属于多个CPCI设备访问控制及中断复用的方法,具体涉及一种提高VxWorks实时性的CPCI设备中断复用方法。目的是提供一种高效的、可扩展的设备访问及中断复用处理的方法。包括步骤1、对设备设置中断方式;步骤2、编写驱动;步骤3、编写设备操作函数;步骤4、编写各个设备的中断服务程序;步骤5、调用设备操作函数对设备进行操作。本发明的优点是对于不同的设备设置不同的中断方式,并且精简传统的驱动标准的结构;传统处理方式每个设备的每次中断响应及处理需要15us左右,而抛开标准驱动格式,采用上述方式,每个设备的每次中断响应及处理仅需要5us左右,当系统复杂度更高,设备更多时,这种时间的优势便更加可以体现。
文档编号G06F9/48GK102999381SQ20111026655
公开日2013年3月27日 申请日期2011年9月9日 优先权日2011年9月9日
发明者牛俊慧, 张典国, 鞠锋 申请人:中国航天科工集团第三研究院第八三五七研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1