一种PCI运动控制卡驱动的开发方法技术

技术编号:19592833 阅读:30 留言:0更新日期:2018-11-28 04:42
本发明专利技术公开了一种PCI运动控制卡驱动的开发方法。该方法为:使用微软的Microsoft Driver Foundation(WDF)驱动模型,在驱动初始化阶段,识别运动控制卡的硬件资源,获取PCI总线数据通信地址;在WDF驱动的事件响应模块内,注册读写事件,根据事件类型和通信地址,进行数据的读写;根据不同的卡类型,通过随机码和卡号的组合,注册特定的全局唯一标识符(GUID)以区分不同的运动控制卡,并供电脑识别;应用软件通过调用微软的标准驱动通信接口DeviecIoControl,发送数据读写事件至驱动以实现和驱动的交互。使用该方法制作的驱动,集识别和通信与一体,安装更简单,并且相对于传统的WDM式驱动开发,代码更简洁、高效。

【技术实现步骤摘要】
一种PCI运动控制卡驱动的开发方法
本专利技术涉及计算机和自动化控制领域,更具体的,涉及一种基于PCI总线型运动控制卡的驱动开发方法。
技术介绍
在现代化工业制造中,设备自动化一直是其中重要的环节,为满足机械设备的自动化加工,基于PC机的各种高性能运动控制卡应运而生,支持PCI总线的运动控制卡,也得到了越来越广泛的应用。PCI总线是个人电脑中常用的物理总线,因其具有可扩展性强、速度快等特点,已经成为PC机和外围设备通信的重要方式。工控机通过PCI总线传递控制指令到运动控制卡,控制卡执行相应的动作,同时将信息通过PCI总线反馈至工控机,已经成为了PC自动化控制的常用手段。因此,开发适合运动控制卡使用的PCI驱动,显得尤为重要。目前常见的控制卡PCI驱动开发方法有通过微软的WDM工具开发的,因其开发步骤繁琐,开发周期较长,在新的WINDOWS系统中已经被微软放弃。还有直接使用第三方工具开发驱动的,例如使用Jungo公司的Windriver工具进行开发,该方法首先加载第三方的PCI驱动程序,在驱动的开发、安装和使用过程中都非常繁琐。在PCI驱动在驱动识别方法上,目前基本是通过唯一的GUID进行识别的,导致不同的运动控制卡的驱动程序代码也大不相同,兼容性不强。尤其在使用Windriver工具的时候,因为该工具为了兼容大部分的PCI驱动程序,对底层驱动代码进行了封装,导致在开发驱动的过程中,不能直接对硬件进行操作,需要使用该工具提供的接口对硬件进行操作,这进一步限制了开发人员的的自由度,同时该工具价格昂贵,而且有时间限制,因此,开发具有自主知识产权的驱动程序,对于运动控制卡设备商,尤为重要。同时,由于WINDOWS操作系统不断升级,目前已经出现了新老系统共用的局面,这更需要运动控制卡制造商开发兼容性强的PCI驱动,以兼容不同的操作系统,因此,使用微软提供的WDF驱动开发工具,做到一套代码适配常用的操作系统,显得更为必要和迫切。
技术实现思路
本专利技术的目的是提供一种PCI运动控制卡驱动的开发方法,以克服上述不足,从而提高运动控制卡驱动的开发效率、使用便捷性和兼容性。本专利技术实例提供一种PCI运动控制卡驱动的开发方法,具体步骤包括:安装微软最新的WDF开发环境,编写基础WDF驱动代码框架;在WDF的初始化阶段,在EvtDevicePrepareHardware回调函数内,编写驱动程序硬件初始化代码;自定义两个IOCTL控制代码,在WDF驱动的事件响应EvtIoDeviceControl回调函数内,编写识别控制代码的程序,能够识别控制命令并响应;随机生成GUID号码,并将该号码的后半部分修改为控制卡的类型并注册该号码,该号码不仅能够用来区分不同设备的驱动,还能够根据后半部分的号码,扫描识别工控机中所有的同类的运动控制卡。编写驱动程序接口,当驱动程序正确加载,通过GUID号码,搜索该驱动程序并打开设备,同时可以使用DeviceIoControl接口和IOCTL控制代码,与驱动程序进行通信;编写该驱动程序的设备安装文件(INF文件),能够通过WINDOWS的设备管理器进行识别安装;使用上述方法开发的驱动程序及其配套的接口,相比使用第三方工具,有以下优点:开发者不需要考虑到第三方工具的版本,也不需要为第三方工具付费,即可开发具有自主知识产权的驱动程序代码,并且能够对PCI总线进行自由控制。开发的驱动具有极强的兼容性,能够一套代码兼容XP、VISTA、WIN7和WIN10等系统,能够同时识别、打开和控制多种不同种类的运动控制卡,极大的扩大了控制卡的应用范围,简化了开发流程,提高了开发效率。附图说明图1为本专利技术的开发流程图。具体实施方式为了提高基于PCI运动控制卡驱动的开发效率,提升驱动的兼容性,从而提高用户使用体验,本专利技术提供了一种控制卡驱动的制作方法,利用该方法制作的PCI控制卡驱动,不需要使用第三方工具,既可以做到一套代码兼容主流操作系统,并且能够区分不同的卡类型和卡数量,满足一台工控机上安装识别多个控制卡并同时使用。如附图1所示,本专利技术实施例中,PCI控制卡驱动的详细开发流程如下:步骤101:编写标准的WDF驱动框架,包括驱动入口函数、硬件初始化回调函数、事件处理回调函数;步骤102:在硬件初始化函数,编写控制卡硬件识别代码,并识别控制卡资源,如果为IO资源,保存资源地址和长度,该地址将作为基地址,将在数据传输时使用。如果没有找到合适的资源,返回错误供计算机进行错误提示;步骤103:自定义IOCTL_PCI_READPORT和IOCTL_PCI_WRITEPORT(也可以是其他类似操作码),在事件处理回调函数使用,若接收到IOCTL_PCI_READPORT事件,解析事件中的偏移地址,并通过READ_PORT_USHORT读取指定地址的数据,若收到IOCTL_PCI_WRITEPORT事件,解析事件中的偏移地址和输入数据,送入WRITE_PORT_USHORT以向PCI总线发送数据;步骤104:随机生成128位GUID号码,并将其中后16位替换为运动控制卡的类型,例如0x89,0x69,通过该GUID能够准确寻找特定种类的运动控制卡,并将该号码注册;步骤105:编写应用程序接口,接口包括通过GUID寻找打开设备的设备操作接口和通过IOCTL操作代码进行读写的设备通信接口;步骤106:编写INF文件,并安装驱动程序,安装成功后,即可通过应用程序接口与运动控制卡通信。本文档来自技高网
...

【技术保护点】
1.一种PCI运动控制卡驱动开发方法,其特征在于,包括下列步骤:在WDF初始化阶段的EvtDevicePrepareHardware回调函数内,识别运动控制卡的硬件资源,并记录PCI的硬件通信地址;在WDF的队列消息模块,定义输入输出控制代码,并在回调函数EvtIoDeviceControl内,识别该控制代码,同时根据获取的通信地址偏移和记录的PCI通信地址,与运动控制卡的PCI总线进行通信;在WDF驱动的注册过程中,通过随机码和卡类型组合GUID码,标记每种运动控制卡驱动的唯一识别名称,并可以在应用程序中,通过该GUID码找到控制卡驱动程序。在应用程序中,通过使用Windows的DeviceIoControl接口和定义好的控制代码,发送驱动读写命令并读写数据;

【技术特征摘要】
1.一种PCI运动控制卡驱动开发方法,其特征在于,包括下列步骤:在WDF初始化阶段的EvtDevicePrepareHardware回调函数内,识别运动控制卡的硬件资源,并记录PCI的硬件通信地址;在WDF的队列消息模块,定义输入输出控制代码,并在回调函数EvtIoDeviceControl内,识别该控制代码,同时根据获取的通信地址偏移和记录的PCI通信地址,与运动控制卡的PCI总线进行通信;在WDF驱动的注册过程中,通过随机码和卡类型组合GUID码,标记每种运动控制卡驱动的唯一识别名称,并可以在应用程序中,通过该GUID码找到控制卡驱动程序。在应用程序中,通过使用Windows的DeviceIoControl接口和定义好的控制代码,发送驱动读写命令并读写数据;2.如权利要求1所述的方法,其特征在于,在WDF初始化阶段的EvtDevicePrepareHardware回调函数内,识别运动控制卡的硬件资源,并记录PCI的硬件通信地址,包括:识别运动控制卡PCI总线的资源类型,包括内存资源和IO资源。如果识别IO资源,保存IO资源的起始地址和长度。如果没有识别到资源,则返回错误,并保存相应的错误信息。3.如权利要求1所述的方法,其特征在于,在WDF的队列消息模块,定义输入输出控制代码,并在回调函数EvtIoDeviceControl内,识别该控制代码,同时根据获取的通信地址偏移和记录的PCI通信地址,与运动控制卡的PCI总线进行通信,包括:自定义两个IOCTL代码,分别表示输入和输出数据的事件代码,在回调函数EvtIoDeviceCont...

【专利技术属性】
技术研发人员:袁林艾小云张任甦刘鹏曾逸
申请(专利权)人:深圳众为兴技术股份有限公司
类型:发明
国别省市:广东,44

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

1