法律状态公告日
法律状态信息
法律状态
2016-08-10
授权
授权
2013-12-18
实质审查的生效 IPC(主分类):G06F13/38 申请日:20130830
实质审查的生效
2013-11-27
公开
公开
技术领域
本发明涉及一种驱动方法,特别涉及一种VxWorks操作系统下CPCI总线GPS授时定 位功能装置及其驱动方法及驱动装置。
背景技术
VxWorks操作系统下CPCI总线GPS授时定位功能模块作为自动测试系统中重要的测 试模块,已经广泛的应用在各个领域中。传统的VxWorks操作系统下基于CPCI总线的GPS 授时定位模块驱动程序开发,根据需要,实现相应的功能函数接口,并封装成标准的I/O 接口(七个标准的I/O接口,例如open(),close(),read()等),注册到系统驱动列 表中,挂接在I/O子系统下。在这个过程中,驱动开发人员需要抽象出设备的数据结构, 完成设备的创建及设备驱动程序的安装,这个过程比较复杂,给驱动开发人员带来很多不 便。
发明内容
本发明的目的是为了解决传统的VxWorks操作系统下基于CPCI总线的GPS授时定位模块 驱动程序在保证有效控制的同时开发难度很大的问题,本发明提供一种VxWorks操作系统下 CPCI总线GPS授时定位功能装置及其驱动方法及驱动装置。
本发明的VxWorks操作系统下CPCI总线GPS授时定位功能装置,
它包括多个GPS授时定位模块、FPGA本地总线、PCI9054接口芯片和CPCI总线;
PCI9054接口芯片与CPCI总线的接口连接,
PCI9054接口芯片还与FPGA本地总线进行数据通讯,
FPGA本地总线的读写控制信号输入输出端同时与多个GPS授时定位模块的读写控制 信号输入输出端连接。
VxWorks操作系统下CPCI总线GPS授时定位功能装置的驱动方法,它包括如下步骤:
获取基于CPCI总线GPS授时定位功能装置的设备信息的步骤;
根据PCI设备的基地址和内存空间的大小调用sysMmuMapAdd()函数将所述内存空间 配置到VxWorks操作系统的内存管理单元的步骤;
使用VxWorks操作系统中的pciIntConnect()函数链接中断服务程序的步骤;
当接收到打开GPS授时定位模块的命令时,执行打开GPS授时定位模块的步骤;
当接收到关闭GPS授时定位模块的命令时,执行关闭GPS授时定位模块的步骤;
当接收到读取GPS授时定位模块的命令时,执行读取GPS授时定位模块数据的步骤;
当接收到GPS授时定位模块进行实时监测的命令时,执行GPS授时定位模块实时监测 的步骤。
所述的VxWorks操作系统下CPCI总线GPS授时定位功能装置的驱动装置,它包括:
获取基于CPCI总线GPS授时定位功能装置的设备信息的装置;
根据PCI设备的基地址和内存空间的大小调用sysMmuMapAdd()函数将所述内存空 间配置到VxWorks操作系统的内存管理单元的装置;
使用VxWorks操作系统中的pciIntConnect()函数链接中断服务程序的装置;
当接收到打开GPS授时定位模块的命令时,执行打开GPS授时定位模块的装置;
当接收到关闭GPS授时定位模块的命令时,执行关闭GPS授时定位模块的装置;
当接收到读取GPS授时定位模块的命令时,执行读取GPS授时定位模块数据的装置;
当接收到GPS授时定位模块进行实时监测的命令时,执行GPS授时定位模块实时监 测的装置。本发明的优点在于,
1)、本发明的驱动方法和驱动装置能够实现对功能模块的有效控制;
2)、本发明的驱动方法的程序直接面向用户应用程序提供通用的驱动函数接口;
3)、本发明的驱动方法的程序设计及封装大大降低驱动开发的难度;
4)、本发明的驱动方法的程序设计及封装具有独立性与通用性,可应用于其它设计。
附图说明
图1为本发明所述的VxWorks操作系统下CPCI总线GPS授时定位功能装置的原理示 意图。
图2为对本发明的GPS授时定位模块的控制过程的原理示意图。
图3为具体实施方式三所述的打开GPS授时定位模块的原理示意图。
图4为具体实施方式四所述的关闭GPS授时定位模块的原理示意图。
图5为具体实施方式五所述的读取GPS授时定位模块数据的原理示意图。
图6为具体实施方式六所述的GPS授时定位模块实时监测的原理示意图。
具体实施方式
具体实施方式一:结合图1说明本实施方式,本实施方式所述的VxWorks操作系统下 CPCI总线GPS授时定位功能装置,
它包括多个GPS授时定位模块、FPGA本地总线、PCI9054接口芯片和CPCI总线;
PCI9054接口芯片与CPCI总线的接口连接,
PCI9054接口芯片还与FPGA本地总线进行数据通讯,
FPGA本地总线的读写控制信号输入输出端同时与多个GPS授时定位模块的读写控制 信号输入输出端连接。
本实施方式所述的GPS授时定位功能装置运行在CPCI机箱中,控制计算机通过CPCI 总线实现对GPS授时定位模块的读写控制。CPCI总线和GPS授时定位模块之间需要实 现CPCI总线接口控制器,所述CPCI总线接口控制器采用PLX公司的PCI9054接口芯片 实现,将CPCI总线转换到本地总线。PCI9054接口芯片完全兼容PCI2.2规范,且突发数 据传输速率高,同时接口芯片价格低,通用性好,可以有效减小开发难度。PCI9054本地 总线侧使用FPGA本地总线实现总线接口译码,同时,FPGA内部设计控制寄存器,实现 对GPS授时定位模块的控制。
GPS授时定位功能装置运行在CPCI机箱中,其应用程序运行在控制计算机上, 通过CPCI总线实现对GPS授时定位功能模块的控制,因此需要开发基于CPCI总线GPS 授时定位功能模块的驱动程序。GPS授时定位功能模块的驱动程序设计主要包括初始化 设备,功能函数接口的实现及封装。
具体实施方式二:本实施方式是具体实施方式一所述的VxWorks操作系统下CPCI总 线GPS授时定位功能装置的驱动方法,
它包括如下步骤:
获取基于CPCI总线GPS授时定位功能装置的设备信息的步骤;
根据PCI设备的基地址和内存空间的大小调用sysMmuMapAdd()函数将所述内存空间 配置到VxWorks操作系统的内存管理单元的步骤;
使用VxWorks操作系统中的pciIntConnect()函数链接中断服务程序的步骤;
当接收到打开GPS授时定位模块的命令时,执行打开GPS授时定位模块的步骤;
当接收到关闭GPS授时定位模块的命令时,执行关闭GPS授时定位模块的步骤;
当接收到读取GPS授时定位模块的命令时,执行读取GPS授时定位模块数据的步骤;
当接收到GPS授时定位模块进行实时监测的命令时,执行GPS授时定位模块实时监测 的步骤。
初始化设备作为CPCI设备驱动开发的重要环节,主要是为硬件分配系统资源,本实 施方式中主要是获取基于CPCI总线的GPS授时定位功能装置的设备信息、设备内存映 射及中断链接。
获取基于CPCI总线GPS授时定位功能装置的设备信息的步骤包括如下方法:
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屏蔽位相与得到真正的板上内部寄存器基地址。
根据PCI设备的基地址和内存空间的大小调用sysMmuMapAdd()函数将所述内存空间 配置到VxWorks操作系统的内存管理单元的方法为:
VxWorks提供了标准的MMU(内存管理单元),用户可以使用MMU来分配PCI设 备的内存空间。在明确基地址和内存空间大小后,调用函数sysMmuMapAdd()函数即可将 内存空间配置到MMU。完成了GPS授时定位功能模块的设备内存映射后,可以通过对 设备内存的访问,实现对设备的控制。
VxWorks操作系统中使用intConnect()链接中断服务程序(ISR),但对于CPCI设备, 一般采用pciIntConncet()挂接中断,它与intConnect()的主要不同在于intConnect()使用的 中断向量是独占的,而pciIntConncet()则可使多个外部中断共享一个中断向量。 pciIntConncet()定义在pciIntLib.c中,使用时应包含头文件pciIntLib.h。应注意ventor是 中断矢量,需要通过INUM_TO_IVEC换算获得。
在VxWorks系统下使用pciIntConnect()函数将中断和特定的C程序连接起来后,该 函数将指定的C函数与指定的中断向量相联系,函数的地址将存储在这个中断向量中。 当中断发生时,系统将调用这个特定的C程序函数,即中断服务程序。
GPS授时定位模块提供定位信号(经度、纬度)、时间信息(年月日时分秒),FPGA 本地总线对GPS授时定位模块的主要控制过程如下图2所示:
根据提供的驱动硬件接口寄存器手册,操作具体的寄存器来实现以上对功能模块的控 制过程。同时,对GPS授时定位模块的操作,常见的主要有打开、关闭、读数据及在位 实时监测操作。
具体实施方式三:结合图3说明本实施方式,本实施方式是具体实施方式二所述的 VxWorks操作系统下CPCI总线GPS授时定位功能装置的驱动方法的进一步限定,
所述打开GPS授时定位模块的步骤包括如下步骤:
获取所需打开的GPS授时定位模块的编号和通道号的步骤;
当输入的GPS授时定位模块的编号在设定的GPS授时定位模块编号范围内时,将所述 GPS授时定位模块的内存映射基地址值赋给全局变量,输出字符“OK”的步骤;
当输入的GPS授时定位模块的编号不在设定的GPS授时定位模块编号范围内时,输出 编号错误的非零负值故障码的步骤。打开GPS授时定位模块的函数,见表1:
表1打开GPS授时定位模块函数
具体实施方式四:结合图4说明本实施方式,本实施方式是具体实施方式二所述的 VxWorks操作系统下CPCI总线GPS授时定位功能装置的驱动方法的进一步限定,关闭GPS 授时定位模块的步骤包括如下步骤:
获取所需关闭的GPS授时定位模块的编号的步骤;
当输入的GPS授时定位模块的编号在设定的GPS授时定位模块编号范围内时,将保存 有所述GPS授时定位模块的内存映射基地址值的全局变量清零,输出字符“OK”的步骤;
当输入的GPS授时定位模块的编号与获取的GPS授时定位模块的编号不同时,输出编 号错误的非零负值故障码的步骤。
关闭GPS授时定位模块的函数,见表2
表2关闭GPS授时定位模块函数
具体实施方式五:结合图5说明本实施方式,本实施方式是具体实施方式二所述的 VxWorks操作系统下CPCI总线GPS授时定位功能装置的驱动方法的进一步限定,读取GPS 授时定位模块数据的步骤包括如下步骤:
获取所需读取数据的GPS授时定位模块的编号和通道号的步骤;
当输入的GPS授时定位模块的编号在设定的GPS授时定位模块编号范围内时,且当输 入的GPS授时定位模块的通道号在设定的GPS授时定位模块的通道号范围内时,读取GPS 授时定位模块接收的数据的步骤;
当输入的GPS授时定位模块的编号在设定的GPS授时定位模块编号范围内时,且当输 入的GPS授时定位模块的通道号不在设定的GPS授时定位模块的通道号范围内时,输出通 道号错误的非零负值故障码的步骤;
当输入的GPS授时定位模块的编号与获取的GPS授时定位模块的编号不同时,输出编 号错误的非零负值故障码的步骤;
当读取的GPS授时定位模块接收的数据有效,保存所述数据,并输出字符“OK”的步 骤;
当读取的GPS授时定位模块接收的数据无效时,输出数据无效的非零负值故障码的步 骤。
GPS读数据的函数,见表3
表3GPS授时定位模块读数据的函数
具体实施方式六:结合图6说明本实施方式,本实施方式是具体实施方式二所述的 VxWorks操作系统下CPCI总线GPS授时定位功能装置的驱动方法的进一步限定,GPS授时 定位模块实时监测的步骤包括如下步骤:
获取所需实时监测的GPS授时定位模块的编号的步骤;
当输入的GPS授时定位模块的编号在设定的GPS授时定位模块编号范围内时,调用 PciFindDevice()函数的步骤;
当输入的GPS授时定位模块的编号不在在设定的GPS授时定位模块编号范围内时,输 出编号错误的非零负值故障码的步骤;
当PciFindDevice()函数的返回值为字符“OK”时,输出字符“OK”的步骤;
当PciFindDevice()函数的返回值不是字符“OK”时,输出字符“ERROR”的步骤。
GPS授时定位模块实时监测的函数,见表4:
表4GPS授时定位模块实时监测函数
根据对GPS授时定位模块实际控制操作开发的功能函数接口,直接面向用户应用程 序封装,提供驱动接口函数。将开发的GPS授时定位功能装置的驱动方法的程序直接编译 到VxWorks系统内核,用户在开发应用程序时,只需根据所要完成的具体操作,直接调 用功能函数接口,不需要进一步封装,从而降低了驱动程序开发的难度。
本实施方式是具体实施方式一所述的VxWorks操作系统下CPCI总线GPS授时定位功 能装置的驱动装置,它包括:
获取基于CPCI总线GPS授时定位功能装置的设备信息的装置;
根据PCI设备的基地址和内存空间的大小调用sysMmuMapAdd()函数将所述内存空 间配置到VxWorks操作系统的内存管理单元的装置;
使用VxWorks操作系统中的pciIntConnect()函数链接中断服务程序的装置;
当接收到打开GPS授时定位模块的命令时,执行打开GPS授时定位模块的装置;
当接收到关闭GPS授时定位模块的命令时,执行关闭GPS授时定位模块的装置;
当接收到读取GPS授时定位模块的命令时,执行读取GPS授时定位模块数据的装置;
当接收到GPS授时定位模块进行实时监测的命令时,执行GPS授时定位模块实时监 测的装置。
机译: 液晶显示装置,驱动装置,显示控制装置以及在具有驱动期间和驱动停止期间的人的可听频带以上的频率下进行驱动的方法
机译: 一种用于衣物护理的家用电器中的皮带驱动装置皮带故障的检测方法,涉及在皮带驱动装置皮带的功能状态下通过驱动马达驱动洗涤滚筒
机译: 对于安全装置,该安全装置在进给操作的情况下,尤其是在由内燃机驱动的轨道车辆的情况下,将消除驱动发动机和驱动轮之间的力传递的干扰。