CN102999381A - 一种提高VxWorks实时性的CPCI设备中断复用方法 - Google Patents
一种提高VxWorks实时性的CPCI设备中断复用方法 Download PDFInfo
- Publication number
- CN102999381A CN102999381A CN2011102665561A CN201110266556A CN102999381A CN 102999381 A CN102999381 A CN 102999381A CN 2011102665561 A CN2011102665561 A CN 2011102665561A CN 201110266556 A CN201110266556 A CN 201110266556A CN 102999381 A CN102999381 A CN 102999381A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- equipment
- function
- interruption
- vxworks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Programmable Controllers (AREA)
- Bus Control (AREA)
Abstract
本发明属于多个CPCI设备访问控制及中断复用的方法,具体涉及一种提高VxWorks实时性的CPCI设备中断复用方法。目的是提供一种高效的、可扩展的设备访问及中断复用处理的方法。包括:步骤1、对设备设置中断方式;步骤2、编写驱动;步骤3、编写设备操作函数;步骤4、编写各个设备的中断服务程序;步骤5、调用设备操作函数对设备进行操作。本发明的优点是:对于不同的设备设置不同的中断方式,并且精简传统的驱动标准的结构;传统处理方式每个设备的每次中断响应及处理需要15us左右,而抛开标准驱动格式,采用上述方式,每个设备的每次中断响应及处理仅需要5us左右,当系统复杂度更高,设备更多时,这种时间的优势便更加可以体现。
Description
技术领域
本发明是一种基于嵌入式操作系统VxWorks,为提高系统执行效率及实时性,解决多个CPCI设备访问控制及中断复用的方法,具体应用于多个CPCI设备共存的控制系统。
背景技术
VxWorks作为嵌入式实时操作系统,由于其性能高、具有很好的安全性和可靠性,已经成为事实上的工业标准和军用标准,目前应用于许多领域。随着某些控制系统功能要求的增多,单一系统中的功能接口设备数量在不断增加,处理好这些功能接口设备在一个系统中的共存问题,尤其是中断冲突问题,对于整个系统工作的稳定性、可靠性以及良好的实时性具有非常重要的意义。
目前多功能板卡的控制系统中常采用CPCI总线将各个具有独立功能的板卡进行集成,由VxWorks统一控制管理,使其在同一系统中分别实现不同的功能。VxWorks提供了对标准CPCI接口设备的支持。对每一个系统中的CPCI设备,操作系统会为其分配一个中断号,并且有可能给不同的设备分配相同的中断号。VxWorks对某一CPCI设备的访问控制,常用的方法即标准驱动方式,应用程序通过操作系统内核调用操作系统提供的标准接口模块访问设备。这种方式下,被访问控制设备大致分为三种类型:字符设备、块设备和网络设备,根据不同的设备类型设备驱动程序的管理也被划分成与设备类型对应的三种模块。VxWorks的I/O系统为用户提供了与设备无关的用户接口,应用程序通过标准接口open()、read()、write()、ioctl()访问设备控制程序。当向系统中添加设备时,操作系统会向自身的设备列表中添加新的结点,除了设备列表外,VxWorks操作系统还管理驱动程序描述表,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_MON配置各个设备的PCI9052芯片的中断控制寄存器。该步具体配置的内容根据设备自身的特点及使用方式来确定,在该控制系统中,1553B通讯设备为智能设备,自身有处理器负责处理1553B总线上的消息,并将处理后的消息放在双口RAM中,以中断方式通知操作系统取走消息。1553B板卡自身的处理器只能产生中断,无法自动清除中断,中断的清除工作必须由操作系统主动完成。开关量板卡的情况与1553B板卡类似,将这种类型的设备中断触发方式配置为电平触发。串行接口设备的特点是收到一定量的数据是会产生中断,当数据被取走后会自动清除中断,操作系统不需要做清除中断的操作,网络接口设备的情况与串行接口设备类似,这种可以自动清除中断的设备将中断触发方式配置为边沿触发方式。
步骤2:编写驱动代码,根据各个设备的VENDER ID和DEVICE ID获得操作系统为各个设备分配的资源,包括地址空间、中断号,并且以非独享的方式为各个设备设置中断服务程序入口;
不需要实现标准驱动模式所要求的众多接口函数,对标准驱动方式中使用的函数进行了精简与选择。
该功能模块操作伪代码描述如下:
找到PCI设备。在操作系统中找到已安装的设备,目前介绍的系统中
包含4块板卡,在其它应用中可根据板卡情况增加或减少
pciFindDevice(1553B_VENDER_ID,1553B_DEVICE_ID,0,&pciBus,&pciDevice,&pciFunc)
pciFindDevice(SIO_VENDER_ID,SIO_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)
pciConfigInLong(pciBus,pciDevice,pciFunc,PCI_CFG_BASE_ADDRESS_2,&membaseCsr);
pciConfigInLong(pciBus,pciDevice,pciFunc,,PCI_CFG_BASE_ADDRESS_1,&iobaseAdd);
SysMmuMapAdd((void
*)membaseCsr,0x100000,initialStateMask,initialState)
获取系统为PCI设备分配的中断号,以及设置中断。获得系统为这些设备分配的中断号;并以非独享方式挂接中断服务程序,开启中断,即利用系统提供的中断设置函数设置中断服务程序,使得系统被中断时能够调用此中断服务程序处理中断。
以下只列出对一个设备的操作,其余每个设备相同
pciConfigInByte(pciBus,pciDevice,pciFunc,PCI_CFG_DEV_INT_LINE,&irq);
pciIntConnect(INUM_TO_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设备共存且有中断复用情况时的控制访问及中断处理。
下面详细阐明本方法中的几个关键思想:操作系统对设备的直接访问、中断方式的选择与处理;
(1)操作系统对设备的直接访问:
如果按照标准的操作系统设备访问方式,每个设备至少都要实现:
①xxDrv():驱动程序安装函数
②xxDevCreate():设备创建函数
③xxOpen():打开设备函数
④xxRead()、xxWrite():设备读写函数
⑤xxIoctl():I/O控制函数
⑥xxClose():关闭设备函数
而实现完成以上函数只是完成了系统对该设备访问的初步控制,还没有涉及到设备具体功能访问控制的核心,实现具体的功能访问控制之外增加了许多工作量。而本发明所提供的方法不需要实现以上函数,直接实现设备功能相关的访问控制接口即可,设备有什么样的需要就实现什么样的函数,不必为实现该功能的调用而增加其它操作。
(2)中断方式的选择与处理
针对不同类型的设备根据其功能特点,选择不同的中断触发方式及清除方式以提高系统的实时性。
①1553B设备是智能通讯设备,自身有处理1553B总线消息的处理器,与VxWorks系统通过双口RAM交换数据,VxWorks不需要直接访问1553B总线控制芯片;这种类型的芯片中断的产生及撤消通过双方对双口RAM中固定地址单元的操作实现,因此采用电平触发方式来产生中断,当VxWorks处理完成后,直接通过写双口RAM固定地址清中断。
②串行接口通讯设备,串行接口通讯设备在数据接收过程中会随时产生中断,自身没有处理器进行控制,在数据读取完成后芯片会自动清掉芯片本身的中断状态,因此采用边沿触发的中断处理方式,操作系统在响应中断会可专心读取数据,而不会被再来数据产生的数据打断操作流程,连续的数据读取完成后,芯片自身会清除自身的中断状态。
③开关量设备与网络设备也是根据自身的特点选取不同的中断触发方式,在不丢掉任何有效信息的前提下,尽可能的减少了系统中断次数,可有效提高系统的实时性。
Claims (1)
1.一种提高VxWorks实时性的CPCI设备中断复用方法,其特征在于:包括:
步骤1、对设备设置中断方式;
对于不同的设备设置不同的中断方式的步骤,其中,设置为:
对于:采用由外部设备清除中断的处理方式的设备,采用电平触发方式来产生中断,当VxWorks完成中断处理后,由VxWorks直接通过写双口RAM固定地址清中断;
对于:采用自行清除中断的处理方式的设备,采用边沿触发的中断处理方式,操作系统在响应中断后专心处理数据,连续的数据读取完成后,芯片自身清除自身的中断状态;
步骤2、编写驱动;
对标准驱动方式中使用的函数进行精简与选择、在标准驱动方式众多需要包含和实现的函数中,选择使用以下函数:
找到PCI设备的函数;获取PCI设备地址空间的函数;获取系统为PCI设备分配的中断号函数;中断设置函数;
步骤3、编写设备操作函数;
步骤4、编写各个设备的中断服务程序;
在自行实现中断服务程序后,直接利用系统提供的中断设置函数设置中断服务程序,使得系统被中断时能够调用此中断服务程序处理中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110266556.1A CN102999381B (zh) | 2011-09-09 | 2011-09-09 | 一种提高VxWorks实时性的CPCI设备中断复用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110266556.1A CN102999381B (zh) | 2011-09-09 | 2011-09-09 | 一种提高VxWorks实时性的CPCI设备中断复用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999381A true CN102999381A (zh) | 2013-03-27 |
CN102999381B CN102999381B (zh) | 2015-03-04 |
Family
ID=47927985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110266556.1A Active CN102999381B (zh) | 2011-09-09 | 2011-09-09 | 一种提高VxWorks实时性的CPCI设备中断复用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102999381B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412841A (zh) * | 2013-08-30 | 2013-11-27 | 哈尔滨工业大学 | VxWorks 操作系统下CPCI总线RS422通信模块的驱动器及驱动方法 |
CN103412839A (zh) * | 2013-08-30 | 2013-11-27 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线北斗授时定位功能装置及其驱动方法及驱动装置 |
CN103412833A (zh) * | 2013-08-30 | 2013-11-27 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线扫描ADC功能模块驱动设备及其控制方法 |
CN104406591A (zh) * | 2014-11-26 | 2015-03-11 | 中国航天科工集团第三研究院第八三五七研究所 | Cpci嵌入式导航计算机系统及组合导航算法 |
CN113867802A (zh) * | 2021-12-03 | 2021-12-31 | 芯来科技(武汉)有限公司 | 一种中断分发装置、芯片和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216196B1 (en) * | 1999-05-14 | 2001-04-10 | Ariel Corporation | System and method for multiple device drivers to arbitrate for a single device |
CN1430144A (zh) * | 2001-12-31 | 2003-07-16 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多处理机复用外围pci设备的方法 |
CN101840306A (zh) * | 2009-03-18 | 2010-09-22 | 研祥智能科技股份有限公司 | VxWorks操作系统中实现驱动SATA设备的方法和系统 |
CN101937406A (zh) * | 2009-06-29 | 2011-01-05 | 研祥智能科技股份有限公司 | 一种VxWorks操作系统中实现驱动1394设备的方法和系统 |
-
2011
- 2011-09-09 CN CN201110266556.1A patent/CN102999381B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216196B1 (en) * | 1999-05-14 | 2001-04-10 | Ariel Corporation | System and method for multiple device drivers to arbitrate for a single device |
CN1430144A (zh) * | 2001-12-31 | 2003-07-16 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多处理机复用外围pci设备的方法 |
CN101840306A (zh) * | 2009-03-18 | 2010-09-22 | 研祥智能科技股份有限公司 | VxWorks操作系统中实现驱动SATA设备的方法和系统 |
CN101937406A (zh) * | 2009-06-29 | 2011-01-05 | 研祥智能科技股份有限公司 | 一种VxWorks操作系统中实现驱动1394设备的方法和系统 |
Non-Patent Citations (2)
Title |
---|
杨飞等: "嵌入式操作系统Vx Works下CPCI设备驱动程序开发", 《计算机测量与控制》, vol. 15, no. 05, 25 May 2007 (2007-05-25) * |
王运盛等: "VxWorks实时操作系统中的中断处理机制分析", 《电讯技术》, vol. 47, no. 04, 25 August 2007 (2007-08-25) * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412841A (zh) * | 2013-08-30 | 2013-11-27 | 哈尔滨工业大学 | VxWorks 操作系统下CPCI总线RS422通信模块的驱动器及驱动方法 |
CN103412839A (zh) * | 2013-08-30 | 2013-11-27 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线北斗授时定位功能装置及其驱动方法及驱动装置 |
CN103412833A (zh) * | 2013-08-30 | 2013-11-27 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线扫描ADC功能模块驱动设备及其控制方法 |
CN103412839B (zh) * | 2013-08-30 | 2016-01-20 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线北斗授时定位功能装置及其驱动方法及驱动装置 |
CN103412841B (zh) * | 2013-08-30 | 2016-04-27 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线RS422通信模块的驱动器及驱动方法 |
CN104406591A (zh) * | 2014-11-26 | 2015-03-11 | 中国航天科工集团第三研究院第八三五七研究所 | Cpci嵌入式导航计算机系统及组合导航算法 |
CN113867802A (zh) * | 2021-12-03 | 2021-12-31 | 芯来科技(武汉)有限公司 | 一种中断分发装置、芯片和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102999381B (zh) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999381A (zh) | 一种提高VxWorks实时性的CPCI设备中断复用方法 | |
CN110781119B (zh) | 一种i2c总线扩展接口及其控制方法、片上系统 | |
CN104021102B (zh) | 基于状态机和片内总线的cpci串口板及其工作方法 | |
CN101938164B (zh) | 一种电力设备控制方法、装置及其相关系统 | |
EP3159804A1 (en) | Chip interconnection method, chip and device | |
CN102023843B (zh) | 函数的调用方法、装置及智能卡 | |
CN109446145B (zh) | 一种服务器主板i2c通道扩展芯片、电路及控制方法 | |
CN201583943U (zh) | 音频soc芯片的高效低功耗dma的ip结构 | |
CN103106164A (zh) | 一种高效dma控制器 | |
CN117278890B (zh) | 光模块访问方法、装置、系统、电子设备及可读存储介质 | |
CN101189577B (zh) | 通过自动改变索引来访问配置寄存器的方法和装置 | |
CN108170091A (zh) | 一种plc控制器、plc控制器集群系统 | |
CN110806998B (zh) | 一种片上系统以及存储器 | |
CN101458671B (zh) | 外设访问控制方法、装置与系统 | |
CN114785745A (zh) | 一种配置设备资源的方法和交换机 | |
CN113064833A (zh) | 一种单片机仿真方法、系统、装置、设备及存储介质 | |
EP1425673B1 (en) | Method of transferring data in an electronic circuit, electronic circuit and relating device | |
CN103634237A (zh) | 微型电信计算架构机架管理控制器 | |
JP4346539B2 (ja) | 制御装置 | |
CN112463682B (zh) | 一种基于模块计算机实现多设备访问的系统和方法 | |
CN217085739U (zh) | Dma控制器及计算机终端 | |
CN102567776B (zh) | 一种可快速进行模式选择的双界面智能卡和实现方法 | |
CN105892975A (zh) | 一种kvm的管理板 | |
CN107291642A (zh) | 微控制器、控制设备和机动车辆 | |
CN205028200U (zh) | 一种智能信息控制主板 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |