PCI图像采集卡的Windows驱动程序开发
- 格式:pdf
- 大小:440.87 KB
- 文档页数:4
PCI设备Windows通用驱动程序设计摘要通用高速PCI总线目标模块全面地讨论了Windows 设备驱动程序编写时所面临的主要问题及解决方案关键词经常要在机的软件中访问和控制硬件设备包括Windows95/98Windows 2000为了保证系统的安全性对应用程序访问硬件资源加以限制Windows下的驱动程序不仅仅包括物理设备的驱动程序为了简化问题本文将以撏ㄓ酶咚伲校茫勺芟吣勘昴探讨PCI设备的驱动程序设计方案它可以完成一般PCI设备驱动所需的功能Çý¶¯³ÌÐò²»»á¶ÀÁ¢µØ´æÔÚͨ¹ýÉ豸Çý¶¯³ÌÐò´Ó¶ø¿ÉÒÔʵÏÖ¶à½ø³Ì²¢ÐÐÔËÐн«µ÷ÓÃÉ豸Çý¶¯³ÌÐòµÄpc机程序称为用户程序所以大多数情况下驱动程序也不能通用一般至少要设计Windows 9X和Windows NT两个驱动程序版本同时它又推出一个新的Win32 Drivers Mode (WDM)驱动类型如USB 设备这个新的类型实际是在Windows NT的驱动模型的基础上增加了即插即用等内容先前叫Windows NT5.0´Ó³¤Ô¶µÄ½Ç¶È¿´µ«´ÓĿǰµÄÊг¡Çé¿öÀ´¿´ËùÒÔWDM在近一两年还无法替代其它类型的设备驱动0级2级和3级而用户程序运行在3级上具体的限制在不同的操作系统中是不同的Windows 95支持的驱动类型很多主要是VxD和打印机驱动两类VxD运行在Intel系统的0级上对任何I/O设备有全部访问权VxD驱动通常以放在Windows\System目录下也可以在程序运行时根据需要动态地载入但打印机驱动程序不是VxDͬWindows 95类似Kernel ModeUser Mode)之分PCI通用驱动程序要求对各种硬件资源访问开发设备驱动采用的主要开发工具是微软为设备开发者提供的软件包Device Driver Kit (DDK)±àÒëÐèÒªµÄÍ·ÎļþºÍ¿âÎļþÔÚDDK中还定义了一些设备驱动可以调用的系统底层服务中断服务可安装文件系统服务等等但Windows 95的DDK由于主要使用汇编语言描述因此VtoolsD是基于C/C++的使用和维护都较Windows DDK容易 PCI驱动程序的特点在设计驱动程序之前更需要详细了解硬件设备的特性需要了解的最主要的硬件特性包括设备的总线结构设备采用什么总线结构非常关键如ISA和PCIËùÒÔÇý¶¯³ÌÐòÉè¼ÆÒ²²»Í¬寄存器要了解设置的控制寄存器以及这些寄存器工作的特性设备错误和状态要了解如何判断设备的状态和错误信号port也就是通过CPU的IN/OUT指令进行数据读写但PCI规范不包括从属DMA的说明设备内存许多设备自身带有内存有的设备还要通过驱动程序设置设备的接口寄存器在DDK文档中有规定这是根据设备的不同而不同的但基本功能就是完成设备的初始化中断的设置如前面所说但驱动程序所要完成的工作却是相同的仅在需要的地方指出两个操作系统的不同ѰַPCI器件的资源和对PCI器件中断的服务所有软件扩展ROM码PCI BIOS规范有完整的有关PCI BIOS功能的描述[在PCI设备驱动程序的初始化过程中devicevendor indexͨ¹ýµ÷ÓÃPC IBIOS确认其存在总线号这是该器件利用总线号功能的PCI配置空间设备驱动就需要从配置空间获得硬件的参数包括所用的中断号存储器的地址存储器映射方式等读写配置空间可以调用BIOS中断1AHÔÙ¶ÔÅäÖÿռäÊý¾Ý¼Ä´æÆ÷(0CFCH)进行读写最重要的是获得基址寄存器(BADR)ϵͳ¿ÉÄÜ»á¸ù¾ÝÓ²¼þÇé¿öΪPCI设备分配新的资源而基址4是按内存方式映射的可以读对应端口的配置寄存器(Configuration Register)ÅÐ¶ÏÆä0位表示其是按内存方式设置的内存方式和I/O方式的配置寄存器的含义参见文献[如果要获得基址的大小然后读基址寄存器从第4位开始的0的数目表示基址的大小则从第2位开始的0的数目表示基址的大小查找PCI设备的工作是由HalGteBusData完成的但DDK推荐使用HaiGetBusDataOffset函数)端口操作在PC机上所以处理方法也不同它不象内存有实模式和保护模式之分在Windows 9X下而不一定非通过专门的驱动程序来完成甚至可以不用专门设计驱动程序由于PCI总线是32位的总线标准而且以前大多数C/C++编译软件都没有提供双字的函数在Windows NT下级的用户程序和用户模式驱动程序直接 使用I/O指令所以任何对I/O的操作都需要借助内核模式驱动来完成一是在驱动程序中使用IoReportResourceUsage报告资源占用PORTWRITEXXX函数读写另一种是驱动程序修改NT的I/OPermissions Map(IOPM)ÕâʱÓû§³ÌÐò²ÉÓÃͨ³£µÄI/O指令进行操作用户程序设计简单程序不能移植到非Intel的系统中±£»¤Ä£Ê½ÓëʵģʽµÄ¸ù±¾Çø±ðÔÚÓÚCPU寻址方式上的不同Windows采用了分段分页机制如图这样使应用程序产生一种错觉这样做最大的好处就是一个程序可以很容易地在物理内存容量不一样的编程人员使用虚拟存储器可以写出比任何实际配置的物理存储器都大得多的程序通过分段机制再通过分页机制线性地址被分割成页目录(Page Directory)µ±½¨Á¢Ò»¸öеÄWin32进程时并建立它自己的页目录页目录的地址也同时放入进程的现场信息中系统首先从CPU控制器CR3中读出页目录所在的地址再根据页表得到实际代码最后再根据页偏移访问特定的单元但应用程序读写的是虚拟地址从物理地址到线性地址的转换工作也是由驱动程序来完成的使用DDK的VMMCallÇý¶¯³ÌÐòµÄÄÚ´æÓ³É䲿·ÖÖ÷ÒªÊǵ÷ÓÃVxD的系统服务MapPhysToLinearPVOID MapPhysToLineag(CONST VOID * PhysAddr,DWORD nBytes,DWORD Flags);其中第一个参数PhysAddr就是要映射的内存的物理地址的起始位置Flags必须设置为0Èç¹ûÖ¸¶¨µÄÄÚ´æ²»ÄÜ´æÈ¡比如要映射物理内存ED000000H开始的4096个字节PCHAR *PointerToPage=(PCHAR)MapPhysToLinear((PVOID)OxED000000,4096,0);而将PointerToPage传递给调用驱动的用户程序而通过对这个指针的操作就可以实现对物理内存ED000000H进行读写首先调用IoReportResourceUsage请求使用设备的内存再使用MmMapIoSpace把设备的内存映射到虚拟空间调用MmUnmapIoSpace 断开设备的内存和虚拟空间的连接)中断的设置响应与调用应该在驱动程序中完成Int完成DDK还提供了响应中断事件的服务VPICD服务用来管理所有硬件中断事件对一个特定的IRQ中断源或者允许其它VxD重载中断处理函数要处理硬件中断应该从VHardwareInt继承一个类个类中在Windows NT中设备驱动首先使用HalGetInterrupuVector将与总线有关的中断向量转换为系统的中断向量×ÜÊÇÐèÒªÓÉÓû§³ÌÐòÀ´µ÷ÓÃÇý¶¯²¢ÊµÏÖÒ»¶¨µÄ¹¦Äܵõ½Ò»¸öÎļþ¾ä±úʹÓÃÈçϵÄÓï¾ä¾Í¿ÉÒÔ´ò¿ªÎļþµ÷ÓÃDeviceIoControl函数就可以同设备驱动程序交换数据了可以调用CloseHandle(hVxD)这种调用方式也是Windows NT调用设备驱动的标准方法如DPMI方式在两个操作系统下Íê³ÉÁ˶ÔÇý¶¯³ÌÐòµÄ³õ²½Éè¼Æ³ÌÐòÒ²²»Ì«ÈÝÒ×¾ßÓÐͨÓÃÐÔÔÚÓÐЩ¿ª·¢¹¤¾ßÖÐ不包括直接读写I/O端口的语句目前ActiveXDLL可以在大多数软件环境中进行调用VCL可以在Delphi和C++ Builder中使用所以也提供了C++类库方式 马卫国通用高速PCI总线目标模块的设计1999;25(1)±±¾©1997。
PCI设备Windows通用驱动程序设计2004-5-13 10:56:55驱动开发网李海(华强电子世界网讯)本文结合“通用高速PCI总线目标模块”的驱动程序设计,全面地讨论了Windows设备(特别是PCI设备)驱动程序编写时所面临的主要问题及解决方案,并提出了封装设备驱动的方法。
关键词:PCI设备驱动程序端口内存中断封装在设计和使用PCI设备时,经常要在PC机的软件中访问和控制硬件设备,但Windows操作系统(包括Windows95/98、Windows NT、Windows 2000为了保证系统的安全性、稳定性和可移植性,对应用程序访问硬件资源加以限制,这就要求设计设备驱动程序以实现PC机的软件对PCI设备的访问。
Windows下的驱动程序不仅仅包括物理设备的驱动程序,也包括为文件系统等非物理设备编写的虚拟设备驱动程序。
为了简化问题,下面只讨论硬件物理设备的驱动程序。
本文将以撏ㄓ酶咚伲校茫勺芟吣勘昴?閿[1]的驱动设计为例,探讨PCI设备的驱动程序设计方案。
我们开发了一套通用的PCI设备驱动程序,它可以完成一般PCI设备驱动所需的功能,可以作为其它PCI设备驱动开发的框架。
1驱动程序的模式和开发工具的选择设备驱动程序是指管理某个外围设备的一段代码。
驱动程序不会独立地存在,而是操作系统的一部分。
通过设备驱动程序,多个进程可以同时使用这些资源,从而可以实现多进程并行运行。
在下文中,将调用设备驱动程序的pc机程序称为用户程序。
Windows 95和Windows NT采用的驱动程序体系不同,所以大多数情况下驱动程序也不能通用。
如果设备需要在Windows 9X/NT下使用,一般至少要设计Windows 9X和Windows NT两个驱动程序版本。
wINDOWS 98 可以兼容Windows 95的驱动程序,同时它又推出一个新的Win32 Drivers Mode (WDM)驱动类型。
Windows 98中有些设备(如USB设备)的驱动程序必须为WDM模式。
PCI采集卡原理和程序原理:PCI采集卡通常由两部分组成:硬件和软件。
硬件部分包括A/D(模数转换器)和D/A(数模转换器)芯片,它们用于将模拟信号转换为数字信号或将数字信号转换为模拟信号。
硬件部分还包括I/O接口电路和特定的电路元件,用于进行数字信号的输入和输出。
PCI采集卡的软件部分包括驱动程序和应用程序接口(API)。
驱动程序是一种特殊的软件,用于与硬件部分进行通信和控制。
驱动程序通过计算机的操作系统来访问硬件,并将硬件的功能暴露给用户空间的应用程序。
API是一组函数和库,用于简化和加速开发人员对PCI采集卡的编程。
在程序层面上,开发人员可以使用C、C++、Python等编程语言来开发PCI采集卡的应用程序。
通过调用API的函数,开发人员可以实现类似于打开设备、设置采样率、启动数据采集、读取数据等操作。
开发人员还可以通过API实现特定的算法和处理,如滤波、傅里叶变换、信号分析等。
1.安装驱动程序:首先,需要将PCI采集卡的驱动程序安装到计算机的操作系统中。
这样,操作系统才能识别和访问PCI采集卡的功能。
2.初始化设备:一旦驱动程序安装完成,开发人员需要通过调用相关的API函数来初始化PCI采集卡。
这包括打开设备、设置采样率、配置输入输出等。
3.数据采集:在设备初始化完成后,开发人员可以通过调用API函数来启动数据采集。
API函数提供了多种采集模式,如连续采集、触发采集、分段采集等。
4.数据处理:一旦数据采集完成,开发人员可以通过调用API函数来读取采集到的数据,并进行进一步的数据处理。
这可以包括数据滤波、傅里叶变换、数据分析等。
5.关闭设备:在程序结束后,需要调用API函数来关闭并释放PCI采集卡的资源。
总之,PCI采集卡利用计算机的PCI总线进行数据采集和实验控制。
它通过硬件和软件的配合来实现数据的输入和输出。
开发人员可以通过驱动程序和API函数来编写程序,实现采集卡的功能使用和数据处理。
《自动化技术与应用》2007年第26卷第11期Techniques of Automation & Applications | 119 经验交流Technical Communications1 引言在保护模式的操作系统Windows下开发程序是在应用程序级,即“用户模式”下进行,不能直接访问硬件。
而通常的可视化开发工具(VC、VB等)都是工作在“用户模式”下的。
在这样的系统中,硬件的访问只限于操作系统通过设备驱动程序访问。
设备驱动程序开发选用WinDriver驱动程序开发工具来实现。
WinDriver是一套设备驱动程序开发组件,通过WinDriver提供的函数库来与内核连接,开发设备驱动程序,实现与Win-dows 底层的通信。
2 VB 设计驱动程序利用WinDriver的开发向导WinDriver6.23,生成基于VB下的框架程序,程序主要有***_diag.bas、 ***_lib.bas 、windrvr.bas等文件。
这些文件包括系统内部所用数据结构的定义、访问硬件的函数库,可实现对PCI设备的操作。
***_diag.bas类模块.是该设备诊断程序 ,在程序中使用了文件***_lib.bas中的库函数 ,可以对设备进行实际的诊断操作。
***_lib.bas类模块.是一个库文件 ,其中定义了访问所有收稿日期:2007-04-23利用WinDriver 开发PCI 设备驱动程序冯 莉, 叶 超(中国工程物理研究院流体物理研究所,四川 绵阳 621900)摘 要: WinDriver6.23提供了基于VB开发PCI设备驱动程序的函数库,利用这些库函数 ,可以很方便地在VB开发环境下以用户模式编写PCI设备驱动程序 ,扩充VB功能 ,极大地节省开发时间。
文中阐述用VB调用WinDriver的库函数实现PCI设备驱动程序开发的过程,并给出了关键函数的解释。
关键词: WinDriver; 设备驱动程序; VB中图分类号:TP311.52 文献标识码:B 文章编号:1003-7241(2007)11-0119-03Development of the PCI Device Driver by Using WinDriverFENG Li, YE Chao(Institute of Fluid Physics, CAEP Mianyang 621900 china)Abstract: WinDriver6.23 provides Dll of PCI device drivers in VB. Using the Dll, we can easily develop PCI device drivers withuser’s mode in VB and expand VB functions. The paper presents the development steps of PCI device drivers based on the Dll in VB, and gives explanation of the key functions.Keyword: WinDriver; device drivers ;VBPCI设备资源所需的库函数 ,包括存储器读写、I/O 读写、配置寄存器操作、EEPROM 操作、中断处理、DMA 处理等。
PCI传输卡的WDM驱动程序设计2008-01-20摘要:介绍了在Windows2000操作系统下,使用DriverStudio软件编写符合WDM模式的PCI数据传输卡驱动程序,并详细分析了一个应用实例。
关键词:PCI总线设备驱动程序 WDM模式 DriverStudioPCI总线规范是为提高微机总线的数据传输速度而制定的一种局部总线标准。
在设计自行开发的基于PCI总线的数据传输设备时,需要开发相应的`设备驱动程序。
通常开发PCI设备驱动程序有多种模式,在Windows2000环境下,主要采用WDM模式。
本文针对自行开发的基于PCI总线的CCD视频信号传输控制卡,编写了符合WDM模式的驱动程序。
1WDM模式驱动程序1.1WDM模式(WindowsDriverModel)Windows2000对驱动程序的编写不再基于以往的Win3.x和Win9x下的VxD(虚拟设备驱动程序)结构,而是基于一种新的驱动模型――WDM(WindowsDriverModel)。
WDM为Windows98/2000/XP操作系统的设备驱动程序的设计提供了统一的框架。
WDM来源于WindowsNT的分层32位设备驱动程序模型(layered32-bitdevicedrivermodel)。
它支持更多的特性,如即插即用(PnP)、电源管理、WMI和NT事件。
1.2设备驱动程序设备驱动程序是操作系统的一个组成部分,它由I/O管理器(I/OManager)管理和调动。
Windows2000操作系统下的I/O管理器功能描述如图1所示。
I/O管理器每收到一个来自用户应用程序的请求就创建一个I/O请求包(IRP)的数据结构,并将其作为参数传递给驱动程序。
驱动程序通过识别IRP中的物理设备对象(PDO)来区别是发送给哪一个设备。
IRP结构中存放请求的类型、用户缓冲区的首地址、用户请求数据的长度等信息。
驱动程序处理完这个请求后,在该结构中填入处理结果的有关信息,调用IoCompleteRequest将其返回给I/O管理器,用户应用程序的请求随即返回。
红外热像仪PCI总线图像采集卡驱动程序安装说明
1. 图像采集卡的安装
1.1 使用环境
a.操作系统
Windows 2000,XP
b.硬件要求
CPU PIII 450 以上
内存 128M以上
1.2 安装文件
安装文件包含:CatPCIv2drv.inf和CatPCIv2drv.sys
1.3 安装过程
关闭计算机,打开机箱.
将采集卡插入机箱内任何一个空的PCI槽固定后打开计算机电源.
计算机进入Windows 2000(XP)后会弹出发现新硬件对话框,如图1所以;
图1
单击下一步,会弹出发现新硬件对话框,如图2所示:
图2
点击 显示已知设备驱动程序列表,从中选择特定驱动程序(D) 按钮, 点击下一步,会弹出下一对话框如图3所示:
图3
选取硬件类型列表中的其他设备选项,点击下一步,会弹出如图4对话框,
图4
点击从磁盘安装按钮,系统会弹出从磁盘安装对话框,如图5所示:
图5
点击浏览按钮后,会弹出查找文件对话框,找到取驱动程序安装盘所在的
目录,选取CatPCIv2drv.inf文件,点击确定,对话框如图6所示:
图6
点击下一步,系统完成文件拷贝后会弹出如图7所示对话框:
图7
点击下一步:
图8 点击完成即可。
PCI图像采集卡的Windows驱动程序开发
龚艳军;朱德森;肖力
【期刊名称】《计算机与数字工程》
【年(卷),期】2005(033)006
【摘要】结合自行开发的PCI总线的图像采集卡,讨论了一般PCI设备驱动程序编写时所面临的主要问题及解决方案,特别分析了图像采集卡对驱动程序的额外要求同时提出了解决方案,并简略的说明了驱动程序的安装与调用问题.
【总页数】4页(P95-98)
【作者】龚艳军;朱德森;肖力
【作者单位】华中科技大学控制科学与工程系,武汉,430074;华中科技大学控制科学与工程系,武汉,430074;华中科技大学控制科学与工程系,武汉,430074
【正文语种】中文
【中图分类】TP31
【相关文献】
1.基于PCI的DSP板的Windows驱动程序开发 [J], 谭永青
2.基于PCI总线的数据采集卡WDM驱动程序开发 [J], 孙健;贾民平;许飞云;胡建中
3.基于WinDriver的PCI数据采集卡的设备驱动程序开发 [J], 张思博;董春;李宗帅
4.基于WinDriver的PCI CAN板卡Windows驱动程序开发 [J], 刘勇;佟为明;林
景波
5.基于PCI的红外图像采集卡设备驱动程序开发 [J], 孙茂阳;李坡;聂镭
因版权原因,仅展示原文概要,查看原文内容请购买。
摘要:WinDriver是一套PCI驱动程序开发包。
它改变了传统驱动程序开发的方法与思路,极在地简化了驱动程序的编制;同时,又没有牺牲驱动程序的性能,是一套高效、快捷的PCI驱动程序开发软件包。
特别适合专业硬件人员的使用。
关键词:设备驱动程序 WinDriver PCIWinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发。
作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果。
从目前国内的资料上来看,大多数设计人员还是在用DDK、Wtools开发设备驱动程序,因而作者觉得有必要向大家介绍与推荐这个软件。
WinDriver是一套设备驱动程序开发组件,它的目的就是方便Windows程序员快速开发出PCI/ISA设备的Wind ows驱动程序(目前最新的版本V4.32还支持PCMCIA、USB设备的驱动程序的开发,并且除了支持Windows 9X/NT系统外,还有支持Unix、Windows CE的版本推出)。
利用WinDriver开发设备驱动程序,不需要熟悉操作系统的内核,整个驱动程序中的所有函数都是工作在用户态下的,通过与WinDriver的.Vxd或者.Sys文件交互来达到驱动硬件的目的。
由于是一个用户态程序,效率的高低也就成了人们选择WinDriver时关心的一个问题。
大量实践数据表明,WinDriver并没有通过牺牲系统性能来换取驱动程序的快速开发,的确是一个“像开发用户态程序那样简单,像核心态程序那样高效”[1]的开发工具。
图1是WinDriver的体系结构图。
1 WinDriver主要特征·提供了从用户层访问硬件的简单方法;·能够方便地将性能要求特别苛刻的部分通过Windriver提供的API插入到核心态模式运行,提高执行效率;·对主流PCI接口芯片(AMCC、PLX、V3系列)提供了很好的支持;·可以利用常见的软件开发平台(Visual C++、Borland C++、VB4、Java、Delphi);·支持I/O、DMA、中断处理,支持PCI、ISA、EISA设备的开发;·无需DDK以及核心态程序开发的经验。