Windows xp系统下CPCI总线RS422通信驱动方法及系统技术方案

技术编号:14514936 阅读:112 留言:0更新日期:2017-02-01 16:22
本发明专利技术公开一种Windows xp操作系统下CPCI总线RS422通信驱动方法及系统。系统包括:Windows xp底层驱动程序、inf文件、dll程序和上层功能测试应用程序;上层测试应用程序调用dll程序提供的API接口函数;dll程序提供上层功能测试应用程序与底层驱动程序通讯所需的API接口函数;inf文件用于提供安装驱动系统所需的资源信息;Windows xp底层驱动程序包括驱动程序入口函数DriverEntry、AddDevice管理器调用函数、IRP派遣函数。本发明专利技术具有模块化、分层次的特点.支持即插即用,使上层功能测试应用程序以一种规范的方式访问硬件,而不必考虑控制硬件的细节。

【技术实现步骤摘要】

本专利技术属于CPCI总线驱动
,具体涉及一种Windowsxp操作系统下CPCI总线RS422通信驱动方法及系统。
技术介绍
CompactPCI是一种开放式、国际性工业计算机标准。它融合了电脑与工业设备诸多已经过广泛验证的标准,是PCI总线技术和成熟的欧式卡组装技术的组合。CPCI总线具有高开放性、高可靠性、可热插拔等特点,与传统工业PC相对比有耐用性、抗震性、通风性等优点。CPCI总线技术除了可以广泛应用在通讯、网络、计算机电话整和,也适合实时系统控制、产业自动化、实时数据采集、军事系统等需要高速运算、智能交通、航空航天、医疗器械、水利等模块化及高可靠度、可长期使用的应用领域。由于CPCI拥有较高的带宽,它也适用于一些高速数据通信的应用,包括服务器、路由器、交换机等,具有较大的市场需求量和极高的市场价值。随着计算机技术的迅速发展,计算机通信方式已经逐步向更快速、更远距离、更稳定的方向发展。计算机通信方式可以分为并行通信和串行通信,而以RS422通信协议为代表的串行通信在数据通信吞吐量不是很大的微处理电路中更加简易、方便、灵活,特别是在远距离信息传输中串行总线发挥着不可替代的作用。在军事领域、工业监控、数据采集和实时控制系统中,串行通信往往能够发挥其连接简单、使用灵活方便、数据传递可靠等优点。因此RS422通信板卡的研究是通信领域的热门课题。目前,以CPCI+FPGA器件为串行系统架构逐渐成为实现高速串行通信的主流方案,但因为Windows驱动程序的编写需要开发人员对Windows内核有深入了解和大量的内核调试技巧,稍有不慎就会造成系统崩溃,而Windowsxp系统内核源码并不公开,涉及Windowsxp系统内核操作的驱动程序开发很难入门,现多为VXWorks等系统下的CPCI驱动程序开发实现,而驱动程序又不具有通用性,不同的RS422通讯板卡需要不同的驱动程序,目前没有为新研制的RS422通讯板卡在Windowsxp系统下的而开发的CPCI驱动程序,为新研制的RS422通讯板卡进行驱动程序开发成为生产活动中亟待解决的问题。
技术实现思路
针对现有技术存在的问题,本专利技术提供了一种Windowsxp操作系统下CPCI总线RS422通信功能驱动方法,其目的在于,驱动CPCI总线架构的RS422通讯板卡,实现访问RS422通讯板卡资源以及RS422通讯功能;具有模块化、分层次的特点.支持即插即用,使上层功能测试应用程序以一种规范的方式访问硬件,而不必考虑控制硬件的细节。一种Windowsxp操作系统下CPCI总线RS422通信驱动系统,包括:Windowsxp底层驱动程序、inf文件、dll程序和上层功能测试应用程序;所述上层测试应用程序用于调用dll程序提供的API接口函数实现具体的功能测试;所述dll程序为应用程序与驱动程序通讯之间的桥梁,用于提供上层功能测试应用程序与Windowsxp底层驱动程序通讯所需的API接口函数;所述inf文件是一个文本文件,用于提供安装驱动系统所需的资源信息;所述Windowsxp底层驱动程序采用WDM式驱动程序框架开发,编译环境为Windows驱动程序开发包DDK,包括驱动程序入口函数DriverEntry、AddDevice管理器调用函数、各个IRP派遣函数;其中,所述驱动程序入口函数DriverEntry为驱动程序的入口函数,用于设置AddDevice管理器调用函数,以及对不同类型的输入输出请求包IRP中不同的IRP主功能码设置对应的IRP派遣函数;所述AddDevice管理器调用函数用于创建设备对象并由即插即用管理器PNP调用,包括创建设备对象FDO、将创建的FDO附加在物理设备对象PDO上、根据全局唯一标识符GUID创建符号链接、获取RS422通信板卡主功能芯片的配置空间、初始化电源设置;所述IRP派遣函数用于处理相应的IRP。进一步地,所述入口函数DriverEntry分配的IRP主功能码包括:IRP_MJ_PNP、IRP_MJ_CREATE、IRP_MJ_CLOSE、IRP_MJ_CLEANUP、IRP_MJ_WRITE、IRP_MJ_READ、IRP_MJ_POWER、IRP_MJ_DEVICE_CONTROL和IRP_MJ_SYSTEM_CONTROL;IRP_MJ_PNP、IRP_MJ_DEVICE_CONTROL和IRP_MJ_POWER的派遣函数分别为DispatchPnp、DeviceControl和DispatchPower;IRP_MJ_PNP的派遣函数DispatchPnp用于针对RS422通讯板卡即插即用时的不同情况所产生的不同次功能码进行不同的处理;IRP_MJ_DEVICE_CONTROL的派遣函数DeviceControl用于处理应用程序通过Win32APIDeviceIoControl来操作设备时产生的IRP,实现应用程序和驱动程序进行通信;IRP_MJ_POWER的派遣函数DispatchPower用于实现对RS422通讯板卡的电源管理。IRP_MJ_CREATE的派遣函数DispatchCreate用于实现创建设备;IRP_MJ_CLOSE的派遣函数DispatchClose用于实现关闭设备;IRP_MJ_CLEANUP的派遣函数DispatchCleanup用于实现在设备关闭时的清除工作;IRP_MJ_WRITE的派遣函数DispatchWrite用于实现向设备写入数据;IRP_MJ_READ的派遣函数DispatchRead用于实现读取设备内容;IRP_MJ_SYSTEM_CONTROL的派遣函数DispatchSystemControl用于实现系统内部产生的控制信息的处理。进一步地,所述dll程序用于根据RS422通信板卡主功能芯片的FPGA程序分配好的RS422通信板卡主功能芯片资源列表和RS422芯片手册,将RS422需要实现的不同功能封装成上层功能测试应用程序能访问的API函数;API函数的具体实现是将需要访问的PCI9056物理地址、偏移量和I/O控制码一起利用Win32APIDeviceIoControl使操作系统创建一个IRP,然后操作系统将这个IRP转发到驱动程序的派遣函数DeviceControl中对其进行处理,进而完成应用程序与驱动程序之间的通讯。进一步地,所述dll程序提供的API接口函数包括打开板卡、关闭板卡、清除RS422缓存、设置波特率、使能中断、查询RS422缓存中是否有数据。进一步地,所述上层功能测试程序采用MFC中dialog框架进行编程。一种Windowsxp操作系统下CPCI总线RS422通信驱动系统的驱动方法,包括以下步骤:(1)上层功能测试应用程序调用dll程序提供的API接口函数;(2)dll程序调用由Win32子系统中Kernel32.dll实现的DeviceIoControlAPI函数;(3)DeviceIoControlAPI函数调用Ntdll.dll中的NtDeviceIoControl函数;(4)NtDeviceIoControl函数穿越用户模式边界进入内核模式,调用系统服务函数;(5)系统服务函数通过I/O管理器,创建IRP并传输到底层驱动程序中;本文档来自技高网
...

【技术保护点】
一种Windows xp操作系统下CPCI总线RS422通信驱动系统,其特征在于,包括:Windows xp底层驱动程序、inf文件、dll程序和上层功能测试应用程序;所述上层测试应用程序用于调用dll程序提供的API接口函数实现具体的功能测试;所述dll程序为应用程序与驱动程序通讯之间的桥梁,用于提供上层功能测试应用程序与Windows xp底层驱动程序通讯所需的API接口函数;所述inf文件是一个文本文件,用于提供安装驱动系统所需的资源信息;所述Windows xp底层驱动程序采用WDM式驱动程序框架开发,编译环境为Windows驱动程序开发包DDK,包括驱动程序入口函数DriverEntry、AddDevice管理器调用函数、各个IRP派遣函数;其中,所述驱动程序入口函数DriverEntry为驱动程序的入口函数,用于设置AddDevice管理器调用函数,以及对不同类型的输入输出请求包IRP中不同的IRP主功能码设置对应的IRP派遣函数;所述AddDevice管理器调用函数用于创建设备对象并由即插即用管理器PNP调用,包括创建设备对象FDO、将创建的FDO附加在物理设备对象PDO上、根据全局唯一标识符GUID创建符号链接、获取RS422通信板卡主功能芯片的配置空间、初始化电源设置;所述IRP派遣函数用于处理相应的IRP。...

【技术特征摘要】
1.一种Windowsxp操作系统下CPCI总线RS422通信驱动系统,其特征在于,包括:Windowsxp底层驱动程序、inf文件、dll程序和上层功能测试应用程序;所述上层测试应用程序用于调用dll程序提供的API接口函数实现具体的功能测试;所述dll程序为应用程序与驱动程序通讯之间的桥梁,用于提供上层功能测试应用程序与Windowsxp底层驱动程序通讯所需的API接口函数;所述inf文件是一个文本文件,用于提供安装驱动系统所需的资源信息;所述Windowsxp底层驱动程序采用WDM式驱动程序框架开发,编译环境为Windows驱动程序开发包DDK,包括驱动程序入口函数DriverEntry、AddDevice管理器调用函数、各个IRP派遣函数;其中,所述驱动程序入口函数DriverEntry为驱动程序的入口函数,用于设置AddDevice管理器调用函数,以及对不同类型的输入输出请求包IRP中不同的IRP主功能码设置对应的IRP派遣函数;所述AddDevice管理器调用函数用于创建设备对象并由即插即用管理器PNP调用,包括创建设备对象FDO、将创建的FDO附加在物理设备对象PDO上、根据全局唯一标识符GUID创建符号链接、获取RS422通信板卡主功能芯片的配置空间、初始化电源设置;所述IRP派遣函数用于处理相应的IRP。2.根据权利要求1所述的Windowsxp操作系统下CPCI总线RS422通信驱动系统,其特征在于,所述入口函数DriverEntry分配的IRP主功能码包括:IRP_MJ_PNP、IRP_MJ_CREATE、IRP_MJ_CLOSE、IRP_MJ_CLEANUP、IRP_MJ_WRITE、IRP_MJ_READ、IRP_MJ_POWER、IRP_MJ_DEVICE_CONTROL和IRP_MJ_SYSTEM_CONTROL;IRP_MJ_PNP、IRP_MJ_DEVICE_CONTROL和IRP_MJ_POWER的派遣函数分别为DispatchPnp、DeviceControl和DispatchPower;IRP_MJ_PNP的派遣函数DispatchPnp用于针对RS422通讯板卡即插即用时的不同情况所产生的不同次功能码进行不同的处理;IRP_MJ_DEVICE_CONTROL的派遣函数DeviceControl用于处理应用程序通过Win32APIDeviceIoControl来操作设备时产生的IRP,实现应用程序和驱动程序进行通信;IRP_MJ_POWER的派遣函数DispatchPower用于实现对RS422通讯板卡的电源管理。IRP_MJ_CREATE的派遣函数DispatchCreate用于实现创建设备;IRP_MJ_CLOSE的派遣函数DispatchClose用于实现关闭设备;IRP_MJ_CLEANUP的派遣函数Dispa...

【专利技术属性】
技术研发人员:陈秀琼王敏敏卢联杰谢贵兔王明博周苏茂佟超
申请(专利权)人:湖北三江航天万峰科技发展有限公司
类型:发明
国别省市:湖北;42

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

1