- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第19章 USB设备驱动程序解析
第19章 USB设备驱动程序 USB设备是计算机中一种非常常见的设备。日常生活中,常见的U盘,就是其中之一。USB设备只使用4条线进行连接,数据在线路中的传输规范已经从1.0升级到3.0,OTG规范也在完善之中。从长远来看,USB设备将称为计算机上主流的可插拔设备,越来越多的外设会使用USB规范来设计。从常见的外置光驱、移动硬盘、鼠标、键盘、手写笔,到外置网卡、蓝牙、手机数据接口、数码相机等,可见USB设备的使用会多么的广泛,不久的将来,甚至可以想象两台电路之间可以直接通过USB线进行数据传输,其速度可以达到480Mbit/s。随着USB设备在日常生活的广泛应用,学习USB设备驱动的价值也越来越大,本章将对编写USB设备驱动进行详细的阐述。 19.1 USB概述 USB作为一种重要的通讯规范,目前应用越来越广泛。USB协议中,除了定义了通讯物理层和电气层的标准外,还定义了一套比较完整的软件协议栈。这样就使大多数符合协议的USB设备能够很容易的工作在各种平台上。基本上,各个平台上的USB设备驱动的逻辑都很相似。由于USB协议是一套规范的协议,所以编写各种USB设备的驱动程序也非常相似,本节对USB协议的相关内容做一个简要的介绍。 19.1.1 USB概念 USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB接口支持设备的即插即用和热插拔功能。USB接口可用于连接多达127种外设,如鼠标、调制解调器和键盘等。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的,自1996年推出后,已成功替代串口和并口,并成为当今个人电脑和大量智能设备的必配的接口之一。从1994年11月11日发表了USB V0.7版本以后,USB版本经历了多年的发展,到现在已经发展为3.0版本。 19.1.2 USB的特点 USB设备应用非常广泛,例如USB键盘、USB鼠标、USB光驱、U盘等,并且许多手持设备上也提供了USB接口,方面与电脑或其他设备传递数据。USB设备之所以会被大量应用,主要具有以下优点,这些优点在编程中是需要注意的。 1、可以热插拔。 2、携带方便。 3、标准统一。 4、可以连接多个设备。 19.1.2 USB总线拓扑结构 USB设备的连接如图所示,对于每个PC来说,都有一个或者多个称为主机(Host)控制器的设备,该主机控制器和一个根集线器(Hub)作为一个整体。这个根Hub下可以接多级的Hub,每个子Hub又可以接子Hub。每个USB设备作为一个节点接在不同级别的Hub上。 19.1.3 USB驱动总体架构 在Linux系统中,USB驱动由USB主机控制器驱动和USB设备驱动组成。USB主机控制器驱动,主要用来驱动芯片上的主机控制器硬件。USB设备驱动是具体的USB设备驱动,例如USB鼠标、USB摄像头等。如图是USB驱动的总体架构。 19.2 USB设备驱动模型 19.2.1 USB驱动初探 Linux操作系统提供了大量的缺省驱动程序。一般来说,这些驱动程序适用于大多数硬件,但也有许多特殊功能的硬件不能在操作系统中找到相应的驱动程序。这时,驱动开发人员一般在内核中找到一份相似的驱动代码,再根据实际的硬件情况进行修改。所以通过什么样的方法找到相似的驱动程序非常重要。 19.2.2 USB设备驱动模型 理解USB驱动程序,首先需要理解什么是USB设备驱动模型。Linux的设备驱动模型在前面的章节中已经讲述过,USB设备驱动模型是Linux设备驱动模型的扩展,这里主要介绍USB设备驱动的模型。 1.总线、设备和驱动 2.设备与驱动的绑定 19.2.3 usb驱动结构usb_driver 在USB设备驱动模型中,usb设备驱动使用usb_driver结构体来表示。该结构体中包含了与具体设备相关的核心函数,对于不同的USB设备,驱动开发人员需要实现不同功能的函数,USB核心通过在框架中调用这些自定义的函数来完成相应的功能。下面对usb_driver结构体进行简要的介绍。 1.usb_driver结构体 2.驱动支持的设备列表结构体usb_device_id 3.初始化usb_device_id结构的宏 4.USB驱动注册函数usb_register() 19.3 USB设备驱动程序 USB驱动程序相对比较复杂,最为简单的是加载和卸载函数。在加载函数中完成了USB设备的大部分初始化工作,同时涉及到很多重要的数据结构。下面对这些概念进行详细的解释。 19.3.1 USB设备驱动加载和卸载函数 USB设备驱动程序对应一个usb_driver结构体,这个结构体相当于Linux设备驱动模型中的driver结构体。 19.3.2 USB协议中的设备 USB核心调用probe(
您可能关注的文档
最近下载
- 《质量评估流程》课件.ppt VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- 2024年数智工程师职业鉴定考试复习题库(含答案).docx VIP
- (完整版)建筑施工技术交底范本(大全) .pdf VIP
- 水运工程大体积混凝土温度裂缝控制技术规范_JTS-T 202-1-2022.pdf
- 设备供货、安装、调试、验收方案.docx VIP
- 《水利水电工程施工图审查技术导则》.pdf VIP
- 《木材学》——李坚 木材学笔记(完整).doc VIP
- 《公路水泥混凝土路面施工技术规范》_(JTGF30-2015).pdf VIP
- 小学生数学学习自查习惯现状调查报告.pdf VIP
文档评论(0)