返回首页
当前位置: 主页>USB开发应用>

通用串行总线(USB)设备的驱动

时间:2018-01-11 20:10来源:USB开发群 作者:USB开发频道 点击:

  

摘要:从问题的由来、类驱动程序、通信协议、描述符、驱动开发等对USB的驱动进行分析和讨论,提出USB设备使用操作系统嵌入的通用类驱动程序成为趋势。 dedecms.com

关键词:USB 类驱动程序 人工接口设备(HID) Windows驱动程序模型(WDM) 本文来自织梦

最初设计USB(Universal Serial Bus)这种外设总线的目的之一就是为了便于使用,这是计算机发展的产物。外设总线最重要的就是操作系统对外设的自动识别、配置,实现热插拔,即插即用。本文试图以人工接口设备(Human interface device,简称HID)为主,从问题的由来、类驱动程序、通信协议、描述符、驱动开发等几个方面来探讨一下USB设备的驱动问题。 织梦内容管理系统

1 问题的由来 织梦好,好织梦

一个非常简单的设备安装有时得花用户好几天时间,原因何在?设备的驱动与其他的驱动程序或软件不兼容,或隐有bug。如果操作系统本身就含有用户需要的驱动程序,设备一插就能使用,这是最好不过的事情。

dedecms.com

现已有上千种不同的设备,

通用串行总线(USB)设备的驱动 本文来自织梦

许多功能大致一样。操作系统不可能为所有的设备提供全部的驱动程序。仔细考虑一下,许多设备可归属为少数几个具有普遍特性和需求的类,因而为每种类定义一个通用的API接口,写出通用的驱动程序是可实现的。 织梦内容管理系统

通过定义不同的设备类型,USB试图实现通用驱动程序这一目标。在USB规范里,除定义了基本的协议和构造用来配置设备和传输数据,还为所有的USB设备定义了机械和电器件性能要求。USB规范定义了通信、打印、图像、储存、音频和人工接口设备等类。一些设备是单一的类,一些是多种类的综合体。具有多种类的设备称为混合设备,在USB规范对设备有详细的划分。 织梦好,好织梦

2 类驱动程序 本文来自织梦

由于一些类尚未形成标准,Win2000只包含了部分USB类的驱动程序。一旦形成标准得到认可,通用的驱动程序也就自然嵌入到操作系统了。图1为操作系统中USB驱动接口框图。这是一个标准的Windows驱动程序模型(WDM),是一种分层模式。核心USB Driver Stack模型描述设备如何安装和启动,以及如何为用户请求服务和与硬件打交道,并为上层USB驱动提供接口。上层驱动完成设备功能并为用户层提供接口,这使得向USB总线发出请求是通过多层结构。 copyright dedecms

HID类是为一些人工的输入或输出设备而设计的,最常用的象键盘、鼠标、游戏控制器。这种类同时也包含了前面板显示区和键盘区(象电话或VCR远程控制),还有触觉和听觉反馈设备。对于HID类的设备,操作系统已经给出了相应的驱动程序。

copyright dedecms

连接到计算机的USB设备几乎都包含HID类,用以信号控制。比如一个USB扬声器,音量、音调控制用HID类,但音频数据传输用音频类。 织梦好,好织梦

通常情况下,USB设备与主机通信是经过USB端口,类驱动程序无须担心或考虑ISA总线、PCI总线、SCSI、IDE或ATAPI接口、串口、并口、键盘或鼠标口、游戏接口及相关的一些东西。类驱动程序甚至不需要了解SUB端口,这个物理接口被USB主机驱动程序管理形成抽象层,也正因为这个抽象层及其他相应层,使通用使驱动程序成为可能。每一层有自己的功能,并为上一层提供了API接口,上层没有必要了解下一层如何工作及内部体系结构,各层为一个封装体。 本文来自织梦

图2所示为USB各层之间通信流程。USB用明确定义了的层协议来减少复杂化且有利于标准化,各层均有连接,但大多为逻辑型的。最低层的是USB主机控制器和USB设备接口之间的物理连接,包括连接线、连接器、状态机。其次在计算机方面为USB主机驱动程序,这是操作系统所必须的。在设备方是用于设备管理和请求的固件程序(Firmware),此层是配和和控制USB接口的逻辑连接。第三层在主机方是设备驱动程序,通常称为类驱动程序;在设备方是类属性的固件程序,通过逻辑连接用于特殊类的控制和请求。最顶层为用户层,为用户所关心和考虑,比如在主机客户方为飞行模拟仿真,在设备方则为操纵杆。此时用户所关心的是操纵杆的输入,不用考虑这些输入如何读、如何打包、如何传输。

内容来自dedecms

3 通信协议 copyright dedecms

与USB设备进行通信,主机软件打开一系列的管道来传输数据。不同的管道对应于USB的不同端口(endpoint)。USB有四种传输方式,分别为控制、中断、同步和批量,每种方式对应各自的管道。除同步方式外,均有握手信号,保证了数据传输的准确性。 织梦内容管理系统

一般的USB设备通常用控制、中断或数据管理,如图3所示。

通用串行总线(USB)设备的驱动 内容来自dedecms

数据管道是单向的,用于批量或同步传输方式时使用。HID设备通常仅用控制和中断两个管道。控制管道为缺省,也可被USB设备用来接收、响应特殊的请求或命令。中断管道向主机异步发送数据,其它USB不支持真正的中断,而是用来传输无时序特征的信号变化。比如按下键、鼠标移动、操纵杆运行,不用特殊的请求就可实时地传输数据。

copyright dedecms

每一种数据传输方式中包含了多个事务数据,这些数据被综合完成一定功能。一个事务数据由三个部分组成:信令包段(Token Packet phase)、数据包段(Data Packet phase)、握手信号包段(Handshade Packet phase)。信令包定义了事务的类型,设备的地址也包含在其中。一些信令包单独存在,后面没有跟别的包。数据包里包含了与传输有关的负载。在单个的事务数据最大承载1023个字节。 织梦好,好织梦

基于相同的管道配置和命令、通用的API接口,USB设备通用驱动程序得以实现,设备之间的差异则使返回的数据结构不同。

copyright dedecms

4 描述符 本文来自织梦

USB设备用预先定义好的数据结构来表示他们的标识符、性能、请求和协议,通常称为描述符。设备一插入到主机,操作系统就能立刻根据描述符找到与之相对应的类驱动程序,完成USB设备的枚举及其他功能。在USB规范里定义了必要的设备、配置、接口、端口、字符串描述。HID类除些之外又定义了报告描述符。报告描述符提供了HID类驱动程序能理解和解释的报告,报告虽然灵活但却很复杂。描述符可用固件程序来写,编译生成二进格式后储存到设备中使用,便于类驱动识别和解释。

织梦好,好织梦

下面是作者设计的一个利用EZUSB芯片提供的I2C连接多部医监设备的报告描述符。图4为报告描述符所表达的数据结构。 内容来自dedecms

ReportDescriptor: ; Generated with HID Tool,copoed to here 织梦好,好织梦

DB 6,0,0FFH ; Usage_Page (Vendor Defined) 内容来自dedecms

DB 9,1 ; Usage (I/O Device)

织梦好,好织梦

DB 0A1H,1 ;Collection (Application)

copyright dedecms

DB 19H,1 ; Usage_Minimum

copyright dedecms

DB 29H,2 ; Usage_Maximum 织梦好,好织梦

DB 15H,0 ;Logical_Minimum (0) 织梦内容管理系统

DB 26H,255,0 ; Logical_Maximum (255) 织梦内容管理系统

DB 75H,8 ; Report_Size (8) 织梦好,好织梦

DB 95H,1 ; Report_Count (1) = Read Address 本文来自织梦

DB 81H,2 ; Input (Data,Var,Abs) 织梦好,好织梦

DB 19H,1 ; Usage_Minimum

通用串行总线(USB)设备的驱动

织梦内容管理系统

内容来自dedecms

DB 29H,2 ; Usage_Maximum

织梦内容管理系统

DB 95H,2 ; Report_Count (2) =Write Address+Data

内容来自dedecms

DB 91H,2 ; Output (Data,Var,Abs)

内容来自dedecms

DB 0C0H ; End_Collection 内容来自dedecms

ReportLength EQU $-ReportDescriptor

本文来自织梦

5 驱动程序的开发

copyright dedecms

对于USB设备来说,开发驱动程序是一件比较复杂的事情。通常驱动程序要实现以下的功能:

内容来自dedecms

·设备的初始化;

内容来自dedecms

·即插即用创建和删除设备; 织梦内容管理系统

·处理Win32打开和关闭文件句柄的请求; 织梦好,好织梦

·类功能定义IOCTL(I/O Control)、功能实现; dedecms.com

·IRP(I/O Request Packet)的调用处理;

织梦内容管理系统

·调用其他的驱动程序; 织梦好,好织梦

·访问硬件。

本文来自织梦

USB驱动程序设计的核心是端点(Endpoint)及数据传输类型的选择,通过端点建立起管道通信,实现定义的功能。这样,在应用层和设备之间就建立起了虚拟的通道,所有这些通过多线程的句柄调用实现。

织梦好,好织梦

每个驱动程序都必须有一个DriverEntry入口函数,用于系统调用。

织梦内容管理系统

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath) 本文来自织梦

{

copyright dedecms

NTSTATUS status = STATUS_SUCCESS; copyright dedecms

// Export other driver entry points... copyright dedecms

DriverObject->DriverUnload = USBUnload;

通用串行总线(USB)设备的驱动

织梦内容管理系统

本文来自织梦

DriverObject->MajorFunction[IRP_MJ_CREATE]=USBCreate; dedecms.com

DriverObject->MajorFunction[IRP_MJ_CLOSE]=USBClose; 织梦好,好织梦

DriverObject->MajorFunction[IRP_MJ_READ]=USBRead; 内容来自dedecms

DriverObject->MajorFunction[IRP_MJ_WRITE]=USBWrite;

织梦内容管理系统

DriverObject->MajorFunction[IRP_MJ_DEVICE.html" target="_blank" title="DEVICE">DEVICE_CONTROL]=USBDeviceControl;

copyright dedecms

RegisterForPnpNotification(DriverObject); 内容来自dedecms

Return status; copyright dedecms

} 织梦好,好织梦

写驱动程序的软件较多,目前比较流行的软件是DriverStudio、WinDriver等。它们均提供用于生成USB驱动的代码生成器,用户按照提示可以定义设备的配置和功能,然后做功能修改即可。利用软件提供的例子进行修改也是一个比较好的捷径。 copyright dedecms

USB技术的应用,是计算机产业的一大发展。目前以微软为代表的各大公司积极对其进行开发,使得应用越来越广泛。微软操作系统集成了HID类、音频类的USB驱动程序。作者用EZUSB以HID类连接医监设备,不用写驱动程序在Win2000上运行良好。针对开发USB器件的需要,作者根据HID规范定义了自己特殊的类并重新写上写的类驱动程序,测试较为满意。从长远的角度来看,操作系统通过集成类驱动程序来支持各种USB设备势在必行。

dedecms.com






秦华 『上海买保险』上海地区人寿保险资深寿险顾问 上海外籍人士买保险-高端人士医疗办理
服务项目:儿童医疗/子女教育金/养老保险/重大疾病/意外伤害/员工团险/公众责任
免费热线『上海』:13761630213, QQ:107242375, Email:victor.qin@qq.com
选择保险事业 为了爱,为了一份坚定的承诺!MSN:
上海地区请直接拨打本人电话,应约免费上门提供免费保险方案。
Baoxian.ws>>           旅行签证保险、上门办理>>        重大疾病网>>     上海重大疾病一览    
友情链接: 走在上海人寿保险的前端    和讯保险博客    上海投保在线    Shanghai Insurance    秦华的个人简历


顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
图文并茂 我的链接
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
上海高端医疗/住院医疗保险信息
上海保险规划师信息
上海子女教育理财保险信息
上海保险规划师信息
上海女性高端生育保险方案-等待期
上海保险规划师信息
上海三口之家家庭保障方案
上海保险规划师信息
上海女性特色重大疾病保险方案
上海保险规划师信息
上海女性白领理财保险方案
上海保险规划师信息
上海养老理财规划保险方案
上海保险规划师信息
通过网络取得初步咨询
  •    
上海办理-免费咨询送计划书
上海买保险
上海办理-申根签证 出国旅行保险
上海买保险
上海买保险,海外基金,买保险,友邦保险,中国人民健康保险,养老保险,儿童保险,儿童医疗,子女教育金,太平洋保险,医疗保险,工伤保险条例,中国人寿保险,保险公司,中国平安保险,医疗险,进口药,自费药,外籍人士医疗,泰康人寿,英国保诚集团,上海综合保险,国际医疗保险,上海医疗保险,上海社会保险,上海养老保险,上海市综合保险,上海平安保险,上海太平洋保险,和睦家医院,上海综合保险卡,买保险,高端医疗,重大疾病,意外伤害,定期寿险,家庭理财,友邦保险,金茂大厦,少儿互助基金,上海社保,太平洋集团,港安医院