APP下载

基于EZ-USB FX3的驱动程序设计

2016-07-23刁节涛孙兆林

电子科技 2016年7期
关键词:外设驱动程序框架

刘 杰,刁节涛,李 楠,孙兆林

(国防科学技术大学 电子科学与工程学院,湖南 长沙 410073)



基于EZ-USB FX3的驱动程序设计

刘杰,刁节涛,李楠,孙兆林

(国防科学技术大学 电子科学与工程学院,湖南 长沙 410073)

摘要USB3.0数据传输接口以其在传输速度方面具有的优势正逐渐取代USB2.0接口成为电子设备接口的主流,驱动开发需求也与日俱增。传统的Driver Studio+WDM驱动设计方法难度大、耗时长,已无法满足现实应用需求。文中采用全新的WDF驱动架构,通过通用驱动程序改进的方法,在Visual Studio2013+WDK8.1的开发、编译环境下进行了USB3.0驱动程序设计。实验结果表明,该方法设计的驱动可稳定运行,有效地降低了驱动开发难度,并且缩短了开发周期。

关键词USB3.0驱动;WDF; EZ-USB FX3

USB(UniversalSerialBus)接口自诞生以来已经走过了10多年的历史,其具有廉价、易用、传输速度快、兼容性好等一系列优点,被广泛用于电子设备的数据传输接口。以前,USB开发者采用WDM的驱动模式进行Windows操作系统下的USB驱动开发,但在Windows操作系统经历了Win7、Win8和最新的Win10革新之后,原始的WDM模式已经无法满足现实的驱动开发需求。因此,WDF这种新的驱动开发模式应运而生。

赛普拉斯的EZ-USBFX3是新一代USB3.0外设控制器,其集成了USB3.0和USB2.0 传输接口和32位ARM926EJ-S微处理器[1],具有强大的数据处理能力,在数据传输领域充当着重要角色。本文利用赛普拉斯公司的EZ-USBFX3硬件平台,采用WDF的驱动架构对USB3.0的驱动开发进行了探索,并在Win7操作系统下进行了验证,对其他Windows驱动程序的开发具有重要的参考价值。

1EZ-USB FX3

EZ-USBFX3是赛普拉斯公司生产的新一代集成了ARM9处理器的USB3.0外设控制器,开发者利用EZ-USBFX3可方便地将USB3.0传输接口集成到任何数据传输系统中,实现海量数据的快速传输。FX3集成了USB3.0和USB2.0的物理层,利用ARM9强大的数据处理功能能访问外设中的数据流并高效的处理数据。EZ-USBFX3集成了高速USB数据传输接口,支持USB外设功能,符合USB3.0规范,并能向下兼容USB2.0规范。EZ-USBFX3具有支持高速、全速和低速OTG角色转换的功能,可支持16个输入端点和16个输出端点。当作为外设时,FX3具有实现超速、高速和全速的功能,作为主机时具有可实现高速、全速和低速的功能。

2USB3.0驱动设计及实现

2.1WDF驱动模式

WDF驱动模式包含了两套子框架系统,即KMDF框架和UMDF框架。其中,KMDF框架是用来编写内核驱动的,而UMDF框架则是用来编写用户层驱动。如无特殊说明,WDF框架就指的是KMDF框架。

早期的驱动开发都是基于WDM驱动框架的。由于对IRP的管理、使用失措而导致的驱动问题是WDM程序的一大难点,微软后来放弃了该驱动模型,开发出了基于对象技术的KMDF驱动模型。KMDF驱动模型大幅减少了驱动开发者的代码书写量,缩短了驱动程序开发周期,同时也大幅降低了驱动编写出错的概率。

KMDF驱动程序框架由对象和事件回调例程构成[2]。一个USB设备的KMDF驱动程序通常包括一个DriverEntry例程、一个EvtDriverDeviceAdd例程、一个或多个I/O队列、一个或多个I/O事件回调例程、电源管理例程以及其他回调例程。这种基于对象的WDF驱动模式能够兼容WDM模式的驱动,其优越性是WDM驱动模式无法比拟的。

2.2驱动工作原理

USB接口传输数据时,首先由USB主控制器发出请求和数据,通过根集线器逐层向下发给USB设备,从设备对接收到的请求做出响应后再逐层向上返回给USB主控制器,由主控制器将数据交给计算机CPU进行处理,如图1所示。

图1 USB接口信息传递模型

USB驱动程序在信息过程中起着重要的枢纽作用。应用程序将传输数据保存在内存缓冲区中,然后向相应的USB设备发出数据传输请求,USB设备的驱动程序对IRP(I/O请求包)做出响应,将接收到的数据转化成USB协议中规定的事物处理格式。USB主控制器将接收到的每一个事物处理以数据帧的形式放进事物处理队列中,然后通过USB接口电缆将事物处理以消息包的形式发送到USB总线上。USB功能设备从总线上接收到信息后对数据包进行解析,并将解析后的数据保存在端点缓冲区中。

2.3USB3.0驱动设计

USB驱动属于设备驱动,是沟通USB主机与外部USB设备之间的桥梁。常见的USB驱动开发有两种方法:一种是采用WDK程序生成的KMDF基本框架进行各种例程的设计,这种驱动开发过程相当复杂,耗时长,且在开发过程中极容易出现因USB主机内存泄露而导致蓝屏或死机的情况;另一种方法就是在现有通用驱动的基础上进行修改,通过添加或删除相应的例程而完成驱动设计。其实现在有诸多优秀的USB通用驱动程序,如微软的通用USB驱动程序。这种通过合理利用通用驱动程序的方法可加快USB设备驱动程序开发的速度,降低开发难度,提高驱动的稳定性。文中采用第二种方法,在VisualStudio2013+WDK8.1的开发和编译环境下,利用微软提供的通用USB2.0驱动程序完成了基于EZ-USBFX3硬件平台的USB3.0驱动程序开发。

在Windows系统中,一个设备的驱动安装程序包含两个文件,后缀名为.sys的驱动文件和后缀名为.inf的驱动引导安装文件。本文利用微软官网提供的ezusb.sys通用USB驱动模板,通过修改IOCTL驱动接口开发USB3.0的.sys文件,其中主要差异如表1所示。上层应用程序通过调用DeviceIOControl()函数获得IOCTL接口的返回值,从而实现与底层硬件设备的指令和数据交互[3-6]。完成.sys文件设计后,还要对.inf文件进行设计,提供对.sys文件的安装支持,以确保硬件设备在连接主机之后能够被正确配置。每一个USB设备均有一个独特的VID和PID,需要根据实际情况来修改VID和PID的值以适应硬件的改动,本文对应设备的VID和PID的值如下:

[Microsoft.NT$ARCH$]

;USB系列芯片的ID

%USBVID_04B4&PID_00F0.DeviceDesc%=kmdf_CyUSB.Dev,USBVID_04B4&PID_00F0

在inf文件的[string]节下列出了设备的字符串信息,开发者需要根据需求修改这些字符串,本文修改代码如下

[Strings]

MSFT=”ESSS_LIUJIE”

MfgName=”ESSS”

Disk_Description=”EZ-USBFX3InstallationDisk”

USBVID_04B4&PID_00F0.DeviceDesc=”WDFSampleBusDriverforEZ-USBFX3DevelopmentKit”

kmdf_CyUSB.SvcDesc=”WDFSampleBusDriverforEZ-USBFX3DevelopmentKit”

ClassName= “SampleDevice”

Switch.DeviceDesc= “EZ-USBFX3Sample”

SPSVCINST_ASSOCSERVICE= 0x00000002

通过对.inf文件和.inf文件的设计,可编译生成一个完整的USB驱动程序,其他Windows驱动程序的开发过程与此类似。本文在VisualStudio2013+WDK8.1的配置环境下最终设计、编译生成了EZ-USBFX3的设备驱动程序。

表1 ezusb.sys和cyusb3.sys的IOCTL接口对照表

2.4驱动安装

USB设备驱动程序的安装过程如图2所示。USB设备插入主机后,操作系统会自动搜索驱动程序,当无法找到合适的驱动程序时,系统会提示安装自定义驱动程序,此时找到.inf文件所在的目录。操作系统读取.inf文件中的硬件ID信息,并与USB设备的ID比对,当匹配成功后,操作系统会将驱动程序(.sys文件)和相应的.inf文件复制到系统驱动目录下,并将硬件设备的基本信息保存在注册表中,等到下一次插入该USB设备时,操作系统便会自动加载相应驱动程序,无需再次手动安装。

3测试结果

将EZ-USBFX3设备连接到主机USB接口上,主机会对相应的接口进行枚举操作,当检测到有硬件设备接入后,系统会提示安装驱动程序。指定.inf文件所在的目录,操作系统读取.inf文件中的硬件ID信息,并与USB设备的ID比对,匹配成功后,操作系统会将驱动程序(.sys文件)和相应的.inf文件复制到系统驱动目录下,实际驱动安装效果如图3所示。成功安装驱动程序后,通过设备管理器可以看到设备的详细信息。打开USBControlCenter客户端,可在左侧面板上看到该USB设备的一些基本信息,该USB设备即可正常工作,如图4所示。

图2 USB设备驱动程序安装流程

图3 USB设备驱动程序安装效果图

图4 USB设备驱动验证结果

4结束语

本文分析了USB设备驱动程序的工作机制,采用WDF的驱动模式,在VisualStudio2013+WDK8.1环境下通过通用USB驱动程序改进的方法设计了基于赛普拉斯公司EZ-USBFX3硬件设备的驱动程序。该设计方法大幅降低了USB3.0驱动开发难度,缩短了开发周期,且所设计的驱动程序具有较好的稳定性、兼容性与可移植性。经过测试,所设计的USB3.0驱动程序在Win7操作系统下运行稳定、可靠,为其他驱动程序的开发提供了参考。

参考文献

[1]郑杰.USB3.0编程宝典[M].北京:电子工业出版社,2013.

[2]武安河.Windows设备驱动程序WDF开发[M].北京:电子工业出版社,2009.

[3]CypressSemiconductor.CypressCyAPIprogrammer’sreference[M].SanJose,CA,USA:CypressSemiconductor,2011.

[4]SkottKim.USB3.0EZ-USBFX3orientation[M].SanJose,CA,UAS:CypressSemiconductor,2011.

[5]CypressSemiconductor.CypressCyAPIprogrammer’sreference[M].SanJose,CA,USA:CypressSemiconductor,2011.

[6]CypressSemiconductor.EZ-USBFX3developmentkitguide[M].SanJose,CA,UAS:CypressSemiconductor,2011.

[7]代月松.USB3.0在存储测试系统中的研究[D].太原:中北大学,2013.

[8]张佩,马勇,董鉴源.竹林蹊径:深入浅出Windows驱动开发[M].北京:电子工业出版社,2011.

[9]文治洪,胡文东,李晓京,等.基于PL2303的USB接口设计[J].电子设计工程,2010,18(1):32-34.

[10]范玉磊,谢昌斌,付丽琴.基于DriverStudio的WDM型USB设备驱动的开发[J].核电子学与探测技术,2011,31(2):232-234.

[11]周立功.USB2.0与OTG规范及开发指南[M].北京:北京航空航天大学出版社,2004.

Driver Design Based on EZ-USB FX3

LIUJie,DIAOJietao,LINan,SUNZhaolin

(SchoolofElectronicScienceandEngineering,NationalUniversityofDefenseTechnology,

Changsha410073,China)

AbstractUSB3.0 data transfer interface is gradually replacing the USB2.0 interface as the protagonist of the electronic device interface with its significant advantages in terms of transmission speed and the needs for driven development are also increasing. The traditional driver design approach with Driver Studio + WDM structure fails to meet the needs for real-world applications due to the complex structure and the huge time consumption. In this paper, the USB3.0 driver is designed with a new WDF driver architecture in Visual Studio2013 + WDK8.1 development and compilation environment by the universal driver improved method. Results show that the driver designed by this method works stably, effectively reducing the driver development effort and shortens the development cycle.

KeywordsUSB3.0 driver; WDF; EZ-USB FX3

收稿日期:2015- 11- 18

作者简介:刘杰(1992-),男,硕士研究生。研究方向:嵌入式系统与固态存储技术。

doi:10.16180/j.cnki.issn1007-7820.2016.07.020

中图分类号TP334.7

文献标识码A

文章编号1007-7820(2016)07-068-04

猜你喜欢

外设驱动程序框架
框架
广义框架的不相交性
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
关于原点对称的不规则Gabor框架的构造
基于Hadoop的DDoS检测框架
外设天地行情
外设天地行情
外设天地行情
外设天地行情