USB驱动编程培训upload.ppt_第1页
USB驱动编程培训upload.ppt_第2页
USB驱动编程培训upload.ppt_第3页
USB驱动编程培训upload.ppt_第4页
USB驱动编程培训upload.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

USB驱动编程 简介 USB编码以及总线数据结构USB数据流模型USB的PNP管理USB的电源管理USB数据包与应用程序 USB编码以及总线数据结构 USB编码USB总线数据结构包传输事务帧结构 USB编码 USB接口针脚结构 同步时钟 数据 采用了NRZI NonReturntoZeroInvert 反向非归零编码 既能保证数据传送的完整 也不需要独立的时钟信号 包 Package 包的格式 令牌包 数据包 握手包 用7个0和1个1作为同步序列 USB传输事务 Transaction 每个传输事务由三个包组成 帧结构 Frame 每个帧内数据由传输事务组合组成 USB总线数据结构 由于有许多设备都接到了USB上 因此每1ms产生的传输帧是混合的 其中中断传输 Interrupt 和同步传输 Isochronous 对时间要求高 因此占用了约90 的总带宽 控制传输 Control 占用了约10 的带宽 而批量传输 Bulk 则使用剩下的可用带宽 USB数据流模型 USB协议简介USB外设与总线数据流模型模型整体框架参与通信抽象对象实际数据流向驱动程序与系统内核之间的关系USB驱动例程中的一些回调接口 USB协议简介 USB协议 USB采用轮询的广播机制传输数据 即 令牌包 数据包 握手包 根据包标识符PID字段 用于识别数据包类型 字段 包 传输事务 帧 不同传输模式是通过相应的传输事务序列下实现的 USB外设与总线 PC机上USB接口设备的连接拓扑结构 数据流模型 USB必须分层理解 用户应用程序 IO管理器层 驱动程序 硬件抽象层 HAL 硬件外设 模型整体框架 客户软件 对设备功能进行操作软件 它是针对物理设备功能开发的 USB系统 它包括操作系统对USB支持 USB控制器总线驱动 既占硬件也占软件 好比一个翻译 USB设备驱动 客户端软件与USB系统的之间的接口 USB控制器将IRP译码成USB协议数据传输到USB总线上 参与通信的抽象对象 通道 pipe 就是主机与设备之间传输的数据的模型共有两种类型的管道 无格式的流管道 StreamPipe 和有格式的信息管道 MessagePipe 参与通信的抽象对象 逻辑设备 device 驱动程序对应硬件实际功能暴露给操作系统内核接口的抽象对象 每个设备都有一个默认的控制端点 配置 Configuration 用于设置一些结构来设定设备功能接口 接口 Interface 逻辑设备中功能相近相同的一些端点的集合 端点 EndPonit 位于USB设备或主机上的一个数据缓冲区 用来存放和发送USB的各种数据 每一个端点都有惟一的确定地址 有不同的传输特性 如输入端点 输出端点 配置端点 批量传输端点 实际数据流 如右图所示 客户软件通过USB设备驱动 USBD 发送IRQ请求请求传送数据 主机控制器驱动 HCD 将接收IRQ请求解析成USB传输和传输事务 主机控制器将这些USB传输和传输事务打包成USB协议数据包通过USB总线传输给USB设备交互 驱动程序与操作系统之间的关系 USB总线的设备也属于即插即用设备 由上一小节可知 USB驱动程序主要还是通过IRP包进行数据交换 操作系统主要就是通过PNP管理器与IO管理器与以及部分内核对USB驱动程序的中断 内存资源进行管理 操作系统用户模式 IO管理器 即插即用PNP管理器 操作系统内核 USB驱动程序 硬件抽象层 USB硬件设备 USB驱动程序一些例程函数接口 在USB驱动程序入口例程DriverEntry中 DRVER OBJECT对象专门在majorFuction数组预留以下接口处理相对应的IRP IRP MJ CREATE以文件形式打开设备准备读写 调用其做准备 IRP MJ CLOSE当前用户关闭文件 closeHandle 时 调用它清扫系统 IRP MJ PNP处理即插即用的操作IRP MJ READ处理读文件操作 ReadFile IRP MJ WRITE处理写文件操作 WriteFile IRP MJ DEVICE CONTROL处理来之硬件对操作系统的IO控制码 IRP MJ CREAT 以文件形式打开设备 检查设备状态 是否正常工作 取消设备挂起 打开管道 并将此管道与文件的变量相关联 OpenHandleCount内核对象计数加一 这是creafile相关联的 IRP MJ READ和IRP MJ WRITE 单独一个例程完成他们 初始化URB 并判断通道工作方式 并从文件中获取管道信息 检查IRP的MDL amemorydescriptorlist 根据读写变量设置URB标志位 根据MDL开辟内存 上层用户模式数据映像 构造URB请求 PNP即插即用管理器 PNP管理器概述以及相关组件即插即用IRPPNP管理器在USB驱动程序的操作 PNP管理器概述 什么是PNP管理器呢 PNPplugandplay即插即用设备管理 其主要有以下四个作用 操作系统能检测新设备插入 也能检测得到设备的拔出 如果总线接口允许 设备可以实现热插拔 并保证操作系统正常工作 设备允许软件配置 操作系统应该知道哪些是正确的驱动程序 并智能地加载 PNP即插即用管理器相关组件 即插即用管理程序 用户模式 用户模式 内核模式 注册表 IO管理器 执行体 即插即用管理程序 电源管理程序 设备wdm驱动程序 总线驱动程序 硬件抽象层HAL 即插即用IRP 即插即用IRP IRP MJ PNP 由即插即用管理器发送给设备驱动程序的 在驱动对象的主功能函数内有一个回调派遣函数用于处理PNP的IRP包 不用的IRP代表不同的功能 如下表所示 PNP管理器对USB总线的管理 USB驱动程序在完成即插即拔PNP整过所操作数据结构 URP USBRequstPackage USB请求包 这个数据结构也是通过操作IRP的内核函数传送直总线驱动层上 通过操作URP进行对USB设备热插拔的枚举 配置和删除 通过对URP的PNP管理操作我们可以得到来自硬件数据描述 如 设备描述符 配置描述符 接口描述符 端点描述符 如图可见这些数据的树状结构 USB电源管理 WDM电源管理模型概述基本概念电源状态和设备状态关于USB电源管理策略USB处理电源管理的基本IRP规则USB驱动应该响应的电源管理器发出IRP WDM电源管理模型 基本概念 电源管理器 为了于减少系统不必要的功耗 基于ACPI AdvancedConfigurationPowerInterface 规范作为计算机全局电源策略 操作系统支持一些用户接口 用户可以通过这些接口控制最终的电源管理策略 电源管理是操作系统通过处理驱动程序来实现的 支持PNP的驱动必须支持电源管理 支持电源管理的驱动程序必须支持PNP 两者是被集成而相互依赖 电源状态分以下六个状态 设备电源状态 操作系统不直接处理设备的电源状态 而是有驱动程序专门处理 设备至少要支持D0与D3 关于USB电源管理策略 USB电源管理策略 USB处理电源管理的基本IRP规则USB驱动应该响应的电源管理器发出IRP 用户模式的USB数据读写与应用程序 用户模式与驱动包IRP对应关系IRP MJ CREATE IRP MJ READ IRP MJ WRITE用户模式应用程序打开设备用户模式应用程序读取USB设备 USB设备数据读写 用户模式下API与驱动程序的IPR对应关系 开打设备 首先已知设备GUID通过调用SetupDiGetClassDev获得设备的信息集 在设备信息集里调用SetupDiEnumDeviceInterface识别接口信息 在接口信息中调用SetupDiGetDeviceInterfaceDetail获得设备路径名 通过设备路径CreateFile打开设备 此时内核对应发出IRP MJ CREATE 操作系统自动访问对应驱动 上层应用程序读写数据 读写数据通过驱动对象的IRP MJ READ与IRP MJ WRITE功能例程 使用用户模式的readfile与writefileAPI调用驱动内核对象 建立内存映像 通过内存对齐复制实现数据交互 还是通过IRP包来获取数据 总结 简要审阅所演示的内容确定应用培训的方法请求有关培训单元的反馈 更多信息 列出其他培训单元列出书籍 文章 电子来源列出咨询服务 其他来源 USB处理电源管理的基本IRP规则 其最基本规则要遵循以下几点 同步操作必须严格 PDO只能仅且有一个IRP MN QUERY POWER或者IRP MN SET POWER电源IRP必须一次性处理 不能产生等待事件或者是锁对象的系统例程 也是需要分层处理 并且只能用特殊对象API接受电源管理器的IRPIRP MN QUERY POWER允许失败 但是IRP MN SET POWER不能失败 如果是跟电源相关的IRP 不能像普通IRP一样处理 特别在传输上 USB驱动应该响应的电源管理器发出IRP 在USB驱动中也是通过处理IRP来实现电源管理 处理电源查询IRP IRP MN QUERY POWER查询是设备电源 还是系统电源 通过调用内核函数HandleSystemQueryPower来查询系统电源 HandleDeviceQueryPower查询设备电源状态

温馨提示

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

评论

0/150

提交评论