ob欧宝体育综合
Shenzhen Jeidar Electronics Co., Ltd.

当前位置

USB 接口驱动程序开发
来源:ob欧宝体育综合 | 作者:ob欧宝体育综合 | 发布时间: 2022-09-29 18:26:48 | 24 次浏览 | 分享到:
  跟着微机技能水平的日益进步,传统的计算机接口现已不能满意当时计算机高速开展的需求,计算机业迫切需要

  跟着微机技能水平的日益进步,传统的计算机接口现已不能满意当时计算机高速开展的需求,计算机业迫切需要一种新的通用型、高速总线接口,通用外设接口规范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 技能, 使得US B 不只支撑1 . 5Mb / s 的“低速”, 传输和12Mb/s 的“全速”传输,并且支撑480Mb/s 的“高速”

  传输,比USB1.1 规范快40 倍左右,速度的进步关于用户的最大优点便是意味着用户能够运用到更高效的外部设备, 并且具有多种速度的周边设备都能够被连接到USB 2.0 的线路上,并且无需忧虑数据传输时产生瓶颈效应。

  USB 总线接口包括USB 主操控器和根集线器,其间USB 主操控器担任处理主机与设备之间电气和协议层的互连,根集线器供给USB 设备连接点。USB 体系运用USB 主操控器来办理主机和USB 设备之间的数据传输,别的它也担任办理USB 资源,如带宽等。应用软件不能直接拜访US B 设备硬件, 而经过US B 体系和USB 总线接口与USB 设备进行交互。

  USB 设备包括一些向主机软件供给一系列USB设备的特征和才能的信息的设备描述符, 用来装备设备和定位USB 设备驱动程序。这些信息保证了主机以正确的方法拜访设备。一般, 一个设备有一个或多个装备( C o n f i g u r a t i o n ) 来操控其行为。装备是接口( Int er fa ce )的调集,接口指出软件应该怎么拜访硬件。

  接口又是端点(endpoint)的调集,每一个与USB 交流数据的硬件就为端点, 它是作为通讯管道的一个结尾。

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

  由于I /O 办理器把每一个设备对用户程序都笼统成文件,所以用户程序经过调用文件操作API 函数就能够完结与驱动程序中某个设备的通讯。

  用户程序发送的恳求由I /O 办理器转换为具有不同主功用代码的IRP ( I /O 恳求包) 发送给功用驱动程序。功用驱动程序接纳该IRP,在回调程序中依据IRP中包括的详细操作代码, 结构相应的US B 恳求, 把它放到一个新的IRP 中,并把这个新的IRP 传递给USB总线驱动程序。USB 总线驱动程序依据IRP 中所包括的USB 恳求块履行相应操作, 再将操作成果经过IRP返还给功用驱动程序, 功用驱动程序接纳此IRP , 将操作成果经过IRP 返还I/O 办理器。终究,I/O 办理器将此IRP 中的操作成果回来给应用程序。至此, 应用程序对USB 设备的一次I /O 操作完结, 其处理流程如图2 所示。

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

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

  大多数的PDO 都是在PnP 办理器调用该程序进口点时被创立的。刺进新设备后, 体系启动时, 总线枚举器会查找总线上的一切设备,主动寻觅并装置设备的驱动程序,并由驱动程序中的处理PnP 功用模块主动处理AddDevice()。本程序运用CreateDevice()函数创立设备目标,再运用RegiSTerDevicelnterface()函数将设备组成一个特定的设备接口,然后经过AttachDeviceToDeviceStack()函数相关设备栈。

  该函数是完结本驱动程序功用的要害, 它用来与ARM 进行通讯。剖析发送的恳求数据后依据指令的详细意义对ARM 进行读写操作。应用层经过调用规范的ARM 板函数来发送I/O 恳求。

  跟着支撑USB 的个人电脑的遍及,很多支撑USB接口外设的不断涌现, 以及USB 技能的开展和不断完善, 因而依据USB 驱动程序的开发也将成为这一开展趋势的重中之重。本文介绍了USB 的通讯模型, 剖析了依据WDM 的USB 驱动开发的要害所在,结合ARM驱动程序开发介绍了DDK 开发环境的构建,终究结合实际体系完结了依据DDK 的USB 接口WDM 驱动开发和调试。