使用WinDriver开发PCI接口驱动程序
2019-04-03 18:08:45 来源:华启智能
概述
Windwos操作系统通常采用驱动程序作为桥梁来操作硬件。用户应用程序和计算机的硬件资源通过驱动程序来进行通信和交换数据。因此对USB/PCI/PCI-E接口设备的开发需要设计驱动程序。
目前,驱动程序开发常用的方式有三种,微软公司的DDK(Driver Devlopment Kit驱动开发工具包)工具,Compuware公司的Driver Studio工具和Jungo公司的WinDriver工具。
WinDriver主要特征
-
提供了从用户层访问硬件的简单方法;
-
能够方便地将性能要求特别苛刻的部分通过Windriver提供的API插入到核心态模式运行,提高执行效率;
-
对主流PCI接口芯片提供了很好的支持;
-
可以利用常见的软件开发平台(Visual C++、Borland C++、VB、Java、Delphi、Python);
-
支持I/O、DMA、中断处理,支持PCI、ISA、EISA设备的开发;
-
无需DDK以及核心态程序开发的经验。
WinDriver程序结构图
下面使用WinDriver评估版来开发KPCI-8210 CAN卡驱动程序,
一. 准备
a. 将KPCI-8210 CAN卡插入电脑空闲PCI插槽中
b. 安装WinDriver评估版
二. 使用DriverWizard诊断硬件设备
a. 开启DriverWizard:选择「开始」 →「程序」 → 「WinDriver」 → 「DriverWizard」(或者直接执行Windows桌面上的快捷方式)或者执行<Path to WinDriver > /wizard/wdwizard(注:若操作系统为Windows 8 / 7 或 Vista,你需要用管理员来运行DriverWizard 。
b. 在视图中点选「New host driver project」
c. DriverWizard将会显示所有你在主机中即插即用的插卡。从列表中选择设备
三. 为设备生成INF文件,安装WinDriver驱动
在Windows操作系统中,你需要创建并安装INF文件来注册PCI设备以便使用WinDriver,若没有执行过此操作,DriverWizard会提示你需要安装INF文件。
DriverWizard会自动创建 INF文件以及进入安装步骤,若想通过DriverWizard来生成并安装 INF,需要遵循以下的步骤:
-
在wizard 的「Select Your Device」目录中选择「Generate. INF file」 。DriverWizard在检测你的设备时会显示供应商身份码、设备身份码、制造商名称以及设备名称等信息,你也可以针对制造商名称和设备名称进行修改。
-
选择「Next」生成INF文件并安装。
-
若 INF安装完成,你可从上述步骤2开始从清单中选择并开启你的设备。
四. 打开硬件设备
五. 硬件测试
在编写驱动程序之前,先使用DriverWizard来诊断硬件。可以读写寄存器来测试一下硬件设备是否正常工作。
六. 生成驱动程序代码
a. 通过Generate Code的图标或者从Project |Generate Code菜单选项中选择生成代码。
b. 选择代码语言和整体代码的目标开发环境。
c. 点击OK ,DriverWizard 将会显示生成的一系列文件,并开始启动你想要开发的环境(如上述 Step b)
七. 编译并运行
-
使用你喜欢的编译器和DriverWizard所生成的文件
-
编译示例诊断应用程序并运行,该示例是你完成最终驱动程序的核心骨架。
-
根据应用程序的需求,修改示例应用程序或者以 WinDriver所提供的其它示例为起点。
八. 总结
我们在实际编写驱动程序的过程中发现,完全用WinDriver提供API来写驱动程序比在Wizard生成的框架代码上修改更为灵活。
整个驱动程序的结构大致如下:
1.打开WinDriver设备;2.查找我们要访问的PCI设备;
3.枚举该设备的资源(内存、I/O、中断);
4.锁定该设备的资源只能为我们所用,不能被其他程序访问;
5.访问板上的资源;
6.解锁资源;
7.关闭WinDriver设备。