驱动程序USB 接口驱动程序开发

usb接口驱动  时间:2021-03-14  阅读:()

USB接口驱动程序开发

[日期 2011-04-19] 来源大白菜 作者 [字体大中小]

1引言

随着微机技术水平的日益提高,传统的计算机接口 已经不能满足当前计算机高速发展的需求,计算机业迫切需要一种新的通用型、高速总线接口,通用外设接口标准USB就应运而生。

USB,全称是Universal Serial Bus(通用串行总线) ,是一种新型的、基于令牌的、高速的串行总线标准,由Compaq、 MICroSOFt、 Intel 、 IBM等七家公司共同开发的, 旨在解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准[3] ,自 1995年在Comdex上亮相以来已广泛地为各PC厂家支持。

现在市场上几乎所有的P C机器都配备了US B接口,USB接口之所以能够得到广泛支持和快速普及,是因为它具备以下优点:

正由于上述优点,开发USB接口的设备已成为一种发展趋势。然而随着USB技术的迅猛发展,传统的USB1 . 1接口已经不能适应用户的需求,于是在1 9 9 9年在I nt e l的开发者论坛大会上又提出了USB2 . 0技术,使得USB不仅支持1 . 5Mb / s的“低速” ,传输和12Mb/s的“全速”传输,而且支持480Mb/s的“高速”

传输,比USB1. 1标准快40倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备,而且具有多种速度的周边设备都可以被连接到USB 2.0的线路上,而且无需担心数据传输时发生瓶颈效应。

2 USB驱动程序设计

一个完整的USB系统包括主机系统包括主机系统和USB设备。

所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构,如图1所示。

USB总线接口包括USB主控制器和根集线器,其中USB主控制器负责处理主机与设备之间电气和协议层的互连,根集线器提供USB设备连接点。 USB系统使用USB主控制器来管理主机和USB设备之间的数据传输,另外它也负责管理USB资源,如带宽等。应用软件不能直接访问US B设备硬件,而通过US B系统和USB总线接口与USB设备进行交互。

图1 USB通信模型层次关系。

USB设备包含一些向主机软件提供一系列USB设备的特征和能力的信息的设备描述符,用来配置设备和定位USB设备驱动程序。这些信息确保了主机以正确的方式访问设备。通常,一个设备有一个或多个配置( C o n f i g u r at i o n )来控制其行为。配置是接口( Int er fa ce )的集合,接口指出软件应该如何访问硬件。

接口又是端点(endpoint)的集合,每一个与USB交换数据的硬件就为端点,

它是作为通信管道的一个终点。

图1显示了一个多层次结构的通信模型, 它表明了端点和管道所扮演的角色。

2. 1 USB驱动程序结构

1) USB驱动程序体系结构

运行在核心态的USB驱动程序是基于WIN32驱动程序模型WDM(Windows Driver Model )的,它采用分层驱动程序模型,由USB总线驱动程序和USB功能驱动程序两部分组成, 总线驱动程序由操作系统提供,用户只需要编写相应的功能驱动程序即可。

2)处理流程

因为I /O管理器把每一个设备对用户程序都抽象成文件,所以用户程序通过调用文件操作API函数就可以实现与驱动程序中某个设备的通信。

用户程序发送的请求由I /O管理器转换为具有不同主功能代码的IR P( I /O请求包)发送给功能驱动程序。功能驱动程序接收该IRP,在回调程序中根据IRP中包含的具体操作代码,构造相应的US B请求,把它放到一个新的IRP中,并把这个新的IRP传递给USB总线驱动程序。 USB总线驱动程序根据IRP中所包含的USB请求块执行相应操作,再将操作结果通过IRP返还给功能驱动程序,功能驱动程序接收此IRP ,将操作结果通过IRP返还I/O管理器。最后, I/O管理器将此IRP中的操作结果返回给应用程序。至此,应用程序对USB设备的一次I /O操作完成,其处理流程如图2所示。

图2 W D M型的U S B驱动程序体系结构。

3 USB设备驱动程序中关键代码实现

下面是以开发的A R M读写驱动程序为例,介绍USB驱动程序中几个关键例程的实现。本驱动程序的主要功能是控制USB设备上的ARM并对ARM板进行读写操作。

1)初始化函数DriverEntry()

设备驱动程序与应用程序不同,没有main()或WinMain()函数,而是有一个名为DriverEntry()的入口函数,它通常完成一些初始化工作。当设备驱动程序被加载时,操作系统调用这个入口。

2)创建设备函数AddDevice()

大多数的PDO都是在PNP管理器调用该程序入口点时被创建的。插入新设备后, 系统启动时, 总线枚举器会搜索总线上的所有设备,自动寻找并安装设备的驱动程序,并由驱动程序中的处理PnP功能模块自动处理AddDevice() 。本程序使用CreateDevice()函数创建设备对象,再使用Regi ST erDevicelnterface()函数将设备组成一个特定的设备接口,然后通过AttachDeviceToDeviceStack()函数关联设备栈。

3) ARM的传输处理函数UsbTransmit()

该函数是实现本驱动程序功能的关键, 它用来与ARM进行通信。分析发送的请求数据后根据命令的具体含义对ARM进行读写操作。应用层通过调用标准的ARM板函数来发送I/O请求。

4结束语

随着支持USB的个人电脑的普及,大量支持USB接口外设的不断涌现,以及USB技术的发展和不断完善, 因此基于USB驱动程序的开发也将成为这一发展趋势的重中之重。本文介绍了USB的通信模型,分析了基于WDM的USB驱动开发的关键所在,结合ARM驱动程序开发介绍了DDK开发环境的构建,最终结合实际系统完成了基于DDK的USB接口WDM驱动开发和调试。

RAKsmart:美国圣何塞服务器限量秒杀$30/月起;美国/韩国/日本站群服务器每月189美元起

RAKsmart怎么样?RAKsmart是一家由华人运营的国外主机商,提供的产品包括独立服务器租用和VPS等,可选数据中心包括美国加州圣何塞、洛杉矶、中国香港、韩国、日本、荷兰等国家和地区数据中心(部分自营),支持使用PayPal、支付宝等付款方式,网站可选中文网页,提供中文客服支持。本月商家继续提供每日限量秒杀服务器月付30.62美元起,除了常规服务器外,商家美国/韩国/日本站群服务器、1-10...

木木云35元/月,美国vps服务器优惠,1核1G/500M带宽/1T硬盘/4T流量

木木云怎么样?木木云品牌成立于18年,此为贵州木木云科技有限公司旗下新运营高端的服务器的平台,目前已上线美国中部大盘鸡,母鸡采用E5-267X系列,硬盘全部组成阵列。目前,木木云美国vps进行了优惠促销,1核1G/500M带宽/1T硬盘/4T流量,仅35元/月。点击进入:木木云官方网站地址木木云优惠码:提供了一个您专用的优惠码: yuntue目前我们有如下产品套餐:DV型 1H 1G 500M带宽...

Hosteons:洛杉矶/纽约/达拉斯免费升级10Gbps端口,KVM年付21美元起

今年1月的时候Hosteons开始提供1Gbps端口KVM架构VPS,目前商家在LET发布消息,到本月30日之前,用户下单洛杉矶/纽约/达拉斯三个地区机房KVM主机可以从1Gbps免费升级到10Gbps端口,最低年付仅21美元起。Hosteons是一家成立于2018年的国外VPS主机商,主要提供VPS、Hybrid Dedicated Servers及独立服务器租用等,提供IPv4+IPv6,支持...

usb接口驱动为你推荐
百度商城百度商城里抽奖全是假的firetrap我淘宝店还是卖二单就被删,怎么回事!李子柒年入1.6亿宋朝鼎盛时期 政府财政收入有将近1亿贯铜钱,那么GDP是多少呢?罗伦佐娜手上鸡皮肤怎么办,维洛娜毛周角化修复液seo优化工具SEO优化神器有什么比较好的?8090lu.com8090向前冲电影 8090向前冲清晰版 8090向前冲在线观看 8090向前冲播放 8090向前冲视频下载地址??www.baitu.com谁有免费的动漫网站?www.vtigu.com如图所示的RT三角形ABC中,角B=90°(初三二次根式)30 如图所示的RT三角形ABC中,角B=90°,点p从点B开始沿BA边以1厘米每秒的速度向A移动;同时,点Q也从点B开始沿BC边以2厘米每秒的速度向点C移动。问:几秒后三角形PBQ的面积为35平方厘米?PQ的距离是多少www.toutoulu.com老板强大的外包装还是被快递弄断了www.147.qqq.com谁有147清晰的视频?学习学习
我的世界服务器租用 域名备案只选云聚达 网易域名邮箱 80vps simcentric bluehost godaddy优惠券 中国智能物流骨干网 dd444 爱奇艺会员免费试用 双线机房 香港亚马逊 工信部网站备案查询 摩尔庄园注册 如何登陆阿里云邮箱 国内空间 hdsky 优惠服务器 达拉斯 电脑主机声音大 更多