基于WinDriver的CPCI板卡上海市轨道交通近期建设计划(2017-2025)
Windows驱动程序设计作者:先登飞来源:《现代电子技术》2013年第18期 摘 中国知识网要: 为了实现在主控计算机和信号处理板之间快速通信,采用了CPCI并行总线技术。为简化开发难度,信号处理板采用内嵌PCI模块的DSP6416数字信号处理芯片实现通信和控制功能,软件开发环境基于VC++6.0,利用WinDriver独裁国家工具开发了Windows下以DLL形式封装的CPCI驱动程序。通过实际使用验证,该驱动程序运行稳定可靠,实现了主控计算机对信号处理板的实时控制和信号处理板中结果数据向主控计算机实时上报功能。 关键词: WinDriver; Windows驱动程序; CPCI总线; VC++6.0
中图分类号: TN964⁃34 文献标识码: A 文章编号: 1004⁃373X(2013)18⁃0051⁃04
欧洲见闻录 0 引 言
外围设备互联(PCI)总线是一种先进的高性能局部总线,可同时支持多组外围设备[1]。CPCI总线应用于工业和嵌入式领域,其规范改进自PCI规范,上海市政府信息公开规定CPCI规范在电气方面兼
容PCI规范,只是在封装结构上进行了加强,CPCI板的封装结构基于IEC 60297⁃3,IEC 60297⁃4以及IEEE 1101.10定义的欧式板卡外形[2]。既然电气特性上兼容PCI规范,因此CPCI驱动程序的设计本质就是PCI驱动程序设计。
当前Windows环境下用于PCI设备驱动开发的工具主要是DDK,DriverStudio以及WinDriver。前两者功能强大,但是开发者需要熟知操作系统的体系结构、汇编语言和设备驱动程序结构体系方法,还需要具备丰富的驱动程序开发经验,否则可能造成软件不稳定甚至系统崩溃,另外前两者开发周期长。而Jungo公司开发的WinDriver改变了传统的驱动程序开发方法,其整个驱动程序中的所有函数都是工作在用户态下,使开发者不需要掌握前两者所需的预备知识就可以开发出与之相媲美的程序[3]。 为了实现在主控计算机和信号处理板之间快速通信,采用了CPCI并行总线技术,信号处理板采用内嵌PCI模块的DSP6416芯片。软件开发基于Windows平台和VC++6.0编程环境,为了便于应用程序调用驱动程序,按照模块化的软件设计思想,驱动程序以DLL动态链接库的形式封装。为提高工作效率、缩短开发周期,开发工具选用WinDriver。
1 WinDriver简介
WinDriver是一套设备驱动程序开发组件,它的目的就是方便程序员快速开发出PCI,ISA,CPCI,PCIE等设备的Windows驱动程序[4]。
1.1 WinDriver简述组织结构的特征原理
WinDriver的体系架构分为两种模式:用户模式和内核模式。对硬件进行操作时,开发者应用程序调用WinDriver用户模式的库函数,用户模式的库函数再调用WinDriver内核,WinDriver内核再调用操作系统底层函数实现对硬件的最终访问。其与硬件模板、用户驱动程序、用户应用程序之间的关系即体系架构见图1[5⁃6]。对于某些在用户模式下不能实现的高性能硬件驱动程序,可通过WinDriver的内核插件功能实现:在用户模式下完成编程和调试,不做任何修改,直接将该高性能要求的程序模块植入内核插件,WinDriver即从内核模式下调用该程序模块。 1.2 WinDriver特点
作为一款实用的驱动程序开发工具包,WinDriver的主要优点和特征如下:
(1)通过内核插件功能(Kernel PlugIn)能够实现用户模式的易用和内核模式的高
性能;
(2)友好的驱动向导允许不写一行代码即可实现硬件诊断;
(3)支持所有PCI/PCMCIA/CardBus/ISA/EISA/CompactPCI/PCIExpress设备,与制造商无关;