VxWorks操作系统下CPCI总线数字量输入功能单元驱动程序设计方法技术方案

技术编号:9896673 阅读:244 留言:0更新日期:2014-04-09 22:47
VxWorks操作系统下CPCI总线数字量输入功能单元驱动程序设计方法,属于数字量输入功能模块驱动程序开发领域。为了解决传统的VxWorks操作系统下基于CPCI总线的数字量输入模块驱动程序开发存在驱动开发人员需要抽象出设备的数据结构,完成设备的创建及设备驱动程序的安装的复杂过程,给驱动开发人员带来了很多不便的问题。数字量输入功能模块运行CPCI机箱中,应用程序运行在控制计算机上,通过CPCI总线实现对数字量输入功能模块的控制,数字量输入功能模块的驱动程序设计主要包括初始化设备,功能函数接口的实现及封装。实现对数字量输入功能模块的控制,面向应用程序直接定义驱动接口的形式,直接封装功能接口函数。

【技术实现步骤摘要】
【专利摘要】,属于数字量输入功能模块驱动程序开发领域。为了解决传统的VxWorks操作系统下基于CPCI总线的数字量输入模块驱动程序开发存在驱动开发人员需要抽象出设备的数据结构,完成设备的创建及设备驱动程序的安装的复杂过程,给驱动开发人员带来了很多不便的问题。数字量输入功能模块运行CPCI机箱中,应用程序运行在控制计算机上,通过CPCI总线实现对数字量输入功能模块的控制,数字量输入功能模块的驱动程序设计主要包括初始化设备,功能函数接口的实现及封装。实现对数字量输入功能模块的控制,面向应用程序直接定义驱动接口的形式,直接封装功能接口函数。【专利说明】
本专利技术涉及,属于数字量输入功能模块驱动程序开发领域。
技术介绍
Vxfforks操作系统下CPCI总线数字量输入功能模块作为自动测试系统中重要的测试模块,已广泛的应用于各个领域。传统的VxWorks操作系统下基于CPCI总线的数字量输入模块驱动程序开发,是根据需要,实现相应的功能函数接口,并封装成标准的I/O接口(七个标准的I/o接口,例如open O, close O, read O等),注册到系统驱动列表中,挂接在I/O子系统下。在整个过程中,驱动开发人员需要抽象出设备的数据结构,完成设备的创建及设备驱动程序的安装,这个过程比较复杂,给驱动开发人员带来了很多不便。针对上述问题,本专利技术提出了 VxWorks操作系统下CPCI总线数字量输入模块的驱动程序设计及封装,根据对数字量输入功能模块的常见操作,提出一种新的数字量输入驱动接口封装形式,以实现对数字量输入功能模块有效控制的同时,可以大大降低驱动开发人员的开发难度。
技术实现思路
本专利技术的目的是专利技术一种VxWorks操作系统下CPCI总线数字量输入功能模块的驱动程序设计方法,以解决传统的VxWorks操作系统下基于CPCI总线的数字量输入模块驱动程序开发存在驱动开发人员需要抽象出设备的数据结构,完成设备的创建及设备驱动程序的安装的复杂过程,给驱动开发人员带来了很多不便的问题。本专利技术为解决上述技术问题采取的技术方案是:一种,所述方法的具体实现过程为:步骤一、初始化设备:初始化设备过程为硬件分配系统资源,获取基于CPCI总线的数字量输入功能模块的设备信息、设备内存映射及中断链接;步骤二、功能函数的实现及封装:功能函数接口用来实现对数字量输入功能模块的具体操作,对于数字量输入功能模块的操作主要有打开、关闭和读取功能;数字量输入功能模块的主要控制过程为:应用程序首先执行打开指定数字量输入模块板卡的操作,加载数字量输入模块的驱动程序,然后调用数字量输入采集接口,应用程序传入数字量输入模块的板号和通道号,启用相应的数字量输入通道,采集数字量输入;32路数字量输入由2个16位寄存器控制;数字量输入模块在系统上电后,完成板卡的内存映射,根据硬件的寄存器接口手册及各个驱动接口函数需完成的操作,来具体实现各个驱动接口函数,具体过程为:步骤二(I)、打开数字量输入功能单元(数字量输入板卡):(见表I)加载数字量输入驱动程序,打开指定板号的数字量输入板,以对数字量输入板进行后续操作;对数字量输入板的输出通道进行清零;函数原型为STATUS IOOpen (int num),入口参数num是板号,范围是I?N,N为控制计算机的数字量输入板数量;返回值打开成功返回0K,失败返回非零负值故障码;所述函数能识别错误的板号输入,并返回对应的故障码;IOOpen函数的实现过程如下:首先应用程序传递要打开的数字量输入板卡号,在函数体中判断板号是否正确,如果正确则将初始化函数执行后获得的数字量输入板卡内存映射基址值赋给一个全局变量,再对指定数字量输入板卡各通道清零,最后函数返回0K,如果板号参数不是用户允许的,则返回板号错误故障码。步骤二(2)、关闭数字量输入功能单元(数字量输入板):关闭指定板号的数字量输入板,卸载I/O驱动程序,完成后释放I/O板的硬件资源,不能再对I/o板进行除打开以外的其他操作;函数原型为STATUS IOClose (int num);入口参数num是板号,范围是I?N,N为控制计算机的数字量输入板数量;返回值关闭成功返回0K,失败返回非零负值故障码;所述函数能识别错误的板号输入,并返回相应的故障码;IOClose函数的实现过程如下(如图4):首先应用程序传递要关闭的指定数字量输入板卡号,在函数体中,判断传递的板号参数是否正确,如果正确,则将保存有内存基址的全局变量清零,函数返回0K,如果板卡号错误,则返回板号错误故障码。步骤二(3)、数字量输入功能单元(数字量输入板)读位操作:(见表3)指定数字量输入板的板号,读取指定一路输入通道的状态,并将结果传给char类型参数指针*pdata ;函数原型为STATUS IOReadBit (int num, int chan, char*pdata)入口参数num是板号,范围是I?N,N为控制计算机的数字量输入板数量;int chan为通道号,赋值O?M_l,M为数字量输入板的输入通道数量;char*pdata存放读数结果,取值为O或I ;返回值读取成功返回0K,失败返回非零负值故障码所述函数能识别错误的板号输入,并返回相应的故障码;IOReadBit函数的实现过程如下:(图5所示):DARevertData函数的实现过程如下:首先应用程序传递要进行数据输入的数字量输入板卡号和通道号参数,在函数体中,先判断传递的板号是否是用户允许输入的板号,如果是,再进一步判断传递的通道号是否是用户允许输入的通道号,如果是,回读指定输入通道的状态值,并保存,函数返回0K,表示用户可以从相应的通道读取指定输入通道的状态值。如果上述判断的过程出现否定,则退出函数返回相应错误故障码。步骤二(4)、数字量输入功能单元(数字量输入板)读字节操作:(见表4)指定数字量输入板的板号,以offset为偏移量地址读一个字节的数据,即8位输入通道的状态,并将结果传给char类型参数指针*pdata ;函数原型为STATUS IOReadByteQnt num, int offset, char*pdata);入口参数num是板号,范围是I?N,N为控制计算机的数字量输入板数量;Offset为偏移量,赋值O?P-1,P为数字量输入板的输入通道数量除以8 ;Pdata用于存储读取的结果,取值00?FFH ;返回值读取成功返回0K,失败返回非零负值故障码;所述函数能识别错误的板号输入,并返回对应的故障码;还能识别错误的偏移量,并返回对应的故障码;函数IOReadByte的实现过程如下:首先应用程序传递要进行数据输入的数字量输入板卡号和偏移量参数,在函数体中,先判断传递的板号是否是用户允许输入的板号,如果是,再进一步判断传递的通道号是否是用户允许输入的偏移量,如果是,回读指定8路输入通道的状态值,并保存,函数返回0K,表示用户可以从相应的通道读取指定输入通道的状态值。如果上述判断的过程出现否定,则退出函数返回相应错误故障码。步骤二(5)数字量输入功能单元(数字量输入板)读全通道操作:(见表5)指定数字量输入板的板号,读取一块板所有输入通道的状态,并将结果放在指定首地址的数据buffer中;STATU本文档来自技高网
...

【技术保护点】
一种VxWorks操作系统下CPCI总线数字量输入功能单元驱动程序设计方法,其特征在于,所述方法的具体实现过程为:步骤一、初始化设备:初始化设备过程为硬件分配系统资源,获取基于CPCI总线的数字量输入功能模块的设备信息、设备内存映射及中断链接;步骤二、功能函数的实现及封装:功能函数接口用来实现对数字量输入功能模块的具体操作,对于数字量输入功能模块的操作主要有打开、关闭和读取功能;数字量输入功能模块的主要控制过程为:应用程序首先执行打开指定数字量输入模块板卡的操作,加载数字量输入模块的驱动程序,然后调用数字量输入采集接口,应用程序传入数字量输入模块的板号和通道号,启用相应的数字量输入通道,采集数字量输入;32路数字量输入由2个16位寄存器控制;数字量输入模块在系统上电后,完成板卡的内存映射,根据硬件的寄存器接口手册及各个驱动接口函数需完成的操作,来具体实现各个驱动接口函数,具体过程为:步骤二(1)、打开数字量输入功能单元:加载数字量输入驱动程序,打开指定板号的数字量输入板,以对数字量输入板进行后续操作;对数字量输入板的输出通道进行清零;函数原型为STATUS IOOpen(int num),入口参数num是板号,范围是1~N,N为控制计算机的数字量输入板数量;返回值打开成功返回OK,失败返回非零负值故障码;所述函数能识别错误的板号输入,并返回对应的故障码;IOOpen函数的实现过程如下:首先应用程序传递要打开的数字量输入板卡号,在函数体中判断板号是否正确,如果正确则将初始化函数执行后获得的数字量输入板卡内存映射基址值赋给一个全局变量,再对指定数字量输入板卡各通道清零,最后函数返回OK,如果板号参数不是用户允许的,则返回板号错误故障码;步骤二(2)、关闭数字量输入功能单元:关闭指定板号的数字量输入板,卸载I/O驱动程序,完成后释放I/O板的硬件资源,不能再对I/O板进行除打开以外的其他操作;函数原型为STATUS IOClose(int num);入口参数num是板号,范围是1~N,N为控制计算机的数字量输入板数量;返回值关闭成功返回OK,失败返回非零负值故障码;所述函数能识别错误的板号输入,并返回相应的故障码;IOClose函数的实现过程如下:首先应用程序传递要关闭的指定数字量输入板卡号,在函数体中,判断传递的板号参数是否正确,如果正确,则将保存有内存基址的全局变量清零,函数返回OK,如果板卡号错误,则返回板号错误故障码;步骤二(3)、数字量输入功能单元读位操作:指定数字量输入板的板号,读取指定一路输入通道的状态,并将结果传给char类型参数指针*pdata;函数原型为STATUS IOReadBit(int num,int chan,char*pdata)入口参数num是板号,范围是1~N,N为控制计算机的数字量输入板数量;int chan为通道号,赋值0~M‑1,M为数字量输入板的输入通道数量;char*pdata存放读数结果,取值为0或1;返回值读取成功返回OK,失败返回非零负值故障码所述函数能识别错误的板号输入,并返回相应的故障码;IOReadBit函数的实现过程如下:DARevertData函数的实现过程如下:首先应用程序传递要进行数据输入的数字量输入板卡号和通道号参数,在函数体中,先判断传递的板号是否是用户允许输入的板号,如果是,再进一步判断传递的通道号是否是用户允许输入的通道号,如果是,回读指定输入通道的状态值,并保存,函数返回OK,表示用户可以从相应的通道读取指定输入通道的状态值;如果上述判断的过程出现否定,则退出函数返回相应错误故障码;步骤二(4)、数字量输入功能单元读字节操作:指定数字量输入板的板号,以offset为偏移量地址读一个字节的数据,即8位输入通道的状态,并将结果传给char类型参数指针*pdata;函数原型为STATUS IOReadByte(int num,int offset,char*pdata);入口参数num是板号,范围是1~N,N为控制计算机的数字量输入板数量;Offset为偏移量,赋值0~P‑1,P为数字量输入板的输入通道数量除以8;Pdata用于存储读取的结果,取值00~FFH;返回值读取成功返回OK,失败返回非零负值故障码;所述函数能识别错误的板号输入,并返回对应的故障码;还能识别错误的偏移量,并返回对应的故障码;函数IOReadByte的实现过程如下:首先应用程序传递要进行数据输入的数字量输入板卡号和偏移量参数,在函数体中,先判断传递的板号是否是用户允许输入的板号,如果是,再进一步判断传递的通道号是否是用户允许输入的偏移量,如果是,回读指定8路输入通道的状态值,并保存,函数返回OK,表示用户可以从相应的通道读取指定输入通道的状态值;如果上述判断的过程出现否定,则退出函数返回相应...

【技术特征摘要】

【专利技术属性】
技术研发人员:刘大同马云彤奚成义见其拓彭宇彭喜元
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:黑龙江;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1