CN103309830A - VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法 - Google Patents

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

Info

Publication number
CN103309830A
CN103309830A CN201310284602XA CN201310284602A CN103309830A CN 103309830 A CN103309830 A CN 103309830A CN 201310284602X A CN201310284602X A CN 201310284602XA CN 201310284602 A CN201310284602 A CN 201310284602A CN 103309830 A CN103309830 A CN 103309830A
Authority
CN
China
Prior art keywords
communication module
function
function interface
equipment
interface
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.)
Pending
Application number
CN201310284602XA
Other languages
English (en)
Inventor
马云彤
罗清华
奚成义
周学安
彭喜元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN201310284602XA priority Critical patent/CN103309830A/zh
Publication of CN103309830A publication Critical patent/CN103309830A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Small-Scale Networks (AREA)

Abstract

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

Description

VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法
技术领域
本发明涉及VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法,属于CPCI总线CAN通信的驱动技术领域。
背景技术
VxWorks操作系统下CPCI总线CAN通信功能模块作为自动测试系统中重要的测试模块,已经广泛的应用在各个领域中。传统的VxWorks操作系统下基于CPCI总线的CAN通信模块驱动程序的开发,是根据需要来实现相应的功能函数接口,并封装成标准的I/O接口,即七个标准的I/O接口,例如open(),close(),read()等,注册到系统驱动列表中,挂接在I/O子系统下。在这个过程中,驱动开发人员需要抽象出设备的数据结构,完成设备的创建及设备驱动程序的安装,这个过程比较复杂,给驱动开发人员带来很多不便。
发明内容
本发明是为了解决现有VxWorks操作系统下CPCI总线CAN通信驱动的实现需要首先抽象出设备的数据结构,再完成设备的创建及设备驱动的安装,过程复杂的问题,提供了一种VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法。
本发明所述VxWorks操作系统下CPCI总线CAN通信模块的驱动器,它包括:
用于初始化CAN通信模块的系统资源分配装置;
用于提供功能函数接口的函数接口装置;
用于面向用户应用程序封装,驱动函数接口的驱动装置。
所述系统资源分配装置包括:
用于获得基于CPCI总线的CAN通信模块的各个设备信息的装置;该装置包含:
根据CAN通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice()对CAN通信模块的各个设备进行对应的初始化函数装置,
根据CAN通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出CAN通信模块的各个设备所在的总线号BUS No、设备号Device No和功能号Func No,再根据总线号BUS No、设备号Device No和功能号Func No调用pciConfigInLong()函数及pciConfigInByte()函数的装置,
确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获得最终的CAN通信模块板上内部寄存器基地址的装置;
用于对CAN通信模块的各个设备进行内存映射的装置;该装置包含:
使用MMU来分配PCI设备的内存空间的装置,
调用函数sysMmuMapAdd()将内存空间配置到MMU的装置;
用于对CAN通信模块的各个设备中断链接的装置;该装置包含:
在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的装置,
当中断发生时,调用指定的C程序函数,中断服务的装置。
所述函数接口装置包括:
提供打开CAN通信模块板STATUS CANOpen函数接口,并对该函数接口加载驱动程序,打开指定的CAN通信通道的装置;
提供关闭CAN通信模块板STATUS CANClose函数接口,通过该函数接口不能对CAN通信模块板进行除打开以外的操作的装置;
提供设置通道参数STATUS CANSetting函数接口,通过该函数接口对CAN通信模块板指定通道进行参数设置的装置;
提供发送数据STATUS CANSendData函数接口,通过该函数接口对CAN通信模块板指定的一路通道写入待发送的数据的装置;同时在发送多帧数据消息时,循环调用该函数接口的装置;
提供接收等待STATUS CANRecvWait函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的装置;
提供接收数据int CANRecvData函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并读取指定的一路通道接收缓存内的数据的装置;
提供通信板自检STATUS CANTest函数接口,通过该函数接口对CAN通信模块板进行自检的装置;
提供通信板复位STATUS CANReset函数接口,通过该函数接口对CAN通信模块板进行复位操作的装置;
提供实时监测STATUS CANRTWatch函数接口,通过该函数接口对CAN通信模块板进行在位实时监测的装置。
一种VxWorks操作系统下CPCI总线CAN通信模块的驱动方法,它包括:
用于初始化CAN通信模块的系统资源分配步骤;
用于提供功能函数接口的步骤;
用于面向用户应用程序封装,驱动函数接口的驱动步骤。
所述系统资源分配步骤包括:
用于获得基于CPCI总线的CAN通信模块的各个设备信息的步骤;该步骤包含:
根据CAN通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice()对CAN通信模块的各个设备进行对应的初始化函数步骤,
根据CAN通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出CAN通信模块的各个设备所在的总线号BUS No、设备号Device No和功能号Func No,再根据总线号BUS No、设备号Device No和功能号Func No调用pciConfigInLong()函数及pciConfigInByte()函数的步骤,
确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获得最终的CAN通信模块板上内部寄存器基地址的步骤;
用于对CAN通信模块的各个设备进行内存映射的步骤;该步骤包含:
使用MMU来分配PCI设备的内存空间的步骤,
调用函数sysMmuMapAdd()将内存空间配置到MMU的步骤;
用于对CAN通信模块的各个设备中断链接的步骤;该步骤包含:
在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的步骤,
当中断发生时,调用指定的C程序函数,中断服务的步骤。
所述用于提供功能函数接口的步骤包括:
提供打开CAN通信模块板STATUS CANOpen函数接口,并对该函数接口加载驱动程序,打开指定的CAN通信通道的步骤;
提供关闭CAN通信模块板STATUS CANClose函数接口,通过该函数接口不能对CAN通信模块板进行除打开以外的操作的步骤;
提供设置通道参数STATUS CANSetting函数接口,通过该函数接口对CAN通信模块板指定通道进行参数设置的步骤;
提供发送数据STATUS CANSendData函数接口,通过该函数接口对CAN通信模块板指定的一路通道写入待发送的数据的步骤;同时在发送多帧数据消息时,循环调用该函数接口的步骤;
提供接收等待STATUS CANRecvWait函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的步骤;
提供接收数据int CANRecvData函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并读取指定的一路通道接收缓存内的数据的步骤;
提供通信板自检STATUS CANTest函数接口,通过该函数接口对CAN通信模块板进行自检的步骤;
提供通信板复位STATUS CANReset函数接口,通过该函数接口对CAN通信模块板进行复位操作的步骤;
提供实时监测STATUS CANRTWatch函数接口,通过该函数接口对CAN通信模块板进行在位实时监测的步骤。
本发明的优点:本发明所述驱动器或驱动方法针对VxWorks操作系统下CPCI总线CAN通信功能模块,提出了新的驱动设计及封装形式,在实现对CAN通信功能模块有效控制的同时,在很大程序上降低了驱动开发人员的开发难度。
本发明根据CAN通信功能模块的特点,提供了一种新的CAN通信功能模块的驱动接口封装形式,它面向应用程序直接定义驱动接口的形式,直接封装功能接口函数。这样在驱动开发的过程中,不涉及到传统CAN通信功能模块的设备数据结构的设计、设备创建及驱动安装,使CAN通信功能模块的驱动过程变得简单易实现。
本发明所述驱动器及驱动方法能够实现对CAN通信功能模块的有效控制;它直接面向用户应用程序提供通用的驱动函数接口;具有独立性与通用性,可应用于其它设计。
附图说明
图1是本发明所述VxWorks操作系统下CPCI总线CAN通信模块的架构示意图;
图2是系统资源分配过程中的初始化函数流程图;
图3是功能函数接口的控制过程流程图;
图4是打开CAN通信模块板的函数接口的实现过程流程图;
图5是关闭CAN通信模块板的函数接口的实现过程流程图;
图6是设置通道参数STATUS CANSetting函数接口的实现过程流程图;
图7是发送数据函数接口的实现过程流程图;
图8是接收等待函数接口的实现过程流程图;
图9是接收数据函数接口的实现过程流程图;
图10是通信板自检函数接口的实现过程流程图;
图11是通信板复位函数接口的实现过程流程图;
图12是在位实时监测函数接口的实现过程流程图。
具体实施方式
具体实施方式一:下面结合图1至图3说明本实施方式,本实施方式所述VxWorks操作系统下CPCI总线CAN通信模块的驱动器,它包括:
用于初始化CAN通信模块的系统资源分配装置;
用于提供功能函数接口的函数接口装置;
用于面向用户应用程序封装,驱动函数接口的驱动装置。
本实施方式中CAN通信模块的整体架构如图1所示,下述解释说明同样适用于具体实施方式四:CAN通信模块运行在CPCI机箱中,控制计算机通过CPCI总线实现对CAN通信功能模块的读写控制。CPCI总线和CAN通信功能电路之间需要实现CPCI总线接口控制器,CPCI总线接口控制器采用PLX公司的PCI9054接口芯片实现,将CPCI总线转换到本地总线。PCI9054接口芯片完全兼容PCI2.2规范,且突发数据传输速率高,同时接口芯片价格低,通用性好,可以有效减小开发难度。PCI9054本地总线侧使用FPGA实现总线接口译码,同时,FPGA内部设计控制寄存器,实现对CAN通信功能电路的控制。CAN通信功能部分由CAN控制器SJA1000T、隔离芯片6N137、CAN接口芯片SN65HVD1050和隔离电源DCP02055P构成。外部输入的CAN通信信号经过CAN接口芯片后,输入到光耦隔离芯片6N137,然后经过CAN控制器后,输入到FPGA可编程逻辑芯片,从而传输到CPCI总线上。而来自CPCI总线的发送信号,经过FPGA处理后,通过CAN控制器、光耦隔离芯片6N137和CAN接口芯片,输出到CAN的输出通道。
CAN通信功能模块驱动器的设计:
CAN通信功能模块运行在CPCI机箱中,运行在控制计算机上的应用程序,通过CPCI总线实现对CAN通信功能模块的控制,因此需要开发基于CPCI总线CAN通信功能模块的驱动器。CAN通信功能模块的驱动器设计主要包括初始化设备,功能函数接口的实现及封装。
具体实施方式二:下面结合图2说明本实施方式,本实施方式对实施方式一作进一步说明,本实施方式所述系统资源分配装置包括:
用于获得基于CPCI总线的CAN通信模块的各个设备信息的装置;该装置包含:
根据CAN通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice()对CAN通信模块的各个设备进行对应的初始化函数装置,
根据CAN通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出CAN通信模块的各个设备所在的总线号BUS No、设备号Device No和功能号Func No,再根据总线号BUS No、设备号Device No和功能号Func No调用pciConfigInLong()函数及pciConfigInByte()函数的装置,
确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获得最终的CAN通信模块板上内部寄存器基地址的装置;
用于对CAN通信模块的各个设备进行内存映射的装置;该装置包含:
使用MMU来分配PCI设备的内存空间的装置,
调用函数sysMmuMapAdd()将内存空间配置到MMU的装置;
用于对CAN通信模块的各个设备中断链接的装置;该装置包含:
在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的装置,
当中断发生时,调用指定的C程序函数,中断服务的装置。
本实施方式中,Vendor ID表示设备的厂商号,Device ID表示设备号,函数pciFindDevice()用于扫描CPCI总线上的设备,pciConfigInLong()函数用于读取CAN通信模块的配置空间,pciConfigInByte()函数用于读取CAN通信模块的配置空间,函数sysMmuMapAdd()用于完成CAN通信模块的设备内存映射,pciIntConnect()函数用于完成CAN通信模块的中断连接。
下面对本实施方式的具体实现进行详细说明,下述解释说明同样适用于具体实施方式五:
初始化设备作为CPCI设备驱动开发的重要环节,主要是为硬件分配系统资源,这里主要是获取基于CPCI总线的CAN通信功能模块的设备信息、设备内存映射及中断链接,如图2所示。
1)获取基于CPCI总线的CAN通信功能模块的设备信息:
PCI设备上电后,BIOS会配置PCI设备。目标机的BIOS在启动时会有一个界面列出找到的PCI设备及Vendor ID、Device ID、设备类型、分配的中断号等信息。
初始化函数先根据设备Vendor ID和Device ID利用函数pciFindDevice()找到对应的设备,根据Vendor ID、Device ID和相同设备顺序号来扫描总线,找出设备所在的BUS No、Device No和Func No。然后根据总线号、设备号和功能号调用pciConfigInLong()及pciConfigInByte()函数确定设备的寄存器基地址以及中断号。再把基地址与I/O屏蔽位相与得到真正的板上内部寄存器基地址。初始化函数流程如下图2所示。
2)设备内存映射:
VxWorks提供了标准的MMU,即内存管理单元,用户可以使用MMU来分配PCI设备的内存空间。在明确基地址和内存空间大小后,调用函数sysMmuMapAdd()函数即可将内存空间配置到MMU。完成了CAN通信功能模块的设备内存映射后,可以通过对设备内存的访问,实现对设备的控制。
3)中断链接:
VxWorks操作系统中使用intConnect()链接中断服务程序ISR,但对于CPCI设备,一般采用pciIntConncet()挂接中断,它与intConnect()的主要不同在于intConnect()使用的中断向量是独占的,而pciIntConncet()则可使多个外部中断共享一个中断向量。pciIntConncet()定义在pciIntLib.c中,使用时应包含头文件pciIntLib.h。应注意ventor是中断矢量,需要通过INUM_TO_IVEC换算获得。
在VxWorks系统下使用pciIntConnect()函数将中断向量和特定的C程序函数连接起来后,函数的地址将存储在这个中断向量中。当中断发生时,系统将调用这个特定的C程序函数,即中断服务程序。
具体实施方式三:下面结合图3至图12说明本实施方式,本实施方式对实施方式二作进一步说明,本实施方式所述函数接口装置包括:
提供打开CAN通信模块板STATUS CANOpen函数接口,并对该函数接口加载驱动程序,打开指定的CAN通信通道的装置;
提供关闭CAN通信模块板STATUS CANClose函数接口,通过该函数接口不能对CAN通信模块板进行除打开以外的操作的装置;
提供设置通道参数STATUS CANSetting函数接口,通过该函数接口对CAN通信模块板指定通道进行参数设置的装置;
提供发送数据STATUS CANSendData函数接口,通过该函数接口对CAN通信模块板指定的一路通道写入待发送的数据的装置;同时在发送多帧数据消息时,循环调用该函数接口的装置;
提供接收等待STATUS CANRecvWait函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的装置;
提供接收数据int CANRecvData函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并读取指定的一路通道接收缓存内的数据的装置;
提供通信板自检STATUS CANTest函数接口,通过该函数接口对CAN通信模块板进行自检的装置;
提供通信板复位STATUS CANReset函数接口,通过该函数接口对CAN通信模块板进行复位操作的装置;
提供实时监测STATUS CANRTWatch函数接口,通过该函数接口对CAN通信模块板进行在位实时监测的装置。
下面对本实施方式的具体实现进行详细说明,下述解释说明同样适用于具体实施方式六:
本实施方式中功能函数接口的实现:
CAN总线功能电路部分主要完成4路CAN总线接口,CAN总线通信的主要控制过程如下图3所示。根据硬件设计人员提供的驱动硬件接口寄存器手册,操作具体的寄存器来实现主要控制过程。
对于CAN通信功能模块的操作,常见的主要有打开、关闭、发送数据、接收等待、接收数据、自检、复位及在位实时监测操作。CAN通信模块板各个驱动接口函数的详细设计如下:
1、打开CAN板,见表1:
表1
Figure BDA00003478254600081
打开CAN板的实现流程如下图4所示。
2、关闭CAN板,见表2:
表2
Figure BDA00003478254600091
关闭CAN板的实现流程如图5所示。
3、设置通道参数,见表3:
表3
Figure BDA00003478254600092
设置通道参数的实现流程如图6所示。
4、发送数据,见表4:
表4
Figure BDA00003478254600093
Figure BDA00003478254600101
实现发送数据的流程如图7所示。
5、接收等待,见表5
表5
实现接收等待的流程如图8所示。
6、接收数据,见表6:
表6
Figure BDA00003478254600103
Figure BDA00003478254600111
实现接收数据的流程如图9所示。
7、通信板自检,见表7:
表7
通信板自检的实现流程如图10所示。
8、通信板复位,见表8:
表8
Figure BDA00003478254600113
通信板复位的流程如图11所示。
9、实时监测,见表9:
表9
实时监测的实现流程如图12所示。
功能函数接口的封装:
根据对CAN通信功能模块实际控制操作开发的功能函数接口,直接面向用户应用程序封装,提供驱动接口函数。将开发的CAN通信功能模块驱动程序直接编译到VxWorks系统内核,用户在开发应用程序时,只需根据所要完成的具体操作,直接调用功能函数接口,不需要进一步封装,从而降低了驱动程序开发的难度。
具体实施方式四:下面结合图1至图3说明本实施方式,本实施方式所述VxWorks操作系统下CPCI总线CAN通信模块的驱动方法,它包括:
用于初始化CAN通信模块的系统资源分配步骤;
用于提供功能函数接口的步骤;
用于面向用户应用程序封装,驱动函数接口的驱动步骤。
具体实施方式五:下面结合图2说明本实施方式,本实施方式对实施方式四作进一步说明,本实施方式所述系统资源分配步骤包括:
用于获得基于CPCI总线的CAN通信模块的各个设备信息的步骤;该步骤包含:
根据CAN通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice()对CAN通信模块的各个设备进行对应的初始化函数步骤,
根据CAN通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出CAN通信模块的各个设备所在的总线号BUS No、设备号Device No和功能号Func No,再根据总线号BUS No、设备号Device No和功能号Func No调用pciConfigInLong()函数及pciConfigInByte()函数的步骤,
确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获得最终的CAN通信模块板上内部寄存器基地址的步骤;
用于对CAN通信模块的各个设备进行内存映射的步骤;该步骤包含:
使用MMU来分配PCI设备的内存空间的步骤,
调用函数sysMmuMapAdd()将内存空间配置到MMU的步骤;
用于对CAN通信模块的各个设备中断链接的步骤;该步骤包含:
在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的步骤,
当中断发生时,调用指定的C程序函数,中断服务的步骤。
本实施方式中,Vendor ID表示设备的厂商号,Device ID表示设备号,函数pciFindDevice()用于扫描CPCI总线上的设备,pciConfigInLong()函数用于读取CAN通信模块的配置空间,pciConfigInByte()函数用于读取CAN通信模块的配置空间,函数sysMmuMapAdd()用于完成CAN通信模块的设备内存映射,pciIntConnect()函数用于完成CAN通信模块的中断连接。
具体实施方式六:下面结合图3至图12说明本实施方式,本实施方式对实施方式五进一步说明,本实施方式所述用于提供功能函数接口的步骤包括:
提供打开CAN通信模块板STATUS CANOpen函数接口,并对该函数接口加载驱动程序,打开指定的CAN通信通道的步骤;
提供关闭CAN通信模块板STATUS CANClose函数接口,通过该函数接口不能对CAN通信模块板进行除打开以外的操作的步骤;
提供设置通道参数STATUS CANSetting函数接口,通过该函数接口对CAN通信模块板指定通道进行参数设置的步骤;
提供发送数据STATUS CANSendData函数接口,通过该函数接口对CAN通信模块板指定的一路通道写入待发送的数据的步骤;同时在发送多帧数据消息时,循环调用该函数接口的步骤;
提供接收等待STATUS CANRecvWait函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的步骤;
提供接收数据int CANRecvData函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并读取指定的一路通道接收缓存内的数据的步骤;
提供通信板自检STATUS CANTest函数接口,通过该函数接口对CAN通信模块板进行自检的步骤;
提供通信板复位STATUS CANReset函数接口,通过该函数接口对CAN通信模块板进行复位操作的步骤;
提供实时监测STATUS CANRTWatch函数接口,通过该函数接口对CAN通信模块板进行在位实时监测的步骤。

Claims (6)

1.一种VxWorks操作系统下CPCI总线CAN通信模块的驱动器,其特征在于,它包括:
用于初始化CAN通信模块的系统资源分配装置;
用于提供功能函数接口的函数接口装置;
用于面向用户应用程序封装,驱动函数接口的驱动装置。
2.根据权利要求1所述的VxWork s操作系统下CPCI总线CAN通信模块的驱动器,其特征在于,
所述系统资源分配装置包括:
用于获得基于CPCI总线的CAN通信模块的各个设备信息的装置;该装置包含:
根据CAN通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice()对CAN通信模块的各个设备进行对应的初始化函数装置,
根据CAN通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出CAN通信模块的各个设备所在的总线号BUS No、设备号Device No和功能号Func No,再根据总线号BUS No、设备号Device No和功能号Func No调用pciConfigInLong()函数及pciConfigInByte()函数的装置,
确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获得最终的CAN通信模块板上内部寄存器基地址的装置;
用于对CAN通信模块的各个设备进行内存映射的装置;该装置包含:
使用MMU来分配PCI设备的内存空间的装置,
调用函数sysMmuMapAdd()将内存空间配置到MMU的装置;
用于对CAN通信模块的各个设备中断链接的装置;该装置包含:
在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的装置,
当中断发生时,调用指定的C程序函数,中断服务的装置。
3.根据权利要求2所述的VxWorks操作系统下CPCI总线CAN通信模块的驱动器,其特征在于,所述函数接口装置包括:
提供打开CAN通信模块板STATUS CANOpen函数接口,并对该函数接口加载驱动程序,打开指定的CAN通信通道的装置;
提供关闭CAN通信模块板STATUS CANClose函数接口,通过该函数接口不能对CAN通信模块板进行除打开以外的操作的装置;
提供设置通道参数STATUS CANSetting函数接口,通过该函数接口对CAN通信模块板指定通道进行参数设置的装置;
提供发送数据STATUS CANSendData函数接口,通过该函数接口对CAN通信模块板指定的一路通道写入待发送的数据的装置;同时在发送多帧数据消息时,循环调用该函数接口的装置;
提供接收等待STATUS CANRecvWait函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的装置;
提供接收数据int CANRecvData函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并读取指定的一路通道接收缓存内的数据的装置;
提供通信板自检STATUS CANTest函数接口,通过该函数接口对CAN通信模块板进行自检的装置;
提供通信板复位STATUS CANReset函数接口,通过该函数接口对CAN通信模块板进行复位操作的装置;
提供实时监测STATUS CANRTWatch函数接口,通过该函数接口对CAN通信模块板进行在位实时监测的装置。
4.一种VxWorks操作系统下CPCI总线CAN通信模块的驱动方法,其特征在于,它包括:
用于初始化CAN通信模块的系统资源分配步骤;
用于提供功能函数接口的步骤;
用于面向用户应用程序封装,驱动函数接口的驱动步骤。
5.根据权利要求4所述的VxWork s操作系统下CPCI总线CAN通信模块的驱动方法,其特征在于,
所述系统资源分配步骤包括:
用于获得基于CPCI总线的CAN通信模块的各个设备信息的步骤;该步骤包含:
根据CAN通信模块的各个设备的Vendor ID和Device ID,利用函数pciFindDevice()对CAN通信模块的各个设备进行对应的初始化函数步骤,
根据CAN通信模块的各个设备Vendor ID、Device ID和顺序号扫描总线,找出CAN通信模块的各个设备所在的总线号BUS No、设备号Device No和功能号Func No,再根据总线号BUS No、设备号Device No和功能号Func No调用pciConfigInLong()函数及pciConfigInByte()函数的步骤,
确定各个设备的寄存器基地址以及中断号,再将寄存器基地址与I/O屏蔽位相与,获得最终的CAN通信模块板上内部寄存器基地址的步骤;
用于对CAN通信模块的各个设备进行内存映射的步骤;该步骤包含:
使用MMU来分配PCI设备的内存空间的步骤,
调用函数sysMmuMapAdd()将内存空间配置到MMU的步骤;
用于对CAN通信模块的各个设备中断链接的步骤;该步骤包含:
在VxWorks系统下使用pciIntConnect()函数将各个设备指定的中断向量与指定的C程序函数连接起来,并将pciIntConnect()函数的地址存储在该指定的中断向量中的步骤,
当中断发生时,调用指定的C程序函数,中断服务的步骤。
6.根据权利要求5所述的VxWorks操作系统下CPCI总线CAN通信模块的驱动方法,其特征在于,所述用于提供功能函数接口的步骤包括:
提供打开CAN通信模块板STATUS CANOpen函数接口,并对该函数接口加载驱动程序,打开指定的CAN通信通道的步骤;
提供关闭CAN通信模块板STATUS CANClose函数接口,通过该函数接口不能对CAN通信模块板进行除打开以外的操作的步骤;
提供设置通道参数STATUS CANSetting函数接口,通过该函数接口对CAN通信模块板指定通道进行参数设置的步骤;
提供发送数据STATUS CANSendData函数接口,通过该函数接口对CAN通信模块板指定的一路通道写入待发送的数据的步骤;同时在发送多帧数据消息时,循环调用该函数接口的步骤;
提供接收等待STATUS CANRecvWait函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并等待指定的一路通道接收缓存内的数据就绪的步骤;
提供接收数据int CANRecvData函数接口,通过该函数接口对CAN通信模块板的板号进行指定,并读取指定的一路通道接收缓存内的数据的步骤;
提供通信板自检STATUS CANTest函数接口,通过该函数接口对CAN通信模块板进行自检的步骤;
提供通信板复位STATUS CANReset函数接口,通过该函数接口对CAN通信模块板进行复位操作的步骤;
提供实时监测STATUS CANRTWatch函数接口,通过该函数接口对CAN通信模块板进行在位实时监测的步骤。
CN201310284602XA 2013-07-08 2013-07-08 VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法 Pending CN103309830A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310284602XA CN103309830A (zh) 2013-07-08 2013-07-08 VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310284602XA CN103309830A (zh) 2013-07-08 2013-07-08 VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法

Publications (1)

Publication Number Publication Date
CN103309830A true CN103309830A (zh) 2013-09-18

Family

ID=49135073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310284602XA Pending CN103309830A (zh) 2013-07-08 2013-07-08 VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法

Country Status (1)

Country Link
CN (1) CN103309830A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677856A (zh) * 2014-01-07 2014-03-26 哈尔滨工业大学 VxWorks操作系统下CPCI总线开关量输出功能单元驱动程序设计方法
CN103744805A (zh) * 2014-01-03 2014-04-23 哈尔滨工业大学 VxWorks下CPCI总线开关量与模拟量输出模块硬件架构与时序可配置驱动方法
CN103761199A (zh) * 2014-01-03 2014-04-30 哈尔滨工业大学 VxWorks下CPCI总线数字量与模拟量输入模块硬件架构与时序可配置驱动方法
CN104503792A (zh) * 2014-12-22 2015-04-08 山东超越数控电子有限公司 一种在VxWorks中实现设备管理功能的方法
CN109213546A (zh) * 2017-06-30 2019-01-15 武汉斗鱼网络科技有限公司 用于windows客户端程序的登录处理方法和装置
CN109522056A (zh) * 2018-11-14 2019-03-26 天津津航计算技术研究所 VxWorks系统下大容量存储设备的主机控制器驱动实现方法
CN110109849A (zh) * 2019-04-30 2019-08-09 湖北三江航天万峰科技发展有限公司 一种基于pci总线的can设备驱动装置及方法
CN111737180A (zh) * 2020-06-08 2020-10-02 湖北三江航天万峰科技发展有限公司 一种基于pci总线的串口驱动系统
CN111858445A (zh) * 2020-07-09 2020-10-30 天津津航计算技术研究所 vxworks系统下基于双口RAM通信的CAN总线驱动设计方法
CN111858446A (zh) * 2020-07-09 2020-10-30 天津津航计算技术研究所 Windows系统下基于双口RAM通信的CAN总线通信模块设计方法
CN111858444A (zh) * 2020-07-09 2020-10-30 天津津航计算技术研究所 Windows系统下基于双口RAM通信的CAN总线驱动设计方法
CN113886127A (zh) * 2021-10-18 2022-01-04 常州新途软件有限公司 一种基于python的主机总线诊断方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324044B1 (en) * 1998-05-05 2001-11-27 Texas Instruments Incorporated Driver for controller area network
CN101840306A (zh) * 2009-03-18 2010-09-22 研祥智能科技股份有限公司 VxWorks操作系统中实现驱动SATA设备的方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324044B1 (en) * 1998-05-05 2001-11-27 Texas Instruments Incorporated Driver for controller area network
CN101840306A (zh) * 2009-03-18 2010-09-22 研祥智能科技股份有限公司 VxWorks操作系统中实现驱动SATA设备的方法和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
朱欣华等: "基于PCI总线的CAN接口卡及其VxWorks环境下驱动程序的设计", 《电子器件》, vol. 29, no. 4, 31 December 2006 (2006-12-31), pages 1275 - 1279 *
胡明民: "基于实时操作系统Vxworks的驱动程序开发", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 31 March 2013 (2013-03-31), pages 59 - 63 *
黄霜: "基于cPCI总线的CAN总线通信模块的设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 30 June 2012 (2012-06-30), pages 35 - 37 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744805A (zh) * 2014-01-03 2014-04-23 哈尔滨工业大学 VxWorks下CPCI总线开关量与模拟量输出模块硬件架构与时序可配置驱动方法
CN103761199A (zh) * 2014-01-03 2014-04-30 哈尔滨工业大学 VxWorks下CPCI总线数字量与模拟量输入模块硬件架构与时序可配置驱动方法
CN103744805B (zh) * 2014-01-03 2016-04-27 哈尔滨工业大学 VxWorks下CPCI总线开关量与模拟量输出模块硬件架构与时序可配置驱动方法
CN103677856A (zh) * 2014-01-07 2014-03-26 哈尔滨工业大学 VxWorks操作系统下CPCI总线开关量输出功能单元驱动程序设计方法
CN104503792A (zh) * 2014-12-22 2015-04-08 山东超越数控电子有限公司 一种在VxWorks中实现设备管理功能的方法
CN109213546B (zh) * 2017-06-30 2021-09-07 武汉斗鱼网络科技有限公司 用于windows客户端程序的登录处理方法和装置
CN109213546A (zh) * 2017-06-30 2019-01-15 武汉斗鱼网络科技有限公司 用于windows客户端程序的登录处理方法和装置
CN109522056A (zh) * 2018-11-14 2019-03-26 天津津航计算技术研究所 VxWorks系统下大容量存储设备的主机控制器驱动实现方法
CN109522056B (zh) * 2018-11-14 2021-11-16 天津津航计算技术研究所 VxWorks系统下大容量存储设备的主机控制器驱动实现方法
CN110109849A (zh) * 2019-04-30 2019-08-09 湖北三江航天万峰科技发展有限公司 一种基于pci总线的can设备驱动装置及方法
CN111737180A (zh) * 2020-06-08 2020-10-02 湖北三江航天万峰科技发展有限公司 一种基于pci总线的串口驱动系统
CN111858445A (zh) * 2020-07-09 2020-10-30 天津津航计算技术研究所 vxworks系统下基于双口RAM通信的CAN总线驱动设计方法
CN111858446A (zh) * 2020-07-09 2020-10-30 天津津航计算技术研究所 Windows系统下基于双口RAM通信的CAN总线通信模块设计方法
CN111858444A (zh) * 2020-07-09 2020-10-30 天津津航计算技术研究所 Windows系统下基于双口RAM通信的CAN总线驱动设计方法
CN113886127A (zh) * 2021-10-18 2022-01-04 常州新途软件有限公司 一种基于python的主机总线诊断方法

Similar Documents

Publication Publication Date Title
CN103309830A (zh) VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法
CN103412841B (zh) VxWorks操作系统下CPCI总线RS422通信模块的驱动器及驱动方法
CN111666242B (zh) 一种基于飞腾平台lpc总线的多路通信系统
CN108228513B (zh) 一种基于fpga架构的智能串口通讯装置
US7835897B2 (en) Apparatus and method for connecting hardware to a circuit simulation
CN103150279B (zh) 一种主机与基板管理控制器共享设备的方法
CN101626351A (zh) 多协议数据采集网关
CN201294545Y (zh) 多协议数据采集网关
CN106648896B (zh) 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法
CN105681145A (zh) 一种基于FPGA的FlexRay通信模块
CN103678238A (zh) 一种LXI-PXI\PXIe适配系统
CN110532140B (zh) 一种1553b总线的仿真测试系统
CN107943732A (zh) 一种基于国产化fpga器件实现1553b总线模块
CN101876825A (zh) 小型plc的人机界面装置
CN103677855A (zh) 一种VxWorks操作系统下CPCI总线DAC功能单元驱动程序设计方法
CN103514074A (zh) Mvb网卡开发方法及平台
CN103412833A (zh) VxWorks操作系统下CPCI总线扫描ADC功能模块驱动设备及其控制方法
CN113485953A (zh) 多核嵌入式系统及其基于串口虚拟化实现通信的方法
CN103678244A (zh) 一种不使用应用处理器的智能设备
CN103713908A (zh) VxWorks操作系统下CPCI总线数字量输入功能单元驱动程序设计方法
CN201749350U (zh) 小型plc的人机界面装置
CN111679995B (zh) 一种基于1553b总线的空间计算机嵌入式管理执行单元
CN107992297A (zh) 一种针对s3c2440的spi控制器驱动实现方法
CN203838541U (zh) Fpga装置、嵌入式控制系统及医疗设备控制系统
CN103412840B (zh) VxWorks操作系统下CPCI总线GPS授时定位功能装置及其驱动方法及驱动装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130918