CN106371847A - Windows xp系统下CPCI总线RS422通信驱动方法及系统 - Google Patents
Windows xp系统下CPCI总线RS422通信驱动方法及系统 Download PDFInfo
- Publication number
- CN106371847A CN106371847A CN201610807806.0A CN201610807806A CN106371847A CN 106371847 A CN106371847 A CN 106371847A CN 201610807806 A CN201610807806 A CN 201610807806A CN 106371847 A CN106371847 A CN 106371847A
- Authority
- CN
- China
- Prior art keywords
- function
- irp
- program
- driver
- communication
- 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.)
- Granted
Links
- 238000004891 communication Methods 0.000 title claims abstract description 79
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000002093 peripheral effect Effects 0.000 title abstract 2
- 238000012360 testing method Methods 0.000 claims abstract description 29
- 230000006870 function Effects 0.000 claims description 168
- 102100029368 Cytochrome P450 2C18 Human genes 0.000 claims description 24
- 101000919360 Homo sapiens Cytochrome P450 2C18 Proteins 0.000 claims description 24
- 238000011161 development Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 9
- 238000011990 functional testing Methods 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 4
- 238000009826 distribution Methods 0.000 claims description 2
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 238000013517 stratification Methods 0.000 abstract 1
- 238000009434 installation Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000013468 resource allocation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010923 batch production Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 238000009423 ventilation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
- G06F9/4413—Plug-and-play [PnP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/221—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种Windows xp操作系统下CPCI总线RS422通信驱动方法及系统。系统包括:Windows xp底层驱动程序、inf文件、dll程序和上层功能测试应用程序;上层测试应用程序调用dll程序提供的API接口函数;dll程序提供上层功能测试应用程序与底层驱动程序通讯所需的API接口函数;inf文件用于提供安装驱动系统所需的资源信息;Windows xp底层驱动程序包括驱动程序入口函数DriverEntry、AddDevice管理器调用函数、IRP派遣函数。本发明具有模块化、分层次的特点.支持即插即用,使上层功能测试应用程序以一种规范的方式访问硬件,而不必考虑控制硬件的细节。
Description
技术领域
本发明属于CPCI总线驱动技术领域,具体涉及一种Windows xp操作系统下CPCI总线RS422通信驱动方法及系统。
背景技术
Compact PCI是一种开放式、国际性工业计算机标准。它融合了电脑与工业设备诸多已经过广泛验证的标准,是PCI总线技术和成熟的欧式卡组装技术的组合。CPCI总线具有高开放性、高可靠性、可热插拔等特点,与传统工业PC相对比有耐用性、抗震性、通风性等优点。CPCI总线技术除了可以广泛应用在通讯、网络、计算机电话整和,也适合实时系统控制、产业自动化、实时数据采集、军事系统等需要高速运算、智能交通、航空航天、医疗器械、水利等模块化及高可靠度、可长期使用的应用领域。由于CPCI拥有较高的带宽,它也适用于一些高速数据通信的应用,包括服务器、路由器、交换机等,具有较大的市场需求量和极高的市场价值。
随着计算机技术的迅速发展,计算机通信方式已经逐步向更快速、更远距离、更稳定的方向发展。计算机通信方式可以分为并行通信和串行通信,而以RS422通信协议为代表的串行通信在数据通信吞吐量不是很大的微处理电路中更加简易、方便、灵活,特别是在远距离信息传输中串行总线发挥着不可替代的作用。在军事领域、工业监控、数据采集和实时控制系统中,串行通信往往能够发挥其连接简单、使用灵活方便、数据传递可靠等优点。因此RS422通信板卡的研究是通信领域的热门课题。目前,以CPCI+FPGA器件为串行系统架构逐渐成为实现高速串行通信的主流方案, 但因为Windows驱动程序的编写需要开发人员对Windows内核有深入了解和大量的内核调试技巧,稍有不慎就会造成系统崩溃,而Windowsxp系统内核源码并不公开,涉及Windows xp系统内核操作的驱动程序开发很难入门,现多为VXWorks等系统下的CPCI驱动程序开发实现,而驱动程序又不具有通用性,不同的RS422通讯板卡需要不同的驱动程序,目前没有为新研制的RS422通讯板卡在Windows xp系统下的而开发的CPCI驱动程序,为新研制的RS422通讯板卡进行驱动程序开发成为生产活动中亟待解决的问题。
发明内容
针对现有技术存在的问题,本发明提供了一种Windows xp操作系统下CPCI总线RS422通信功能驱动方法,其目的在于,驱动CPCI总线架构的RS422通讯板卡,实现访问RS422通讯板卡资源以及RS422通讯功能;具有模块化、分层次的特点.支持即插即用,使上层功能测试应用程序以一种规范的方式访问硬件,而不必考虑控制硬件的细节。
一种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。
进一步地,所述入口函数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用于处理应用程序通过Win32 APIDeviceIoControl来操作设备时产生的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控制码一起利用Win32 API DeviceIoControl使操作系统创建一个IRP,然后操作系统将这个IRP转发到驱动程序的派遣函数DeviceControl中对其进行处理,进而完成应用程序与驱动程序之间的通讯。
进一步地,所述dll程序提供的API接口函数包括打开板卡、关闭板卡、清除RS422缓存、设置波特率、使能中断、查询RS422缓存中是否有数据。
进一步地,所述上层功能测试程序采用MFC中dialog框架进行编程。
一种Windowsxp操作系统下CPCI总线RS422通信驱动系统的驱动方法,包括以下步骤:
(1)上层功能测试应用程序调用dll程序提供的API接口函数;
(2)dll程序调用由Win32子系统中Kernel32.dll实现的DeviceIoControl API函数;
(3)DeviceIoControl API函数调用Ntdll.dll中的NtDeviceIoControl函数;
(4)NtDeviceIoControl函数穿越用户模式边界进入内核模式,调用系统服务函数;
(5)系统服务函数通过I/O管理器,创建IRP并传输到底层驱动程序中;
(6)底层驱动程序根据入口函数DriverEntry中不同的IRP对应不同的派遣函数调用具体实现的派遣函数DeviceControl;
(7)在派遣函数DeviceControl中根据IRP中不同的I/O控制码调用硬件抽象层所提供的宏对RS422通讯板卡主功能芯片映射到操作系统中的 虚拟内存进行操作;
(8)操作系统根据映射关系通过CPCI总线将操作传递给RS422通讯板卡主功能芯片,RS422通讯板卡主功能芯片通过本地总线根据RS422通讯板卡的FPGA资源分配关系实现对RS422的相应操作。
本发明有益效果体现在:
1、本发明中底层驱动程序采用WDM式驱动程序框架开发,具有模块化、分层次的特点.支持即插即用、电源管理等功能,使上层功能测试应用程序以一种规范的方式访问硬件,而不必考虑控制硬件的细节。
2、本发明中底层驱动程序采用分层次结构模型,不同层的驱动程序完成不同操作,各层之间相互调用,使得驱动程序设计可以模块化。
3、本发明底层驱动程序在开发时充分考虑了通用性,不仅可以实现RS422通讯板卡的驱动,还可以实现I/O脉冲驱动,仅需很少的改动便可以实现其它PCI设备的驱动。
4、本发明中dll程序将上层功能测试应用程序所需的函数全部封装好,使得用户在使用时不必关心驱动细节便可实现测试软件开发。
5、本发明中底层驱动程序、dll程序和上层功能测试程序均采用C++语言编码,可移植性强。
6、本发明交付用户使用时仅需要.sys文件、inf文件、dll文件、lib文件和dll程序提供的API函数列表的.h文件,驱动安装简单方便,用户操作简单。
本发明设计的一种Windows xp操作系统下CPCI总线RS422通信功能单元驱动程序设计方法,可解决新研制的RS422通讯板卡无驱动程序的问题,为新研制的RS422通讯板卡提供驱动程序和API函数访问并实现功能测试。本发明使用于复杂产品批量生产过程中,仅需很少的修改便可实现同一类型设备驱动,具有较好的应用价值和推广前景。
附图说明
图1为本发明的应用程序到访问驱动程序的原理框图;
图2为本发明实例中的RS422通讯板卡结构框图;
其中,1—上层功能测试应用程序、2—dll程序所提供的API、3—底层驱动程序。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
一种Windowsxp操作系统下CPCI总线RS422通信驱动系统包括:Windows xp底层驱动程序、inf文件、为上层应用程序提供API函数接口的dll程序和上层功能测试应用程序,为RS422通讯板卡提供驱动,实现资源分配、测试RS422通讯的功能。
请参见图2,在该实例中RS422通讯板卡主功能芯片为PCI9056,作为功能板卡工作于C模式下的从模式,硬件资源分配在FPGA程序中实现,底层驱动程序和dll程序根据FPGA分配的资源实现资源访问的函数,在上层测试应用程序中调用dll程序提供的API函数实现具体的功能测试。
底层驱动程序采用WDM式驱动程序框架开发,支持即插即用、电源管理等功能,编译环境为微软公司提供的Windows驱动程序开发包DDK(Driver Development kit)。主要的构成包括驱动程序入口函数DriverEntry、AddDevice函数、各个IRP派遣函数。
DriverEntry为驱动程序的入口函数,主要实现设置AddDevice函数、将驱动程序接收到不同类型的IRP(输入输出请求包)中不同的IRP主功能码设置不同的IRP派遣函数。
AddDevice函数主要实现创建设备对象并由PNP(即插即用)管理器调 用,包括创建设备对象(FDO)、将创建的FDO附加在PDO(物理设备对象)上、根据GUID创建符号链接并设置、获取PCI9056的配置空间、初始化电源设置等。
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通讯板卡即插即用时的不同情况所产生的不同次功能码进行不同的处理,例如RS422通讯板卡启动时产生的IRP_MN_START_DEVICE在函数PnpStartDeviceHandler中进行处理,包括获取PCI9056芯片资源,而RS422通讯板卡突然被拔出时产生的IRP_MN_SURPRISE_REMOVAL在函数PnpSurpriseRemovalHandler函数中进行处理。IRP_MJ_DEVICE_CONTROL的派遣函数DeviceControl主要用来处理应用程序通过Win32 API DeviceIoControl来操作设备时产生的IRP,实现应用程序和驱动程序进行通信。具体实现时在驱动程序中定义了多种I/O控制码,在调用Win32 API DeviceIoControl时将I/O控制码和请求一起传递给驱动程序,在IRP_MJ_DEVICE_CONTROL的派遣函数DeviceControl中分别对不同的I/O控制码进行处理。IRP_MJ_POWER的派遣函数DispatchPower实现对RS422通讯板卡的电源管理,例如在闲时设置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用来实现系统内部产生的控制信息的处理。
inf文件是一个文本文件,由若干个节组成,这些节包括版本区域、安装磁盘节、安装类别节、目标文件节、制造商节等节,提供安装驱动程序所需的资源等信息,包括GUID、硬件号、驱动名称、硬件图标、制造厂家、驱动安装路径等信息,其中GUID与驱动程序中的GUID一致,驱动名称与生成的驱动程序sys文件名称一致。
dll程序相当于应用程序与驱动程序通讯之间的桥梁,上层功能测试应用程序与驱动程序通讯所需的接口函数都由DLL提供。dll程序根据硬件FPGA程序分配好的PCI9056资源列表和RS422芯片手册,将RS422需要实现的不同功能封装成上层功能测试应用程序能访问的API函数,API函数的具体实现是将需要访问的PCI9056物理地址、偏移量和I/O控制码一起利用Win32 API DeviceIoControl使操作系统创建一个IRP,然后操作系统将这个IRP转发到驱动程序的派遣函数DeviceControl中对其进行处理,进而完成应用程序与驱动程序之间的通讯。dll程序提供的API函数包括打开板卡、关闭板卡、清除RS422缓存、设置波特率、使能中断、查询RS422缓存中是否有数据等。
上层功能测试程序采用MFC中dialog框架进行编程,加载dll程序生成的dll文件和lib文件后,将dll程序提供的.h文件加载到工程后调用dll程序中提供的API函数实现RS422功能测试,验证底层驱动程序和dll程序的正确性。
本发明中上层功能测试应用程序访问驱动程序的流程图如图1所示,上层功能测试应用程序调用dll程序提供的API函数,dll程序调用由Win32子系统中Kernel32.dll实现的DeviceIoControl API,DeviceIoControl API函数调用Ntdll.dll中的NtDeviceIoControl函数,NtDeviceIoControl函数穿越用户模式边界进入内核模式,调用系统的服务函数,系统的服务函 数通过I/O管理器,创建IRP并传输到底层驱动程序中,底层驱动程序根据入口函数DriverEntry中不同的IRP对应不同的派遣函数调用具体实现的派遣函数DeviceControl,在派遣函数DeviceControl中根据IRP中不同的I/O控制码调用硬件抽象层所提供的宏对PCI9056映射到操作系统中的虚拟内存进行操作,如图2所示,操作系统根据映射关系通过CPCI总线将操作传递给PCI9056,PCI9056通过本地总线根据FPGA资源分配关系实现对RS422的相应操作。
底层驱动程序安装时点击相应的.inf文件进行安装,将.inf文件中的字符串节中ProviderName设置为WanFeng Corporation,MfgName设置为WanFeng Corporation,DeviceDesc设置为WANFENG-CPCI,DeviceClassName设置为WanFeng Corporation,将安装类别节中图标信息设置为“HKR,,Icon,,"-5"”。
上层功能测试应用软件测试RS422功能时分为内部自环收发测试、外部自环收发测试、外部互收发测试和与其它RS422通讯板卡进行通讯测试以此来验证底层驱动程序和dll程序的正确性和稳健性,验证测试均通过,进行连续数小时收发时也通讯正常,无丢数、内存冲突的情况发生,证明底层驱动程序和dll程序运行正常,验证了其正确性、稳定性和可行性。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种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。
2.根据权利要求1所述的Windows xp操作系统下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用于处理应用程序通过Win32 APIDeviceIoControl来操作设备时产生的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用于实现系统内部产生的控制信息的处理。
3.根据权利要求1或2所述的Windows xp操作系统下CPCI总线RS422通信驱动系统,其特征在于,所述dll程序用于根据RS422通信板卡主功能芯片的FPGA程序分配好的RS422通信板卡主功能芯片资源列表和RS422芯片手册,将RS422需要实现的不同功能封装成上层功能测试应用程序能访问的API函数;API函数的具体实现是将需要访问的PCI9056物理地址、偏移量和I/O控制码一起利用Win32 API DeviceIoControl使操作系统创建一个IRP,然后操作系统将这个IRP转发到驱动程序的派遣函数DeviceControl中对其进行处理,进而完成应用程序与驱动程序之间的通讯。
4.根据权利要求3所述的Windows xp操作系统下CPCI总线RS422通信驱动系统,其特征在于,所述dll程序提供的API接口函数包括打开板卡、关闭板卡、清除RS422缓存、设置波特率、使能中断、查询RS422缓存中是否有数据。
5.根据权利要求1所述的Windows xp操作系统下CPCI总线RS422通信驱动系统,其特征在于,所述上层功能测试程序采用MFC中dialog框架进行编程。
6.一种基于权利要求1-5任意一种Windowsxp操作系统下CPCI总线RS422通信驱动系统的驱动方法,包括以下步骤:
(1)上层功能测试应用程序调用dll程序提供的API接口函数;
(2)dll程序调用由Win32子系统中Kernel32.dll实现的DeviceIoControl API函数;
(3)DeviceIoControl API函数调用Ntdll.dll中的NtDeviceIoControl函数;
(4)NtDeviceIoControl函数穿越用户模式边界进入内核模式,调用系统服务函数;
(5)系统服务函数通过I/O管理器,创建IRP并传输到底层驱动程序中;
(6)底层驱动程序根据入口函数DriverEntry中不同的IRP对应不同的派遣函数调用具体实现的派遣函数DeviceControl;
(7)在派遣函数DeviceControl中根据IRP中不同的I/O控制码调用硬件抽象层所提供的宏对RS422通讯板卡主功能芯片映射到操作系统中的虚拟内存进行操作;
(8)操作系统根据映射关系通过CPCI总线将操作传递给RS422通讯板卡主功能芯片,RS422通讯板卡主功能芯片通过本地总线根据RS422通讯板卡的FPGA资源分配关系实现对RS422的相应操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610807806.0A CN106371847B (zh) | 2016-09-07 | 2016-09-07 | Windows xp系统下CPCI总线RS422通信驱动方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610807806.0A CN106371847B (zh) | 2016-09-07 | 2016-09-07 | Windows xp系统下CPCI总线RS422通信驱动方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106371847A true CN106371847A (zh) | 2017-02-01 |
CN106371847B CN106371847B (zh) | 2020-05-22 |
Family
ID=57900208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610807806.0A Active CN106371847B (zh) | 2016-09-07 | 2016-09-07 | Windows xp系统下CPCI总线RS422通信驱动方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106371847B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107861803A (zh) * | 2017-10-31 | 2018-03-30 | 湖北三江航天万峰科技发展有限公司 | 一种基于中断的xp系统下cpci总线rs422通信驱动方法 |
CN107977323A (zh) * | 2017-11-24 | 2018-05-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于以太网的afdx总线仿真方法 |
CN109960670A (zh) * | 2019-03-06 | 2019-07-02 | 湖北三江航天万峰科技发展有限公司 | 一种基于嵌入式Linux的IO驱动方法及装置 |
CN110221867A (zh) * | 2019-05-31 | 2019-09-10 | 湖北三江航天万峰科技发展有限公司 | 一种xp系统下脉冲i/o功能卡通信驱动系统及方法 |
CN111506513A (zh) * | 2020-06-04 | 2020-08-07 | 南京大学 | 一种基于层次化模型的文件系统测试方法 |
CN111562436A (zh) * | 2020-07-15 | 2020-08-21 | 南方电网数字电网研究院有限公司 | 双芯智能电表的设备驱动方法和装置 |
CN112433966A (zh) * | 2020-11-15 | 2021-03-02 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于Windows平台的多接口架构及实现方法 |
CN116382992A (zh) * | 2023-05-16 | 2023-07-04 | 上海孤波科技有限公司 | 一种硬件测试方法、装置、电子设备及存储介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020012043A (ko) * | 2000-08-05 | 2002-02-15 | 송재인 | MS윈도우(MS Windows) 기반 IP235 제어 시스템 |
CN1409227A (zh) * | 2001-09-14 | 2003-04-09 | 北京瑞星科技股份有限公司 | 一种在计算机系统中完全控制文件的方法 |
CN1731347A (zh) * | 2004-08-06 | 2006-02-08 | 梁肇新 | 基于Linux的Windows软件兼容层体系结构 |
CN1866202A (zh) * | 2005-05-18 | 2006-11-22 | 大唐移动通信设备有限公司 | 嵌入式设备的驱动方法 |
CN101198938A (zh) * | 2005-04-21 | 2008-06-11 | 高通股份有限公司 | 用于确定无线装置的多媒体性能方面的方法和设备 |
CN101710289A (zh) * | 2009-12-09 | 2010-05-19 | 深圳华为通信技术有限公司 | 一种数据卡管理程序加载的方法和装置 |
CN101944026A (zh) * | 2010-09-21 | 2011-01-12 | 中国人民解放军63961部队 | 一种通用虚拟仪器接口实现方法 |
CN102063113A (zh) * | 2010-12-29 | 2011-05-18 | 哈尔滨工业大学 | 基于m模块的lxi设备标准化软件架构 |
CN103257865A (zh) * | 2013-05-15 | 2013-08-21 | 山东超越数控电子有限公司 | 基于Wince7下实现应用程序控制底层硬件的方法 |
CN103412841A (zh) * | 2013-08-30 | 2013-11-27 | 哈尔滨工业大学 | VxWorks 操作系统下CPCI总线RS422通信模块的驱动器及驱动方法 |
CN103677855A (zh) * | 2014-01-07 | 2014-03-26 | 哈尔滨工业大学 | 一种VxWorks操作系统下CPCI总线DAC功能单元驱动程序设计方法 |
CN103781072A (zh) * | 2012-10-25 | 2014-05-07 | 中国移动通信集团江苏有限公司 | 一种终端智能卡的实现方法和芯片 |
CN104536926A (zh) * | 2014-12-22 | 2015-04-22 | 深圳市科漫达智能管理科技有限公司 | 串口设备的控制方法及装置 |
CN105045605A (zh) * | 2015-08-28 | 2015-11-11 | 成都卫士通信息产业股份有限公司 | 一种将dll注入目标进程的方法和系统 |
-
2016
- 2016-09-07 CN CN201610807806.0A patent/CN106371847B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020012043A (ko) * | 2000-08-05 | 2002-02-15 | 송재인 | MS윈도우(MS Windows) 기반 IP235 제어 시스템 |
CN1409227A (zh) * | 2001-09-14 | 2003-04-09 | 北京瑞星科技股份有限公司 | 一种在计算机系统中完全控制文件的方法 |
CN1731347A (zh) * | 2004-08-06 | 2006-02-08 | 梁肇新 | 基于Linux的Windows软件兼容层体系结构 |
CN101198938A (zh) * | 2005-04-21 | 2008-06-11 | 高通股份有限公司 | 用于确定无线装置的多媒体性能方面的方法和设备 |
CN1866202A (zh) * | 2005-05-18 | 2006-11-22 | 大唐移动通信设备有限公司 | 嵌入式设备的驱动方法 |
CN101710289A (zh) * | 2009-12-09 | 2010-05-19 | 深圳华为通信技术有限公司 | 一种数据卡管理程序加载的方法和装置 |
CN101944026A (zh) * | 2010-09-21 | 2011-01-12 | 中国人民解放军63961部队 | 一种通用虚拟仪器接口实现方法 |
CN102063113A (zh) * | 2010-12-29 | 2011-05-18 | 哈尔滨工业大学 | 基于m模块的lxi设备标准化软件架构 |
CN103781072A (zh) * | 2012-10-25 | 2014-05-07 | 中国移动通信集团江苏有限公司 | 一种终端智能卡的实现方法和芯片 |
CN103257865A (zh) * | 2013-05-15 | 2013-08-21 | 山东超越数控电子有限公司 | 基于Wince7下实现应用程序控制底层硬件的方法 |
CN103412841A (zh) * | 2013-08-30 | 2013-11-27 | 哈尔滨工业大学 | VxWorks 操作系统下CPCI总线RS422通信模块的驱动器及驱动方法 |
CN103412841B (zh) * | 2013-08-30 | 2016-04-27 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线RS422通信模块的驱动器及驱动方法 |
CN103677855A (zh) * | 2014-01-07 | 2014-03-26 | 哈尔滨工业大学 | 一种VxWorks操作系统下CPCI总线DAC功能单元驱动程序设计方法 |
CN104536926A (zh) * | 2014-12-22 | 2015-04-22 | 深圳市科漫达智能管理科技有限公司 | 串口设备的控制方法及装置 |
CN105045605A (zh) * | 2015-08-28 | 2015-11-11 | 成都卫士通信息产业股份有限公司 | 一种将dll注入目标进程的方法和系统 |
Non-Patent Citations (1)
Title |
---|
景丽: "基于CPCI的多功能数据采集卡的驱动程序研究与开发", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107861803A (zh) * | 2017-10-31 | 2018-03-30 | 湖北三江航天万峰科技发展有限公司 | 一种基于中断的xp系统下cpci总线rs422通信驱动方法 |
CN107977323A (zh) * | 2017-11-24 | 2018-05-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于以太网的afdx总线仿真方法 |
CN109960670A (zh) * | 2019-03-06 | 2019-07-02 | 湖北三江航天万峰科技发展有限公司 | 一种基于嵌入式Linux的IO驱动方法及装置 |
CN110221867A (zh) * | 2019-05-31 | 2019-09-10 | 湖北三江航天万峰科技发展有限公司 | 一种xp系统下脉冲i/o功能卡通信驱动系统及方法 |
CN111506513A (zh) * | 2020-06-04 | 2020-08-07 | 南京大学 | 一种基于层次化模型的文件系统测试方法 |
CN111506513B (zh) * | 2020-06-04 | 2021-06-22 | 南京大学 | 一种基于层次化模型的文件系统测试方法 |
CN111562436A (zh) * | 2020-07-15 | 2020-08-21 | 南方电网数字电网研究院有限公司 | 双芯智能电表的设备驱动方法和装置 |
CN112433966A (zh) * | 2020-11-15 | 2021-03-02 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于Windows平台的多接口架构及实现方法 |
CN116382992A (zh) * | 2023-05-16 | 2023-07-04 | 上海孤波科技有限公司 | 一种硬件测试方法、装置、电子设备及存储介质 |
CN116382992B (zh) * | 2023-05-16 | 2023-09-19 | 上海孤波科技有限公司 | 一种硬件测试方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106371847B (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106371847B (zh) | Windows xp系统下CPCI总线RS422通信驱动方法及系统 | |
CN101065740B (zh) | USB便携式(On-The-Go)控制器 | |
CN100565472C (zh) | 一种适用于多处理器核系统芯片的调试方法 | |
KR101035832B1 (ko) | 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템 | |
US6839892B2 (en) | Operating system debugger extensions for hypervisor debugging | |
US8726298B1 (en) | Cloud-based instrument driver system | |
CN103019941B (zh) | 程序调试方法和装置 | |
CN1752946A (zh) | 一种嵌入式系统的调试方法及其系统 | |
CN103593189A (zh) | 一种嵌入式Linux下用户态驱动程序的实现方法 | |
CN103927256A (zh) | 一种控制多个安卓装置的方法 | |
CN117785593B (zh) | 一种基于UVM的xHCI驱动的实现系统及方法 | |
CN112905472A (zh) | 内核调试系统及方法 | |
CN116521596B (zh) | 一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置 | |
CN100489777C (zh) | 智能平台管理接口韧体架构及其建立方法 | |
JP2004528656A (ja) | 組込み制御環境におけるリモート入出力機能への効率的なアクセスのための方法およびシステム | |
CN115017845A (zh) | 用于ip单元级别验证的总线驱动式芯片仿真激励模型 | |
CN114997102A (zh) | 一种物理层验证方法、装置、设备及存储介质 | |
CN110221867A (zh) | 一种xp系统下脉冲i/o功能卡通信驱动系统及方法 | |
CN109857638B (zh) | 一种测试系统软件通用框架 | |
CN113064833A (zh) | 一种单片机仿真方法、系统、装置、设备及存储介质 | |
CN113609052A (zh) | 基于fpga和微处理器的芯片模拟系统及实现方法 | |
CN110109849B (zh) | 一种基于pci总线的can设备驱动装置及方法 | |
CN111338761B (zh) | 一种51单片机虚拟中断控制器及实现方法 | |
CN210536666U (zh) | FastLIN总线接口设备 | |
CN109388576A (zh) | 一种基于agdi接口的仿真调试工具 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |