




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1驱动类型介绍驱动类型介绍USBKey产品相关的驱动类型产品相关的驱动类型2 2驱动类型划分驱动类型划分q USB (通用)q HID (人机接口设备 )q USB Mass Storage (大容量存储设备 )(设备连接、系统识别、系统与设备通讯)3 3涉及到的通讯协议涉及到的通讯协议q USBq USB-HIDq USB Mass Storage4USBUSB设备与驱动程序设备与驱动程序5USBUSB设备连接方式设备连接方式 USB主控制器与其它I/O设备一样直接连接到系统总线上。操作系统与主控制器通信使用I/O口或内存寄存器,通过普通的中断信号,系统可以接受主控制器的事件通知。主控制器连
2、接一棵USB设备树。一种称为hub的设备作为其它设备的连接点。多个hub能以菊链方式连接,可以连接到USB规范中定义的最大深度。 6USBUSB设备内部逻辑结构设备内部逻辑结构7USBUSB协议规定:设备描述符协议规定:设备描述符Device Descriptor:bcdUSB: 0 x0110bDeviceClass: 0 x00bDeviceSubClass: 0 x00bDeviceProtocol: 0 x00bMaxPacketSize0: 0 x08 (8)idVendor: 0 x155BidProduct: 0 x8003bcdDevice: 0 x1202iManufactu
3、rer: 0 x00iProduct: 0 x00iSerialNumber: 0 x00bNumConfigurations: 0 x018USBUSB协议规定:配置、接口描述符协议规定:配置、接口描述符Configuration Descriptor:wTotalLength: 0 x0029bNumInterfaces: 0 x01bConfigurationValue: 0 x01iConfiguration: 0 x00bmAttributes: 0 xC0 (Bus Powered Self Powered )MaxPower: 0 x96 (300 mA)Interface De
4、scriptor:bInterfaceNumber: 0 x00bAlternateSetting: 0 x00bNumEndpoints: 0 x02bInterfaceClass: 0 xFFbInterfaceSubClass: 0 xA0bInterfaceProtocol: 0 xB0iInterface: 0 x009USBUSB协议规定:端点描述符协议规定:端点描述符Endpoint Descriptor:bEndpointAddress: 0 x81 INTransfer Type: InterruptwMaxPacketSize: 0 x0040 (64)bInterval:
5、 0 x01Endpoint Descriptor:bEndpointAddress: 0 x02 OUTTransfer Type: InterruptwMaxPacketSize: 0 x0040 (64)bInterval: 0 x0110USBUSB设备接口设备接口q USB设备的接口可以有若干个端点(endpiont),端点作为通信管道的终点,有四种类型:批量(Bulk),控制(Contro1),中断(Interrupt)和同步(Isochronous)。这些类型都需要在驱动程序中进行描述。USB设备的端点0默认为控制方式,可以初始化系统,设备并加电并收到一个总线复位命令后,端点0就
6、可以访问。与端点类型对应的是定义了四种数据传输方式,根据开发系统也对其在驱动程序中进行定义,具体包括:q 控制方式:用于发送和接收USB定义的结构化信息;q 批量方式:用于发送或接收小块无结构数据;批量方式:用于发送或接收小块无结构数据;q 中断方式:与批量管道相似,但包括一个最大延迟;中断方式:与批量管道相似,但包括一个最大延迟;q 同步方式:用于发送或接收有周期保证的大块无数据结构。11USBUSB设备枚举设备枚举主机对usb设备的识别过程叫做枚举。为什么要枚举呢?枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。一个完整的w
7、indows对usb设备的枚举过程如下:q 设备连接。USB设备经USB总线连接主机。q 设备上电。USB设备可以自供电,也可以使用USB总线供电。q 主机检测到设备,发出复位。主机通过检测设备在总线的上拉电阻检测到有新的设备连接,并获释设备是全速设备还是低速设备,然后向该端口发送一个复位信号。q 设备默认状态。设备从总线上接收到一个复位信号后,才可以对总线的处理操作做出响应。设备接收到复位信号后,就暂时使用默认地址(00H)来响应主机的命令。12USBUSB设备枚举(续)设备枚举(续)q 地址分配。当主机接收到有设备对默认地址(00H)响应的时候,就分配给设备一个空闲的地址,以后设备就只对该
8、地址进行响应。q 读取USB设备描述符。主机读取USB设备描述符,确认USB设备的属性。q 设备配置。主机依照读取的USB设备描述符来进行配置,如果设备所需的USB资源得以满足,就发送配置命令给USB设备,表示配置完毕。q 挂起。如果使用总线供电,为了节省电源,当总线保持空闲状态超过3ms以后,设备驱动程序就会进入挂起状态,在挂起状态时,USB设备保留了包括其地址和配置信息在内的所有内部状态,设备的消耗电流不超过500uA。q 从用户角度来看,枚举过程是自动完成并不可见的。但很多初次使用的设从用户角度来看,枚举过程是自动完成并不可见的。但很多初次使用的设备连接时,系统会弹出说新硬件检测到,设备
9、安装成功,可以使用之类的备连接时,系统会弹出说新硬件检测到,设备安装成功,可以使用之类的消息提示框,而且有时还需要用户配合选择安装相关的驱动。消息提示框,而且有时还需要用户配合选择安装相关的驱动。 q 当枚举完成后,这个新添加的设备可在当枚举完成后,这个新添加的设备可在Windows的设备管理器里面看到,的设备管理器里面看到,当用户删除这个设备当用户删除这个设备/硬件时,系统把这个设备从设备管理器里删除。硬件时,系统把这个设备从设备管理器里删除。 13USBUSB设备与驱动程序的关系设备与驱动程序的关系q USB总线驱动程序自动检测新插入的USB设备。然后它读取设备内的设备描述符以查明插入的是
10、何种设备,描述符中的厂商和产品标识以及其它描述符一同决定具体安装哪一个驱动程序。 q USB使用了许多方法来帮助操作系统定位驱动程序,包括设备上的设备描述符、配置描述符,以及接口描述符。对于有厂商和产品标识的设备,配置管理器首先在注册表中查找设备名称,例如名为USBVID一0471&PID-0666的设备。如果注册表中没有这个表项,配置管理器将触发“新硬件向导”来寻找该设备的INF文件。新硬件向导向用户询问INF文件的位置,然后安装驱动程序并填写注册表。一旦配置管理器找到了注册表表项,它就可以动态地装载驱动14WindowsWindows系统下系统下USBUSB驱动协议栈驱动协议栈分为USB底
11、层(总线)驱动程序和USB功能(设备)驱动程序。15总体数据传输过程总体数据传输过程一个完整的一个完整的USBUSB系统包括主机系统和系统包括主机系统和USBUSB设备。所有的传输事务都是由主机设备。所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构,如图所示:发起的。一个主机系统又可以分为以下几个层次结构,如图所示: 16具体数据传输过程具体数据传输过程q 当应用程序想对USB设备进行I/O操作,它需调用Windows API函数,I/O管理器将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB功能驱动程序。q USB功能驱动程序接收到这个IRP后,根据IPR
12、中包含的具体操作代码构造相应USB请求块(URB),并把此URB放到一个新的IRP中,然后把它传递给USB底层驱动程序。q USB底层驱动程序根据IRP中所含的URB执行相应的操作,并把操作的结果返回给USB功能驱动程序。USB功能驱动程序接收到此返回的IRP后,将操作结果通过IRP返还给I/O管理器,最后I/O管理器将此IRP操作结果传回给应用程序,至此应用程序对设备的一次I/O操作完成。17特点特点q USB底层驱动程序由操作系统提供,负责与实际的硬件打交道,实现烦琐的底层通信。q USB功能驱动程序由设备开发者编写,不对实际的硬件进行操作,而是通过向USB底层驱动程序发送包含URB(US
13、B Request Block,请求块)的IRP,来实现对USB设备信息的发送和接收。q 多个USB设备可以通过USB底层驱动程序来协调它们的工作。q 编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。18USBUSB相关资料相关资料q (usb实施者论坛 提供各种usb协议)q q 19HIDHID设备与驱动程序设备与驱动程序20为什么使用为什么使用HIDHID设备设备q 外部设备与计算机通讯需要驱动程序,USB协议复杂,不方便。q 把设备定义为属于HID类,应用程序通过与系统内置的HID类驱动通信。实现与设备通信功能。q 即使设备不完全符合HID使用表中的任何一
14、种,也可以完全根据需要自己定义一个使用表,从而符合HID类驱动程序的要求。21HIDHID设备接口要求设备接口要求q 交换的数据储存在称为报表的结构内,设备的固件程序必须支持HID报表的格式。报表的格式很灵活,可以处理任何类型的数据,单个报表最多包含255B。q 每一笔事务可以携带小量或中量的数据。低速、全速、高速设备每一笔事务最大分别是8B、6 4B、1 024B。q 最大传输速度受到限制,低速设备的中断端点每1Oms一笔事务,即800bs;全速设备的中断端点每lms一笔事务,即64 O00bs;高速设备的中断端点每125tts三笔事务,即24576Mbs。q HID设备必须包含一个类描述符
15、和一个或几个报表描述符。通过报表描述符定义了数据格式和使用方法。22连接方式连接方式与USB设备相同。23HIDHID设备逻辑结构设备逻辑结构 q 人机接口设备(HID)主要是指一些人与计算机进行交互的设备,如键盘、鼠标、游戏杆等;但是HID设备不一定非要是这些人机交互设备,只要符合HID设备级定义规范要求的都可以认为是HID设备。 q 当插入HID设备后,主机会向设备请求各种描述符来识别设备。为了把一个设备识别为HID类别,设备在定义描述符的时候必须遵守HID规范。下图显示了HID各种描述符之间的关系。 24HIDHID与与USBUSB描述符比较描述符比较 从上图中可以看出,除了USB标准定
16、义的一些描述符外,HID设备还必须定义HID描述符描述符。另外设备和主机的通信是通过报告的形式来实现的,所以还必须定义报告描述符报告描述符;而物理描述符不是必需的。还有就是HID描述符是关联于接口(而不是端点)的,所以设备不需要为每个端点都提供一个HID描述符25HIDHID描述符描述符HID Descriptor:bcdHID: 0 x0110bCountryCode: 0 x00bNumDescriptors: 0 x01bDescriptorType: 0 x22wDescriptorLength: 0 x0028Interface Descriptor:bInterfaceNumber
17、: 0 x00bAlternateSetting: 0 x00bNumEndpoints: 0 x02bInterfaceClass: 0 x03 (HID)bInterfaceSubClass: 0 x00bInterfaceProtocol: 0 x00iInterface: 0 x00HID类设备的特殊信息是在接口描述符的类别码,子类别码和协议码中声明的。26HIDHID协议协议q USB协议定义了11种请求命令,通过这些请求来获得设备的信息及对设备进行设置。HID类设备除了要支持这11种标准的请求外,还要实现以下6种特定请求: Get_Report主机用控制传输从设备接收数据,所有HI
18、D类设备都要支持这个请求; Set_Report设备用控制传输接收主机的数据,设备可以不支持此请求; Get_Idle主机读取设备当前的空闲速率,设备可以不支持此请求; Set_Idle设置闲置状态,设备可不支持此请求; Get_Protocol主机获得设备的当前活动是引导协议还是报告协议; Set_Protocol在引导协议和报告协议间切换,设备如果支持系统引导(如键盘和鼠标),就必须支持Get_Protocol和Set_Protocol请求。27HIDHID设备协议栈设备协议栈28HIDHID设备枚举过程(固件的功能)设备枚举过程(固件的功能)q 与USB枚举过程类型,增加了Get_Rep
19、ort要求。q 当固件程序正确完成枚举以后,操作系统会自动安装HID类驱动程序,接下来的工作由应用程序完成。29应用程序枚举应用程序枚举HIDHID设备流程设备流程 功能:识别设备并读取报告信息。通过上述步骤获得设备句柄后,就可以与设备交换数据。可以先声明一个缓冲区存储数据,然后调用ReadFile(),WriteFile()与设备交换报告数据。30HIDHID设备数据传输设备数据传输q USB设备有4种传输方式与主机进行通信: 控制方式、中断方式、批量方式和同步方式。每种方式都有它的应用领域。HID只支持控制和中断传输方式。如图所示,HID设备必须要有默认的控制管道和一个中断输入端点;中断输
20、出端点是可选的。 31存储设备与驱动程序存储设备与驱动程序32简介简介q Mass Storage类也就是大容量存储类,主要为软磁盘接口、ATA接口、IDE接口硬盘及Flash存储器等设备建立的USB接口,根据以上不同的数据存储载体接口构成了Mass Storage类的各种子类,他们都有自己的规范,并通过命令的形式实现各种功能。 33使用的协议使用的协议q USB组织定义了大容量存储设备的类规范,这个类规范包括4个独立的子类规范,即: 1)USB Mass Storage Class Control Bulk Interrupt(CBI)Transport。 2)USB Mass Storag
21、e Class Bulk-Only Transport。3)USB Mass Storage Class ATA Command Block。 4)USB Mass Storage Class UFI Command Specification。q 前2个子规范定义了数据命令状态在USB上的传输方法,后2个子规范则定义了存储介质的操作命令。在嵌入式USB主机系统中,主要支持的设备是USB闪存盘,属于UsBMass Storage类设备。采用单比量Bulk Only的传输规范,而子类采用UFI命令集。Mass Storage类协议的实现就包含这两部分内容。34设备描述符设备描述符idVendor
22、: 0 x155BidProduct: 0 x8100bcdDevice: 0 x0100iManufacturer: 0 x040 x0409: BHDC iProduct: 0 x030 x0409: USB DISK-KEYiSerialNumber: 0 x020 x0409: H0F814H00bNumConfigurations: 0 x0135接口描述符接口描述符Interface Descriptor:bInterfaceNumber: 0 x00bAlternateSetting: 0 x00bNumEndpoints: 0 x02bInterfaceClass: 0 x08
23、bInterfaceSubClass: 0 x06bInterfaceProtocol: 0 x50iInterface: 0 x00USB接口描述类中,接口类必须为0 x08(Mass storage class),子类为0 x06(SCSI transparent command set)或0 x04(UFI),接口协议为0 x50(Bulk-only transport)。36端点描述符端点描述符Endpoint Descriptor:bEndpointAddress: 0 x81 INTransfer Type: BulkwMaxPacketSize: 0 x0040 (64)bInterval: 0 x00Endpoint Descriptor:bEndpointAddress: 0 x02 OUTTransfer Type: BulkwMaxPacketSize: 0 x0040 (64)bInterval: 0 x0037MASS STORAGEMASS STORAGE协议栈协议栈38枚举枚举q 类同USB枚举过程。q Mass Storage类枚举过程中涉及两个请求:Get_Max_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 标准型企业内部承包经营合同
- 广告投放服务合同
- 战略合作框架合同协议
- 2025年宅基地房产买卖合同范文
- 农田托管服务合同
- 关于合同纠纷中特许经营显失公平案解析
- 跨境电商平台物流协作合同
- 企业兼职劳动合同格式范本
- 办公场地租赁三方合同范本
- 2025年软件许可及技术支持合同范例
- 2025春-新版一年级语文下册生字表(200个)
- 护士法律法规知识培训
- 《职业流行病学》课件
- 2025年全国幼儿园教师资格证考试教育理论知识押题试题库及答案(共九套)
- 精神科病人安全与治疗管理制度
- 2024年外贸业务员个人年度工作总结
- 关爱留守儿童培训
- 金融数学布朗运动
- 第三单元名著阅读《经典常谈》课件 2023-2024学年统编版语文八年级下册11.22
- 江西省上饶市余干县沙港中学2024-2025学年八年级上学期竞赛生物学试卷(无答案)
- 神经外科主要治病
评论
0/150
提交评论