驱动类型介绍_第1页
驱动类型介绍_第2页
驱动类型介绍_第3页
驱动类型介绍_第4页
驱动类型介绍_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

驱动类型介绍第1页,课件共44页,创作于2023年2月2驱动类型划分USB(通用)HID(人机接口设备)USBMassStorage(大容量存储设备)(设备连接、系统识别、系统与设备通讯)第2页,课件共44页,创作于2023年2月3涉及到的通讯协议USBUSB-HIDUSBMassStorage第3页,课件共44页,创作于2023年2月USB设备与驱动程序第4页,课件共44页,创作于2023年2月USB设备连接方式USB主控制器与其它I/O设备一样直接连接到系统总线上。操作系统与主控制器通信使用I/O口或内存寄存器,通过普通的中断信号,系统可以接受主控制器的事件通知。主控制器连接一棵USB设备树。一种称为hub的设备作为其它设备的连接点。多个hub能以菊链方式连接,可以连接到USB规范中定义的最大深度。第5页,课件共44页,创作于2023年2月USB设备内部逻辑结构第6页,课件共44页,创作于2023年2月USB协议规定:设备描述符DeviceDescriptor:bcdUSB:0x0110bDeviceClass:0x00bDeviceSubClass:0x00bDeviceProtocol:0x00bMaxPacketSize0:0x08(8)idVendor:0x155BidProduct:0x8003bcdDevice:0x1202iManufacturer:0x00iProduct:0x00iSerialNumber:0x00bNumConfigurations:0x01第7页,课件共44页,创作于2023年2月USB协议规定:配置、接口描述符ConfigurationDescriptor:wTotalLength:0x0029bNumInterfaces:0x01bConfigurationValue:0x01iConfiguration:0x00bmAttributes:0xC0(BusPoweredSelfPowered)MaxPower:0x96(300mA)InterfaceDescriptor:bInterfaceNumber:0x00bAlternateSetting:0x00bNumEndpoints:0x02bInterfaceClass:0xFFbInterfaceSubClass:0xA0bInterfaceProtocol:0xB0iInterface:0x00第8页,课件共44页,创作于2023年2月USB协议规定:端点描述符EndpointDescriptor:bEndpointAddress:0x81INTransferType:InterruptwMaxPacketSize:0x0040(64)bInterval:0x01EndpointDescriptor:bEndpointAddress:0x02OUTTransferType:InterruptwMaxPacketSize:0x0040(64)bInterval:0x01第9页,课件共44页,创作于2023年2月USB设备接口USB设备的接口可以有若干个端点(endpiont),端点作为通信管道的终点,有四种类型:批量(Bulk),控制(Contro1),中断(Interrupt)和同步(Isochronous)。这些类型都需要在驱动程序中进行描述。USB设备的端点0默认为控制方式,可以初始化系统,设备并加电并收到一个总线复位命令后,端点0就可以访问。与端点类型对应的是定义了四种数据传输方式,根据开发系统也对其在驱动程序中进行定义,具体包括:控制方式:用于发送和接收USB定义的结构化信息;批量方式:用于发送或接收小块无结构数据;中断方式:与批量管道相似,但包括一个最大延迟;同步方式:用于发送或接收有周期保证的大块无数据结构。第10页,课件共44页,创作于2023年2月USB设备枚举主机对usb设备的识别过程叫做枚举。为什么要枚举呢?枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。一个完整的windows对usb设备的枚举过程如下:设备连接。USB设备经USB总线连接主机。设备上电。USB设备可以自供电,也可以使用USB总线供电。主机检测到设备,发出复位。主机通过检测设备在总线的上拉电阻检测到有新的设备连接,并获释设备是全速设备还是低速设备,然后向该端口发送一个复位信号。设备默认状态。设备从总线上接收到一个复位信号后,才可以对总线的处理操作做出响应。设备接收到复位信号后,就暂时使用默认地址(00H)来响应主机的命令。第11页,课件共44页,创作于2023年2月USB设备枚举(续)地址分配。当主机接收到有设备对默认地址(00H)响应的时候,就分配给设备一个空闲的地址,以后设备就只对该地址进行响应。读取USB设备描述符。主机读取USB设备描述符,确认USB设备的属性。设备配置。主机依照读取的USB设备描述符来进行配置,如果设备所需的USB资源得以满足,就发送配置命令给USB设备,表示配置完毕。挂起。如果使用总线供电,为了节省电源,当总线保持空闲状态超过3ms以后,设备驱动程序就会进入挂起状态,在挂起状态时,USB设备保留了包括其地址和配置信息在内的所有内部状态,设备的消耗电流不超过500uA。从用户角度来看,枚举过程是自动完成并不可见的。但很多初次使用的设备连接时,系统会弹出说新硬件检测到,设备安装成功,可以使用之类的消息提示框,而且有时还需要用户配合选择安装相关的驱动。

当枚举完成后,这个新添加的设备可在Windows的设备管理器里面看到,当用户删除这个设备/硬件时,系统把这个设备从设备管理器里删除。

第12页,课件共44页,创作于2023年2月USB设备与驱动程序的关系USB总线驱动程序自动检测新插入的USB设备。然后它读取设备内的设备描述符以查明插入的是何种设备,描述符中的厂商和产品标识以及其它描述符一同决定具体安装哪一个驱动程序。USB使用了许多方法来帮助操作系统定位驱动程序,包括设备上的设备描述符、配置描述符,以及接口描述符。对于有厂商和产品标识的设备,配置管理器首先在注册表中查找设备名称,例如名为USB\VID一0471&PID-0666的设备。如果注册表中没有这个表项,配置管理器将触发“新硬件向导”来寻找该设备的INF文件。新硬件向导向用户询问INF文件的位置,然后安装驱动程序并填写注册表。一旦配置管理器找到了注册表表项,它就可以动态地装载驱动

第13页,课件共44页,创作于2023年2月Windows系统下USB驱动协议栈分为USB底层(总线)驱动程序和USB功能(设备)驱动程序。第14页,课件共44页,创作于2023年2月总体数据传输过程

一个完整的USB系统包括主机系统和USB设备。所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构,如图所示:

第15页,课件共44页,创作于2023年2月具体数据传输过程当应用程序想对USB设备进行I/O操作,它需调用WindowsAPI函数,I/O管理器将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB功能驱动程序。USB功能驱动程序接收到这个IRP后,根据IPR中包含的具体操作代码构造相应USB请求块(URB),并把此URB放到一个新的IRP中,然后把它传递给USB底层驱动程序。USB底层驱动程序根据IRP中所含的URB执行相应的操作,并把操作的结果返回给USB功能驱动程序。USB功能驱动程序接收到此返回的IRP后,将操作结果通过IRP返还给I/O管理器,最后I/O管理器将此IRP操作结果传回给应用程序,至此应用程序对设备的一次I/O操作完成。

第16页,课件共44页,创作于2023年2月特点USB底层驱动程序由操作系统提供,负责与实际的硬件打交道,实现烦琐的底层通信。USB功能驱动程序由设备开发者编写,不对实际的硬件进行操作,而是通过向USB底层驱动程序发送包含URB(USBRequestBlock,请求块)的IRP,来实现对USB设备信息的发送和接收。多个USB设备可以通过USB底层驱动程序来协调它们的工作。编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。

第17页,课件共44页,创作于2023年2月USB相关资料/

(usb实施者论坛提供各种usb协议)/usb.htm

/

第18页,课件共44页,创作于2023年2月HID设备与驱动程序第19页,课件共44页,创作于2023年2月为什么使用HID设备外部设备与计算机通讯需要驱动程序,USB协议复杂,不方便。把设备定义为属于HID类,应用程序通过与系统内置的HID类驱动通信。实现与设备通信功能。即使设备不完全符合HID使用表中的任何一种,也可以完全根据需要自己定义一个使用表,从而符合HID类驱动程序的要求。第20页,课件共44页,创作于2023年2月HID设备接口要求交换的数据储存在称为报表的结构内,设备的固件程序必须支持HID报表的格式。报表的格式很灵活,可以处理任何类型的数据,单个报表最多包含255B。每一笔事务可以携带小量或中量的数据。低速、全速、高速设备每一笔事务最大分别是8B、64B、1024B。最大传输速度受到限制,低速设备的中断端点每1Oms一笔事务,即800b/s;全速设备的中断端点每lms一笔事务,即64O00b/s;高速设备的中断端点每125tts三笔事务,即24.576Mb/s。④HID设备必须包含一个类描述符和一个或几个报表描述符。通过报表描述符定义了数据格式和使用方法。第21页,课件共44页,创作于2023年2月连接方式与USB设备相同。第22页,课件共44页,创作于2023年2月HID设备逻辑结构人机接口设备(HID)主要是指一些人与计算机进行交互的设备,如键盘、鼠标、游戏杆等;但是HID设备不一定非要是这些人机交互设备,只要符合HID设备级定义规范要求的都可以认为是HID设备。当插入HID设备后,主机会向设备请求各种描述符来识别设备。为了把一个设备识别为HID类别,设备在定义描述符的时候必须遵守HID规范。下图显示了HID各种描述符之间的关系。

第23页,课件共44页,创作于2023年2月HID与USB描述符比较 从上图中可以看出,除了USB标准定义的一些描述符外,HID设备还必须定义HID描述符。另外设备和主机的通信是通过报告的形式来实现的,所以还必须定义报告描述符;而物理描述符不是必需的。还有就是HID描述符是关联于接口(而不是端点)的,所以设备不需要为每个端点都提供一个HID描述符第24页,课件共44页,创作于2023年2月HID描述符HIDDescriptor:bcdHID:0x0110bCountryCode:0x00bNumDescriptors:0x01bDescriptorType:0x22wDescriptorLength:0x0028InterfaceDescriptor:bInterfaceNumber:0x00bAlternateSetting:0x00bNumEndpoints:0x02bInterfaceClass:0x03(HID)bInterfaceSubClass:0x00bInterfaceProtocol:0x00iInterface:0x00HID类设备的特殊信息是在接口描述符的类别码,子类别码和协议码中声明的。第25页,课件共44页,创作于2023年2月HID协议USB协议定义了11种请求命令,通过这些请求来获得设备的信息及对设备进行设置。HID类设备除了要支持这11种标准的请求外,还要实现以下6种特定请求:①Get_Report——主机用控制传输从设备接收数据,所有HID类设备都要支持这个请求;②Set_Report——设备用控制传输接收主机的数据,设备可以不支持此请求;③Get_Idle——主机读取设备当前的空闲速率,设备可以不支持此请求;④Set_Idle——设置闲置状态,设备可不支持此请求;⑤Get_Protocol——主机获得设备的当前活动是引导协议还是报告协议;⑥Set_Protocol——在引导协议和报告协议间切换,设备如果支持系统引导(如键盘和鼠标),就必须支持Get_Protocol和Set_Protocol请求。第26页,课件共44页,创作于2023年2月HID设备协议栈第27页,课件共44页,创作于2023年2月HID设备枚举过程(固件的功能)与USB枚举过程类型,增加了Get_Report要求。当固件程序正确完成枚举以后,操作系统会自动安装HID类驱动程序,接下来的工作由应用程序完成。第28页,课件共44页,创作于2023年2月应用程序枚举HID设备流程功能:识别设备并读取报告信息。通过上述步骤获得设备句柄后,就可以与设备交换数据。可以先声明一个缓冲区存储数据,然后调用ReadFile(),WriteFile()与设备交换报告数据。第29页,课件共44页,创作于2023年2月HID设备数据传输USB设备有4种传输方式与主机进行通信:控制方式、中断方式、批量方式和同步方式。每种方式都有它的应用领域。HID只支持控制和中断传输方式。如图所示,HID设备必须要有默认的控制管道和一个中断输入端点;中断输出端点是可选的。第30页,课件共44页,创作于2023年2月存储设备与驱动程序第31页,课件共44页,创作于2023年2月简介MassStorage类也就是大容量存储类,主要为软磁盘接口、ATA接口、IDE接口硬盘及Flash存储器等设备建立的USB接口,根据以上不同的数据存储载体接口构成了MassStorage类的各种子类,他们都有自己的规范,并通过命令的形式实现各种功能。第32页,课件共44页,创作于2023年2月使用的协议USB组织定义了大容量存储设备的类规范,这个类规范包括4个独立的子类规范,即:

1)USBMassStorageClassControlBulkInterrupt(CBI)Transport。

2)USBMassStorageClassBulk-OnlyTransport。 3)USBMassStorageClassATACommandBlock。

4)USBMassStorageClassUFICommandSpecification。

前2个子规范定义了数据命令状态在USB上的传输方法,后2个子规范则定义了存储介质的操作命令。在嵌入式USB主机系统中,主要支持的设备是USB闪存盘,属于UsBMassStorage类设备。采用单比量BulkOnly的传输规范,而子类采用UFI命令集。MassStorage类协议的实现就包含这两部分内容。第33页,课件共44页,创作于2023年2月设备描述符idVendor:0x155BidProduct:0x8100bcdDevice:0x0100iManufacturer:0x040x0409:"BHDC"iProduct:0x030x0409:"USBDISK-KEY"iSerialNumber:0x020x0409:"H0F814H0371400000000"bNumConfigurations:0x01第34页,课件共44页,创作于2023年2月接口描述符InterfaceDescriptor:bInterfaceNumber:0x00bAlternateSetting:0x00bNumEndpoints:0x02bInterfaceClass:0x08bInterfaceSubClass:0x06bInterfaceProtocol:0x50iInterface:0x00USB接口描述类中,接口类必须为0x08(Massstorageclass),子类为0x06(SCSItransparentcommandset)或0x04(UFI),接口协议为0x50(Bulk-onlytransport)。第35页,课件共44页,创作于2023年2月端点描述符EndpointDescriptor:bEndpointAddress:0x81INTransferType:BulkwMaxPacketSize:0x0040(64)bInterval:0x00EndpointDescriptor:bEndpointAddress:0x02OUTTransferType:BulkwMaxPacketSize:0x0040(64)bInterval:0x00第36页,课件共44页,创作于2023年2月MASSSTORAGE协议栈第37页,课件共44页,创作于2023年2月枚举类同USB枚举过程。MassStorage类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论