CN103309830A - VxWorks操作***下CPCI总线CAN通信模块的驱动器及驱动方法 - Google Patents
VxWorks操作***下CPCI总线CAN通信模块的驱动器及驱动方法 Download PDFInfo
- 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
Links
Images
Landscapes
- Small-Scale Networks (AREA)
Abstract
VxWorks操作***下CPCI总线CAN通信模块的驱动器及驱动方法,属于CPCI总线CAN通信的驱动技术领域。本发明为了解决现有VxWorks操作***下CPCI总线CAN通信驱动的实现需要首先抽象出设备的数据结构,再完成设备的创建及设备驱动的安装,过程复杂的问题。驱动器包括用于初始化CAN通信模块的***资源分配装置;用于提供功能函数接口的函数接口装置;用于面向用户应用程序封装,驱动函数接口的驱动装置;驱动方法包括用于初始化CAN通信模块的***资源分配步骤;用于提供功能函数接口的步骤;用于面向用户应用程序封装,驱动函数接口的驱动步骤。本发明用于CAN通信模块的驱动。
Description
技术领域
本发明涉及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
打开CAN板的实现流程如下图4所示。
2、关闭CAN板,见表2:
表2
关闭CAN板的实现流程如图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所示。
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通信模块板进行在位实时监测的步骤。
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)
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)
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设备的方法和*** |
-
2013
- 2013-07-08 CN CN201310284602XA patent/CN103309830A/zh active Pending
Patent Citations (2)
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)
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)
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总线的多路通信*** | |
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功能模块驱动设备及其控制方法 | |
CN102147840B (zh) | 一种通过虚拟机实现网络控制的方法 | |
CN113485953A (zh) | 多核嵌入式***及其基于串口虚拟化实现通信的方法 | |
CN103678244A (zh) | 一种不使用应用处理器的智能设备 | |
CN103713908A (zh) | VxWorks操作***下CPCI总线数字量输入功能单元驱动程序设计方法 | |
CN213876359U (zh) | 一种硬件仿真加速器i/o扩展装置 | |
CN201749350U (zh) | 小型plc的人机界面装置 | |
CN111679995B (zh) | 一种基于1553b总线的空间计算机嵌入式管理执行单元 | |
CN107992297A (zh) | 一种针对s3c2440的spi控制器驱动实现方法 | |
CN203838541U (zh) | Fpga装置、嵌入式控制***及医疗设备控制*** |
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 |