首页> 中国专利> VxWorks 操作系统下CPCI总线RS422通信模块的驱动器及驱动方法

VxWorks 操作系统下CPCI总线RS422通信模块的驱动器及驱动方法

摘要

VxWorks操作系统下CPCI总线RS422通信模块的驱动器及驱动方法,涉及CPCI总线RS422通信的驱动技术领域。它是解决了现有VxWorks操作系统下CPCI总线RS422通信驱动的实现需要首先抽象出设备的数据结构,再完成设备的创建及设备驱动的安装,过程复杂导致的问题。其装置包括:用于初始化RS422通信模块的系统资源分配装置;用于提供功能函数接口的函数接口装置;用于面向用户应用程序封装,驱动函数接口的驱动装置。其方法包括:用于初始化RS422通信模块的系统资源分配步骤;用于提供功能函数接口的步骤;用于面向用户应用程序封装,驱动函数接口的驱动步骤。本发明适用于驱动RS422通信模块。

著录项

  • 公开/公告号CN103412841A

    专利类型发明专利

  • 公开/公告日2013-11-27

    原文格式PDF

  • 申请/专利权人 哈尔滨工业大学;

    申请/专利号CN201310389068.9

  • 申请日2013-08-30

  • 分类号G06F13/38(20060101);G06F13/42(20060101);

  • 代理机构23109 哈尔滨市松花江专利商标事务所;

  • 代理人张宏威

  • 地址 150001 黑龙江省哈尔滨市南岗区西大直街92号

  • 入库时间 2024-02-19 21:01:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-04-27

    授权

    授权

  • 2013-12-18

    实质审查的生效 IPC(主分类):G06F13/38 申请日:20130830

    实质审查的生效

  • 2013-11-27

    公开

    公开

说明书

技术领域

本发明涉及CPCI总线RS422通信的驱动技术领域。

背景技术

VxWorks操作系统下CPCI总线RS-422通信功能模块作为自动测试系统中重要的测 试模块,已经广泛的应用在各个领域中。传统的VxWorks操作系统下基于CPCI总线的 RS-422通信模块驱动程序开发,根据需要,实现相应的功能函数接口,并封装成标准的 I/O接口(七个标准的I/O接口,例如open(),close(),read()等),注册到系统驱动列表 中,挂接在I/O子系统下。在这个过程中,驱动开发人员需要抽象出设备的数据结构,完 成设备的创建及设备驱动程序的安装,这个过程比较复杂,给驱动开发人员带来很多不便。

发明内容

本发明是为了解决现有VxWorks操作系统下CPCI总线RS422通信驱动的实现需要 首先抽象出设备的数据结构,再完成设备的创建及设备驱动的安装,过程复杂导致的问题, 提供了一种VxWorks操作系统下CPCI总线RS422通信模块的驱动器及驱动方法。

一种VxWorks操作系统下CPCI总线RS422通信模块的驱动器,它包括:

用于初始化RS422通信模块的系统资源分配装置;

用于提供功能函数接口的函数接口装置;

用于面向用户应用程序封装,驱动函数接口的驱动装置。

所述系统资源分配装置包括:

用于获得基于CPCI总线的RS422通信模块的各个设备信息的装置;该装置包括:

根据RS422通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice() 对RS422通信模块的各个设备进行对应的初始化函数装置,

根据RS422通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出RS422 通信模块的各个设备所在的总线号BUS No.、设备号Device No.和功能号Func No.,再根 据总线号BUS No.、设备号Device No.和功能号Func No.调用pciConfigInLong()函数及 pciConfigInByte()函数的装置,

确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获 得最终的RS422通信模块板上内部寄存器基地址的装置;

用于对RS422通信模块的各个设备进行内存映射的装置;该装置包含:

使用MMU来分配PCI设备的内存空间的装置,

调用函数sysMmuMapAdd()将内存空间配置到MMU的装置;

用于对RS422通信模块的各个设备中断链接的装置;该装置包括:

在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C 程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的装置,

当中断发生时,调用指定的C程序函数,中断服务的装置。

所述函数接口装置包括:

提供初始化RS422通信模块板STATUS ComInit函数接口,并对该函数接口加载驱 动程序,初始化指定板号的通信板的装置;

提供打开RS422通信模块板STATUS ComOpen函数接口,通过该函数接口打开指 定板号的通信板的某一指定通道,并进行通道的参数设置的装置;

提供关闭RS422通信模块板STATUS ComClose函数接口,通过该函数接口关闭指 定板号的通信板,卸载通信板驱动程序,不能对RS422通信模块板进行除打开以外的操 作的装置;

提供发送数据STATUS ComSendData函数接口,通过该函数接口对RS422通信模 块板指定的一路通道写入待发送的数据的装置;

提供接收等待STATUS ComRecvWait函数接口,通过该函数接口对RS422通信模 块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的装置;

提供接收数据int ComRecvData函数接口,通过该函数接口对RS422通信模块板的 板号进行指定,并读取指定的一路通道接收缓存内的数据的装置;

提供通信板自检STATUS ComTest函数接口,通过该函数接口对指定板号的RS422 通信模块板进行自检的装置;

提供实时监测STATUS ComRTWatch函数接口,通过该函数接口对指定板号的 RS422通信模块板进行在位实时监测的装置。

一种VxWorks操作系统下CPCI总线RS422通信模块的驱动方法,它包括:

用于初始化RS422通信模块的系统资源分配步骤;

用于提供功能函数接口的步骤;

用于面向用户应用程序封装,驱动函数接口的驱动步骤。

所述系统资源分配步骤包括:

用于获得基于CPCI总线的RS422通信模块的各个设备信息的步骤;该步骤包含:

根据RS422通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice() 对RS422通信模块的各个设备进行对应的初始化函数步骤,

根据RS422通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出RS422 通信模块的各个设备所在的总线号BUS No.、设备号Device No.和功能号Func No.,再根 据总线号BUS No.、设备号Device No.和功能号Func No.调用pciConfigInLong()函数及 pciConfigInByte()函数的步骤,

确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获 得最终的RS422通信模块板上内部寄存器基地址的步骤;

用于对RS422通信模块的各个设备进行内存映射的步骤;该步骤包含:

使用MMU来分配PCI设备的内存空间的步骤,

调用函数sysMmuMapAdd()将内存空间配置到MMU的步骤;

用于对RS422通信模块的各个设备中断链接的步骤;该步骤包含:

在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C 程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的步骤,

当中断发生时,调用指定的C程序函数,中断服务的步骤。

所述用于提供功能函数接口的步骤包括:

提供打开初始化RS422通信模块板STATUS ComInit函数接口,并对该函数接口加 载驱动程序,初始化指定板号的通信板的步骤;

提供打开RS422通信模块板STATUS ComOpen函数接口,通过该函数接口打开指 定板号的通信板的某一指定通道,并进行通道的参数设置的步骤;

提供关闭RS422通信模块板STATUS ComClose函数接口,通过该函数接口关闭指 定板号的通信板,卸载通信板驱动程序,不能对RS422通信模块板进行除打开以外的操 作的步骤;

提供发送数据STATUS ComSendData函数接口,通过该函数接口对RS422通信模 块板指定的一路通道写入待发送的数据的步骤;

提供接收等待STATUS ComRecvWait函数接口,通过该函数接口对RS422通信模 块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的步骤;

提供接收数据int ComRecvData函数接口,通过该函数接口对RS422通信模块板的 板号进行指定,并读取指定的一路通道接收缓存内的数据的步骤;

提供通信板自检STATUS ComTest函数接口,通过该函数接口对指定板号的RS422 通信模块板进行自检的步骤;

提供实时监测STATUS ComRTWatch函数接口,通过该函数接口对指定板号的 RS422通信模块板进行在位实时监测的步骤。

本发明的优点:本发明所述驱动器或驱动方法针对VxWorks操作系统下CPCI总线 RS422通信功能模块,提出了新的驱动设计及封装形式,在实现对RS422通信功能模块 有效控制的同时,在大幅度降低了驱动开发人员的开发难度。

本发明根据RS422通信功能模块的特点,提供了一种新的RS422通信功能模块的驱 动接口封装形式,它面向应用程序直接定义驱动接口的形式,直接封装功能接口函数。这 样在驱动开发的过程中,不涉及到传统RS422通信功能模块的设备数据结构的设计、设 备创建及驱动安装,使RS422通信功能模块的驱动过程变得简单易实现。

本发明所述驱动器及驱动方法能够实现对RS422通信功能模块的有效控制;它直接 面向用户应用程序提供通用的驱动函数接口;具有独立性与通用性,可应用于其它设计。

附图说明

图1是本发明所述VxWorks操作系统下CPCI总线RS422通信模块的架构示意图;

图2是系统资源分配过程中的初始化函数流程图;

图3是RS422通信主要控制流程图;

图4是RS422通信板初始化流程;

图5是打开RS422通信模块板的函数接口的实现过程流程图;

图6是关闭RS422通信模块板的函数接口的实现过程流程图;

图7是RS422通信模块板发送数据的流程图;

图8是RS422通信模块板接收等待的流程图;

图9是RS422通信模块板接收数据的流程图;

图10是RS422通信模块板自检的流程图;

图11是RS422通信模块板监测的流程图。

具体实施方式

具体实施方式一:下面结合图1说明本实施方式,一种VxWorks操作系统下CPCI 总线RS422通信模块的驱动器,它包括:

用于初始化RS422通信模块的系统资源分配装置;

用于提供功能函数接口的函数接口装置;

用于面向用户应用程序封装,驱动函数接口的驱动装置。

本实施方式中RS422通信模块的整体架构如图1所示,下述解释说明同样适用于具 体实施方式四:RS-422通信功能模块运行在CPCI机箱中,控制计算机通过CPCI总线实 现对RS-422通信功能模块的读写控制。CPCI总线和RS-422通信功能电路之间需要实现 CPCI总线接口控制器,CPCI总线接口控制器采用PLX公司的PCI9054接口芯片实现, 将CPCI总线转换到本地总线。PCI9054接口芯片完全兼容PCI2.2规范,且突发数据传输 速率高,同时接口芯片价格低,通用性好,可以有效减小开发难度。PCI9054本地总线侧 使用FPGA实现总线接口译码,同时,FPGA内部设计控制寄存器,实现对RS-422通信 功能电路的控制。RS-422通信功能部分由光耦隔离芯片、RS-422驱动器、光耦隔离芯片 组成的8通道RS-422通信功能电路。外部输入的RS-422通信差分信号RXDI+,RXDI-经 过光耦隔离芯片输入到FPGA可编程逻辑芯片,从而传输到CPCI总线上。而来自CPCI 总线的发送信号,经过FPGA的译码后,通过光耦隔离芯片输出到RS-422的输出通道。

RS-422通信功能模块驱动程序设计

RS-422通信功能模块插入到CPCI机箱中运行,应用程序运行在控制计算机上,通过 CPCI总线实现对RS-422通信功能模块的控制,因此需要开发基于CPCI总线RS-422通 信功能模块的驱动程序。RS-422通信功能模块的驱动程序设计主要包括初始化设备,功 能函数接口的实现及封装。

具体实施方式二、本具体实施方式与具体实施方式一所述的一种VxWorks操作系统 下CPCI总线RS422通信模块的驱动器的区别在于,

所述系统资源分配装置包括:

用于获得基于CPCI总线的RS422通信模块的各个设备信息的装置;该装置包括:

根据RS422通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice() 对RS422通信模块的各个设备进行对应的初始化函数装置,

根据RS422通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出RS422 通信模块的各个设备所在的总线号BUS No.、设备号Device No.和功能号Func No.,再根 据总线号BUS No.、设备号Device No.和功能号Func No.调用pciConfigInLong()函数及 pciConfigInByte()函数的装置,

确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获 得最终的RS422通信模块板上内部寄存器基地址的装置;

用于对RS422通信模块的各个设备进行内存映射的装置;该装置包含:

使用MMU来分配PCI设备的内存空间的装置,

调用函数sysMmuMapAdd()将内存空间配置到MMU的装置;

用于对RS422通信模块的各个设备中断链接的装置;该装置包括:

在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C 程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的装置,

当中断发生时,调用指定的C程序函数,中断服务的装置。

下面对本实施方式的具体实现进行详细说明,下述解释说明同样适用于具体实施方式 五:

初始化设备

初始化设备作为CPCI设备驱动开发的重要环节,主要是为硬件分配系统资源,这里 主要是获取基于CPCI总线的RS-422通信功能模块的设备信息、设备内存映射及中断链 接。

1)获取基于CPCI总线的RS-422通信功能模块的设备信息

PCI设备上电后,BIOS会配置PCI设备。目标机的BIOS在启动时会有一个界面列 出找到的PCI设备及Vendor ID、Device ID、设备类型、分配的中断号等信息。

初始化函数先根据设备Vendor ID和Device ID利用函数pciFindDevice()找到对应的 设备,根据Vendor ID、Device ID和相同设备顺序号(一个系统中可能有相同的PCI设备) 来扫描总线,找出设备所在的BUS No.、Device No.和Func No.。然后根据总线号、设备 号和功能号调用pciConfigInLong()及pciConfigInByte()函数确定设备的寄存器基地址以及 中断号。再把基地址与I/O屏蔽位相与得到真正的板上内部寄存器基地址。初始化函数流 程如图2所示。

2)设备内存映射

VxWorks提供了标准的MMU(内存管理单元),用户可以使用MMU来分配PCI设 备的内存空间。在明确基地址和内存空间大小后,调用函数sysMmuMapAdd()函数即可将 内存空间配置到MMU。完成了RS422通信功能模块的设备内存映射后,可以通过对设备 内存的访问,实现对设备的控制。

3)中断链接

VxWorks操作系统中使用intConnect()链接中断服务程序(ISR),但对于CPCI设备, 一般采用pciIntConncet()挂接中断,它与intConnect()的主要不同在于intConnect()使用的 中断向量是独占的,而pciIntConncet()则可使多个外部中断共享一个中断向量。 pciIntConncet()定义在pciIntLib.c中,使用时应包含头文件pciIntLib.h。应注意ventor是 中断矢量,需要通过INUM_TO_IVEC换算获得。

在VxWorks系统下使用pciIntConnect()函数将中断和特定的C程序连接起来后,该 函数将指定的C函数与指定的中断向量相联系,函数的地址将存储在这个中断向量中。 当中断发生时,系统将调用这个特定的C程序函数,即中断服务程序。

具体实施方式三、本具体实施方式与具体实施方式一所述的一种VxWorks操作系统 下CPCI总线RS422通信模块的驱动器,其特征在于,所述函数接口装置包括:

提供初始化RS422通信模块板STATUS ComInit函数接口,并对该函数接口加载驱 动程序,初始化指定板号的通信板的装置;

提供打开RS422通信模块板STATUS ComOpen函数接口,通过该函数接口打开指 定板号的通信板的某一指定通道,并进行通道的参数设置的装置;

提供关闭RS422通信模块板STATUS ComClose函数接口,通过该函数接口关闭指 定板号的通信板,卸载通信板驱动程序,不能对RS422通信模块板进行除打开以外的操 作的装置;

提供发送数据STATUS ComSendData函数接口,通过该函数接口对RS422通信模 块板指定的一路通道写入待发送的数据的装置;

提供接收等待STATUS ComRecvWait函数接口,通过该函数接口对RS422通信模 块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的装置;

提供接收数据int ComRecvData函数接口,通过该函数接口对RS422通信模块板的 板号进行指定,并读取指定的一路通道接收缓存内的数据的装置;

提供通信板自检STATUS ComTest函数接口,通过该函数接口对指定板号的RS422 通信模块板进行自检的装置;

提供实时监测STATUS ComRTWatch函数接口,通过该函数接口对指定板号的 RS422通信模块板进行在位实时监测的装置。

下面对本实施方式的具体实现进行详细说明,下述解释说明同样适用于具体实施方式 六:

本实施方式中功能函数接口的实现:

功能函数接口的实现及封装

1)功能函数接口的实现

RS422通讯接口共8路,可实现同步模式通讯与异步模式通讯的选择,在FPGA内 实现控制寄存器,控制RS422功能电路。

在FPGA内部实现对RS422通信模块的控制,RS422模块的主要控制流程如图3所 示。

以上控制流程的实现,根据硬件设计人员提供的驱动硬件接口手册,具体操作相应的 寄存器,即可实现对功能电路的控制。

对RS422通信板的操作,常见的有板卡初始化、打开通道、关闭板卡、发送数据、 接收等待、接收数据、自检及在位实时监测操作,RS422板各个驱动接口函数的详细设计 如下:

1、通信板初始化,见表1:

表1

程序流程如图4所示:

2、打开通道,见表2

表2

程序流程如图5所示。

3、关闭通信板,见表3

表3

程序实现流程如图6所示。

4、发送数据,见表4

表4

程序实现流程如下图7所示:

5、接收等待,见表5

表5

程序流程如图8所示。

6、接收数据,见表6

表6

程序流程如图9所示。

7、通信板自检,见表7

表7

程序流程如图10所示。

8、实时监测,见表8

表8 实时监测

程序实现流程如图11所示。

2)功能函数接口的封装

根据对RS-422通信功能模块实际控制操作开发的功能函数接口,直接面向用户应用 程序封装,提供驱动接口函数。将开发的RS-422通信功能模块驱动程序直接编译到 VxWorks系统内核,用户在开发应用程序时,只需根据所要完成的具体操作,直接调用 功能函数接口,不需要进一步封装,从而降低了驱动程序开发的难度。

具体实施方式四、一种VxWorks操作系统下CPCI总线RS422通信模块的驱动方法, 其特征在于,它包括:

用于初始化RS422通信模块的系统资源分配步骤;

用于提供功能函数接口的步骤;

用于面向用户应用程序封装,驱动函数接口的驱动步骤。

具体实施方式五、本具体实施方式与具体实施方式一所述的VxWork s操作系统下 CPCI总线RS422通信模块的驱动方法的区别在于,

所述系统资源分配步骤包括:

用于获得基于CPCI总线的RS422通信模块的各个设备信息的步骤;该步骤包含:

根据RS422通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice() 对RS422通信模块的各个设备进行对应的初始化函数步骤,

根据RS422通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出RS422 通信模块的各个设备所在的总线号BUS No.、设备号Device No.和功能号Func No.,再根 据总线号BUS No.、设备号Device No.和功能号Func No.调用pciConfigInLong()函数及 pciConfigInByte()函数的步骤,

确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获 得最终的RS422通信模块板上内部寄存器基地址的步骤;

用于对RS422通信模块的各个设备进行内存映射的步骤;该步骤包含:

使用MMU来分配PCI设备的内存空间的步骤,

调用函数sysMmuMapAdd()将内存空间配置到MMU的步骤;

用于对RS422通信模块的各个设备中断链接的步骤;该步骤包含:

在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C 程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的步骤,

当中断发生时,调用指定的C程序函数,中断服务的步骤。

具体实施方式六、本具体实施方式与具体实施方式一所述的VxWork s操作系统下 CPCI总线RS422通信模块的驱动方法的区别在于,所述用于提供功能函数接口的步骤包 括:

提供打开初始化RS422通信模块板STATUS ComInit函数接口,并对该函数接口加 载驱动程序,初始化指定板号的通信板的步骤;

提供打开RS422通信模块板STATUS ComOpen函数接口,通过该函数接口打开指 定板号的通信板的某一指定通道,并进行通道的参数设置的步骤;

提供关闭RS422通信模块板STATUS ComClose函数接口,通过该函数接口关闭指 定板号的通信板,卸载通信板驱动程序,不能对RS422通信模块板进行除打开以外的操 作的步骤;

提供发送数据STATUS ComSendData函数接口,通过该函数接口对RS422通信模 块板指定的一路通道写入待发送的数据的步骤;

提供接收等待STATUS ComRecvWait函数接口,通过该函数接口对RS422通信模 块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的步骤;

提供接收数据int ComRecvData函数接口,通过该函数接口对RS422通信模块板的 板号进行指定,并读取指定的一路通道接收缓存内的数据的步骤;

提供通信板自检STATUS ComTest函数接口,通过该函数接口对指定板号的RS422 通信模块板进行自检的步骤;

提供实时监测STATUS ComRTWatch函数接口,通过该函数接口对指定板号的 RS422通信模块板进行在位实时监测的步骤。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号