USB驱动编程培训upload课件



《USB驱动编程培训upload课件》由会员分享,可在线阅读,更多相关《USB驱动编程培训upload课件(41页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,USB驱动编程培训upload,*,USB驱动编程培训upload,2024/12/11,USB驱动编程培训upload,简介,USB编码以及总线数据结构,USB数据流模型,USB的PNP管理,USB的电源管理,USB数据包与应用程序,2024/12/11,2,USB驱动编程培训upload,USB编码以及总线数据结构,USB编码,USB总线数据结构,包,传输事务,帧结构,2024/12/11,3,USB驱动编程培训upload,USB编码,USB接口针脚结构:,同步时钟+数据:,采用了,NRZI(Non
2、Return to Zero Invert)反向非归零编码;,既能保证数据传送的完整,也不需要独立的时钟信号,2024/12/11,4,USB驱动编程培训upload,包(Package),包的格式:令牌包,数据包,握手包,用7个0和1个1作为同步序列,2024/12/11,5,USB驱动编程培训upload,USB传输事务(Transaction),每个传输事务由三个包组成。,2024/12/11,6,USB驱动编程培训upload,帧结构(Frame),每个帧内数据由传输事务组合组成,2024/12/11,7,USB驱动编程培训upload,USB总线数据结构,由于有许多设备都接到了USB
3、上,因此每1ms产生的传输帧是混合的。其中,中断传输(Interrupt),和,同步传输(Isochronous),对时间要求高,因此占用了约90的总带宽,,控制传输(Control),占用了约10的带宽,而批量传输(Bulk)则使用剩下的可用带宽,2024/12/11,8,USB驱动编程培训upload,USB数据流模型,USB协议简介,USB外设与总线,数据流模型,模型整体框架,参与通信抽象对象,实际数据流向,驱动程序与系统内核之间的关系,USB驱动例程中的一些回调接口,2024/12/11,9,USB驱动编程培训upload,USB协议简介,USB协议:,USB采用轮询的广播机制传输数据
4、,即“令牌包,数据包,握手包”;,根据包标识符PID字段,用于识别数据包类型;,字段-包-传输事务-帧;,不同传输模式是通过相应的传输事务序列下实现的。,2024/12/11,10,USB驱动编程培训upload,USB外设与总线,PC机上USB接口设备的连接拓扑结构,2024/12/11,11,USB驱动编程培训upload,数据流模型,USB必须分层理解:,用户应用程序;,IO管理器层;,驱动程序;,硬件抽象层(HAL);,硬件外设,2024/12/11,12,USB驱动编程培训upload,模型整体框架,客户软件,:,对设备功能进行操作软件,它是针对 物理设备功能开发的。,USB系统,:
5、它包括操作系统对USB支持,USB控制器总线驱动,既占硬件也占软件,好比一个翻译。,USB设备驱动,:客户端软件与USB系统的之间的接口。,USB控制器,将,IRP,译码成USB协议数据传输到USB总线上;,2024/12/11,13,USB驱动编程培训upload,参与通信的抽象对象,通道(pipe),:就是主机与设备之间传输的数据的模型共有两种类型的管道:,无格式的流管道(Stream Pipe),和,有格式的信息管道(Message Pipe),2024/12/11,14,USB驱动编程培训upload,参与通信的抽象对象,逻辑设备(device):,驱动程序对应硬件实际功能暴露给操作系
6、统内核接口的抽象对象;每个设备都有一个默认的控制端点,。,配置(Configuration):,用于设置一些结构来设定设备功能接口。,接口(Interface):,逻辑设备中功能相近相同的一些端点的集合,。,端点(EndPonit):,位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点),2024/12/11,15,USB驱动编程培训upload,实际数据流,如右图所示,:,客户软件通过USB设备驱动(USBD)发送IRQ请求请求传送数据;,主机控制器驱动(HCD)将接收IRQ请求
7、解析成USB传输和传输事务。,主机控制器将这些USB传输和传输事务打包成USB协议数据包通过USB总线传输给USB设备交互,2024/12/11,16,USB驱动编程培训upload,驱动程序与操作系统之间的关系,USB总线的设备也属于即插即用设备,由上一小节可知,USB驱动程序主要还是通过IRP包进行数据交换,操作系统主要就是通过PNP管理器与IO管理器与以及部分内核对USB驱动程序的中断,内存资源进行管理;,操作系统用户模式,IO管理器,即插即用PNP管理器,操作系统内核,USB驱动程序,硬件抽象层,USB硬件设备,2024/12/11,17,USB驱动编程培训upload,USB驱动程序
8、一些例程函数接口,在USB驱动程序入口例程DriverEntry中,DRVER_OBJECT对象专门在majorFuction数组预留以下接口处理相对应的IRP:,IRP_MJ_CREATE 以文件形式打开设备准备读写,调用其做准备;,IRP_MJ_CLOSE 当前用户关闭文件(closeHandle)时,调用它清扫系统;,IRP_MJ_PNP 处理即插即用的操作,IRP_MJ_READ 处理读文件操作(Read File),IRP_MJ_WRITE 处理写文件操作(Write File),IRP_MJ_DEVICE_CONTROL 处理来之硬件对操作系统的IO控制码。,2024/12/11,
9、18,USB驱动编程培训upload,IRP_MJ_CREAT,以文件形式打开设备,检查设备状态,是否正常工作;,取消设备挂起,打开管道,并将此管道与文件的变量相关联,;,OpenHandleCount内核对象计数加一;,这是creafile相关联的;,2024/12/11,19,USB驱动编程培训upload,IRP_MJ_READ和IRP_MJ_WRITE,单独一个例程完成他们:,初始化URB,并判断通道工作方式,并从文件中获取管道信息。,检查IRP的MDL(a memory descriptor list),根据读写变量设置URB标志位。,根据MDL开辟内存,上层用户模式数据映像,构造U
10、RB请求;,2024/12/11,20,USB驱动编程培训upload,PNP即插即用管理器,PNP管理器概述以及相关组件,即插即用IRP,PNP管理器在USB驱动程序的操作,2024/12/11,21,USB驱动编程培训upload,PNP管理器概述,什么是PNP管理器呢?,PNP plug and play 即插即用设备管理,其主要有以下四个作用:,操作系统能检测新设备插入,也能检测得到设备的拔出;,如果总线接口允许,设备可以实现热插拔,并保证操作系统正常工作;,设备允许软件配置。,操作系统应该知道哪些是正确的驱动程序,并智能地加载。,2024/12/11,22,USB驱动编程培训uplo
11、ad,PNP即插即用管理器相关组件,即插即用管理程序(用户模式),用户模式,内核模式,注册表,IO管理器,执行体,即插即用管理程序,电源管理程序,设备wdm驱动程序,总线驱动程序,硬件抽象层HAL,2024/12/11,23,USB驱动编程培训upload,即插即用IRP,即插即用IRP(IRP_MJ_PNP):,由即插即用管理器发送给设备驱动程序的;,在驱动对象的主功能函数内有一个回调派遣函数用于处理PNP的IRP包;,不用的IRP代表不同的功能,如下表所示:,2024/12/11,24,USB驱动编程培训upload,子功能代码,描述,IRP_MN_START_DEVICE,配置并初始化设
12、备,IRP_MN_QUERY_REMOVE_DEVICE,设备可以被安全的删除,IRP_MN_REMOVE_DEVICE,关闭并删除设备,IRP_MN_CANCEL_REMOVE_DEVICE,忽略以前的QIERY_REMOVE,IRP_MN_STOP_DEVICE,关闭设备,IRP_MN_QUERY_STOP_DEVICE,询问设备可以关闭了吗,IRP_MN_CANCEL_STOP_DEVICE,忽略以前的QUERY_STOP,IRP_MN_DEVICE_RELATIONS,给出指定特征的设备列表,IRP_MN_QUERY_INTERFACE,获得调用函数接口地址,IRP_MN_CAPABI
13、LITIES,取得设备能力,IRP_MN_QUERY_RESOURCES,取得引导配置,IRP_MN_QUERY_RESOURCES_REQUIREMENTS,取IO资源需求,IRP_MN_QUERY_DEVICE_TEXT,获得描述信息或位置串,IRP_MN_QUERY_PNP_DEIVCE_STATE,获取设备状态,IRP_MN_QUERY_BUS_INFORMATION*,获取父总线类型,IRP_MN_SUPPRISE_REMOVE,通知设备意外被删除,2024/12/11,25,USB驱动编程培训upload,PNP管理器对USB总线的管理,2024/12/11,26,USB驱动编程培
14、训upload,USB驱动程序在完成即插即拔PNP整过所操作数据结构:,URP(USB Requst Package)USB请求包,这个数据结构也是通过操作IRP的内核函数传送直总线驱动层上。,通过操作URP进行对USB设备热插拔的枚举,配置和删除。,通过对URP的PNP管理操作我们可以得到来自硬件数据描述,如:设备描述符,配置描述符,接口描述符,端点描述符。,如图可见这些数据的树状结构:,2024/12/11,27,USB驱动编程培训upload,2024/12/11,28,USB驱动编程培训upload,USB电源管理,WDM电源管理模型概述,基本概念,电源状态和设备状态,关于USB电源管
15、理策略,USB处理电源管理的基本IRP规则,USB驱动应该响应的电源管理器发出IRP,2024/12/11,29,USB驱动编程培训upload,WDM电源管理模型,基本概念:,电源管理器:为了于减少系统不必要的功耗,基于ACPI(Advanced Configuration Power Interface)规范作为计算机全局电源策略,操作系统支持一些用户接口,用户可以通过这些接口控制最终的电源管理策略。,电源管理是操作系统通过处理驱动程序来实现的。,支持PNP的驱动必须支持电源管理,支持电源管理的驱动程序必须支持PNP,两者是被集成而相互依赖。,2024/12/11,30,USB驱动编程培训
16、upload,电源状态分以下六个状态:,系统电源状态,含义,SO(Working),CPU全功率运行,S1(Sleeping1),CPU停止,RAM被刷新,S2(Sleeping2),CPU不通电,RAM被刷新,S3(Sleeping3),CPU不通电,RAM处于低速刷新模式,电源功率输出降低,S4(Hibemate),系统停止,RAM被保存到磁盘,S5(Shutdown),系统停止并关闭,需要完全引导以恢复操作,2024/12/11,31,USB驱动编程培训upload,设备电源状态:,操作系统不直接处理设备的电源状态,而是有驱动程序专门处理。设备至少要支持D0与D3。,设备电源状态,含义,D0,设备全功率运行,D1,设备运行于低功耗模式,设备环境可能被保留,D2,设备运行低功率模式,设环境可能无效,D3,设备没有电,环境丢失,2024/12/11,32,USB驱动编程培训upload,关于USB电源管理策略,USB电源管理策略:,USB处理电源管理的基本IRP规则,USB驱动应该响应的电源管理器发出IRP,2024/12/11,33,USB驱动编程培训upload,用户模式的USB
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。