linux环境下usb的原理、驱动和配置.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux环境下usb的原理、驱动和配置

Linux 环境下 USB 的原理、驱动和配置 作者:梁国军 关键词:USB 设备,Linux,驱动 摘要:本文对 Linux 环境下 USB 的原理、驱动和配置进行详细介绍。 随着生活水平的提高,人们对 USB 设备的使用也越来越多,鉴于 Linux 在硬件配置上尚不 能全部即插即用,因此关于 Linux 如何配置和使用,成为困扰我们的一大问题。 什么是 USB? USB 是英文 Universal Serial Bus 的缩写,意为通用串行总线。USB 最初是为了替代 许多不同的低速总线(包括并行、串行和键盘连接)而设计的,它以单一类型的总线连接各 种不同的类型的设备。USB 的发展已经超越了这些低速的连接方式,它现在可以支持几乎 所有可以连接到 PC 上的设备。最新的 USB 规范修订了理论上高达 480Mbps 的高速连接。 Linux 内核支持两种主要类型的 USB 驱动程序:宿主系统上的驱动程序和设备上的驱动程 序,从宿主的观点来看(一个普通的宿主也就是一个 PC 机),宿主系统的 USB 设备驱动 程序控制插入其中的 USB 设备,而 USB 设备的驱动程序控制该设备如何作为一个 USB 设 备和主机通信。 USB 的具体构成 在动手写 USB 驱动程序这前,让我们先看看写的 USB 驱动程序在内核中的结构,如 下图: USB 驱动程序存在于不同的内核子系统和 USB 硬件控制器之间,USB 核心为 USB 驱 动程序提供了一个用于访问和控制 USB 硬件的接口,而不必考虑系统当前存在的各种不同 类型的 USB 硬件控制器。USB 是一个非常复杂的设备,linux 内核为我们提供了一个称为 USB 的核心的子系统来处理大部分的复杂性,USB 设备包括配置(configuration)、接口 (interface)和端点(endpoint),USB 设备绑定到接口上,而不是整个 USB 设备。如下图 所示: USB 通信最基本的形式是通过端点(USB 端点分中断、批量、等时、控制四种,每种 用途不同),USB 端点只能往一 个方向传送数据,从主机到设备或者从设备到主机,端点 可以看作是单向的管道(pipe)。所以我们可以这样认为:设备通常具有一个或者更多的配 置,配置经常具有一个或者更多的接口,接口通常具有一个或者更多的设置,接口没有或具 有一个以上的端点。驱动程序把驱动程序对象注册到 USB 子系统中,稍后再使用制造商和 设备标识来判断是否已经安装了硬件。USB 核心使用一个列表(是一个包含制造商 ID 和设 备号 ID 的一个结构体)来判断对于一个设备该使用哪一个驱动程序,热插拨脚本使用它来 确定当一个特定的设备插入到系统时该自动装载哪一个驱动程序。 上面我们简要说明了驱动程序的基本理论,在写一个设备驱动程序之前,我们还要了解 以下两个概念:模块和设备文件。 模块:是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能独立运 行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。模块最 主要的用处就是用来实现设备驱动程序。Linux 下对于一个硬件的驱动,可以有两种方式: 直接加载到内核代码中,启动内核时就会驱动此硬件设备。另一种就是以模块方式,编译生 成一个.ko 文件(在 2.4 以下内核中是用.o 作模块文件,我们以 2.6 的内核为准,以下同)。 当应用程序需要时再加载到内核空间运行。所以我们所说的一个硬件的驱动程序,通常指的 就是一个驱动模块。 设备文件:对于一个设备,它可以在/dev 下面存在一个对应的逻辑设备节点,这个节 点以文件的形式存在,但它不是普通意义上的文件,它是设备文件,更确切的说,它是设备 节点。这个节点是通过 mknod 命令建立的,其中指定了主设备号和次设备号。主设备号表 明了某一类设备,一般对应着确定的驱动程序;次设备号一般是区分不同属性,例如不同的 使用方法,不同的位置,不同的操作。这个设备号是从/proc/devices 文件中获得的,所以 一般是先有驱动程序在内核中,才有设备节点在目录中。这个设备号(特指主设备号)的主 要作用,就是声明设备所使用的驱动程序。驱动程序和设备号是一一对应的,当你打开一个 设备文件时,操作系统就已经知道这个设备所对应的驱动程序。对于一个硬件,Linux 是这 样来进行驱动的:首先,我们必须提供一个.ko 的驱动模块文件。我们要使用这个驱动程序,

文档评论(0)

75986597 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档