基于KMDF的PCIExpress设备驱动设计

3212014年1月JournalofXi’anAeronauticalUniversityVol.32No.1Jan.2014基于KMDF的PCIExpress设备驱动设计张小磊,孟李林,崔晨琪(西安邮电大学电子工程学院,陕西西安710061)摘要:针对微软推出的新一代的驱动模型框架WDF,介绍了其内核模式驱动开发的框架KMDF,设计实现了一种针对PCIExpress端点设备的驱动程序,使用自主研发的基于FPGA的PCIExpress数据加密卡对其进行了验证,实验表明基于KMDF的驱动程序能稳定、可靠地工作。关键词:KMDF;PCIExpress;FPGA;设备驱动中图分类号:TP302文献标识码:A文章编号:1008-9233(2014)01-0059-05设备驱动是计算机系统里软硬件交互的接口,是计算机操纵硬件的基础,它的性能在很大程度上影响着整个系统的性能。KMDF是微软推出的下一代驱动模型WDF中的内核模式驱动程序框架,意在取代从WINDOWS2000就开始使用的WDM模型。其旨在为开发者提供一个面向对象的事件驱动开发框架,并封装了驱动与操作系统的接口使开发者可以更关注驱动需要操控的硬件,以改变长久以来驱动程序作为硬件和操作系统的连接,既要处理硬件行为,又要与操作系统内核交互而导致的开发难度大,开发门槛高等问题。KMDF是WIN-DOWS7/8首先的驱动模型。PCIExpress是一种应用于各种计算与通信平台的高性能、通用、串行I/O互连协议。它采用包交换技术、Ack/Nak协议以及流量控制技术,实现报文的高速高可靠传输。此外,PCIExpress协议保持与现有PCI设备的软件兼容性,而且可以用较低的开销提升现有PCI系统的性能,在PC机及嵌入式系统中得到了广泛的应用。因此研究基于KMDF驱动框架的PCIExpress驱动设计具有现实意义。本文介绍KMDF的对象模型和I/O模型,并介绍一种基于KMDF的PCIExpress设备驱动程序的设计。1KMDF模型1.1KMDF对象模型KMDF是内核模式驱动开发的框架,它定义了基于对象的编程模型,可以通过一系列层次化组织的对象以及与对象相关联的方法和属性来表示设备、驱动、队列等信息。KMDF对象模型中定义的主要的对象以及其层次如图1所示:图1KMDF中的主要对象及其层次图1中KMDF框架定义的主要对象有:(1)WDFDRIVER:WDF驱动对象,所有对象的根对象,描述一个驱动程序在内存的实例,维护驱动程序的相关信息,如驱动的入口点,加载位置,收稿日期:2013-10-18作者简介:张小磊(1987-),男,陕西宝鸡人,硕士研究生,从事专用集成电路设计研究。60西安航空学院学报第32卷可以管理的设备等。每一个驱动程序在内存中有且仅有一个WDFDRIVER对象。(2)WDFDEVICE:WDF设备对象,系统中具体硬件的抽象,代表驱动程序可以控制的硬件设备,用户程序可以通过定义的设备接口访问设备。WDFDEVICE也可以是虚拟设备。(3)WDFQUEUE:WDF队列对象,一个特殊的I/O请求队列,它定义了一系列回调函数,当I/O请求进入队列时,框架将自动调用对应的回调函数处理。(4)WDFINTERRUPT:WDF中断对象,定义了设备中断使能,禁止回调函数和设备中断的服务程序和DPC例程。1.2KMDFI/O模型KMDF建立了自己的I/O模型,可以截获发送给本设备驱动程序的所有IRP。当IRP到达时,分发器根据IRP的主功能码把IRP分发到I/O请求队列或者电源管理队列,框架会在适当的时间自动的调用已经注册的回调函数。I/O流程如图2所示:图2I/O通过KMDF库和驱动程序流程KMDF的I/O队列管理那些针对驱动程序的请求。驱动程序通常创建一个或多个队列,每个队列可以接受一种或多种类型的请求。调度方法决定给定时间内驱动程序可服务的请求数量。2PCIExpress高速数据处理卡PCIExpress作为高速串行I/O技术已经在现...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?