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 设备驱动开发 作者:赵明,联想软件设计中心嵌入式研发处系统设计工程师 整理:青瓜王子,QQ:1788586 一、驱动配置部分 USB 设备越来越多,而 Linux 在硬件配置上仍然没有做到完全即插即用,对于 Linux怎样配置和 使用他们,也越来越成为困扰我们的一大问题。本文分两部分着力从 Linux 系统下设备驱动的 架构,去阐述怎样去使用和配置以及怎样编制 USB 设备驱动。对于一般用户,可以使我们明晰 Linux 设备驱动方式,为更好地配置和使用 USB设备提供了方便;而对于希望开发 Linux 系统下 USB 设备驱动的程序员,提供了初步学习 USB 驱动架构的机会。 前言 USB 是英文”Universal Serial Bus”的缩写,意为”通用串行总线”。是由 Compaq(康柏)、 DEC、IBM、Intel、NEC、微软以及 Northern Telecom(北方电讯)等公司于 1994 年 11 月共同 提出的,主要目的就是为了解决接口标准太多的弊端。USB使用一个 4针插头作为标准插头,并 通过这个标准接头,采用菊花瓣形式把所有外设连接起来,它采用串行方式传输数据,目前最 大数据传输率为 12Mbps, 支持多数据流和多个设备并行操作,允许外设热插拔。 目前 USB 接口虽然只发展了 2 代(USB1.0/1.1,USB2.0),但是 USB 综合了一个多平台标准的 所有优点 — 包括降低成本,增加兼容性,可连接大量的外部设备,融合先进的功能和品质。 使其逐步成为 PC 接口标准,进入了高速发展期。 那么对于使用 Linux 系统,正确支持和配置常见的 USB 设备,就是其使用必不可少的关键一步。 模块(驱动程序) 模块(module)是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能独立 运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。模块最 主要的用处就是用来实现设备驱动程序。 Linux 下对于一个硬件的驱动,可以有两种方式:直接加载到内核代码中,启动内核时就会驱动 此硬件设备。另一种就是以模块方式,编译生成一个.o 文件。当应用程序需要时再加载进内核 空间运行。所以我们所说的一个硬件的驱动程序,通常指的就是一个驱动模块。 设备文件 对于一个设备,它可以在/dev 下面存在一个对应的逻辑设备节点,这个节点以文件的形式存在, 但它不是普通意义上的文件,它是设备文件,更确切的说,它是设备节点。这个节点是通过 mknod 命令建立的,其中指定了主设备号和次设备号。主设备号表明了某一类设备,一般对应着确定 的驱动程序;次设备号一般是区分不同属性,例如不同的使用方法,不同的位置,不同的操作。 这个设备号是从/proc/devices 文件中获得的,所以一般是先有驱动程序在内核中,才有设备节 点在目录中。这个设备号(特指主设备号)的主要作用,就是声明设备所使用的驱动程序。驱 动程序和设备号是一一对应的,当你打开一个设备文件时,操作系统就已经知道这个设备所对 应的驱动程序。 SCSI 设备 SCSI 是有别于 IDE 的一个计算机标准接口。现在大部分平板式扫描仪、CD-R 刻录机、MO 光磁盘 机等渐渐趋向使用 SCSI接口,加之 SCSI 又能提供一个高速传送通道,所以,接触到 SCSI 设备 的用户会越来越多。Linux 支持很多种的 SCSI 设备,例如:SCSI 硬盘、SCSI 光驱、SCSI 磁带 机。更重要的是,Linux提供了 IDE设备对 SCSI的模拟(ide-scsi.o 模块),我们通常会就把 IDE 光驱模拟为 SCSI 光驱进行访问。因为在 Linux 中很多软件都只能操作 SCSI 光驱。例如大多 数刻录软件、一些媒体播放软件。通常我们的 USB 存储设备,也模拟为 SCSI 硬盘而进行访问。 Linux 硬件驱动架构 对于一个硬件,Linux 是这样来进行驱动的:首先,我们必须提供一个.o 的驱动模块文件(这 里我们只说明模块方式,其实内核方式是类似的)。我们要使用这个驱动程序,首先要加载运 行它(insmod *.o)。这样驱动就会根据自己的类型(字符设备类型或块设备类型,例如鼠标 就是字符设备而硬盘就是块设备)向系统注册,注册成功系统会反馈一个主设备号,这个主设 备号就是系统对它的唯一标识(例如硬盘块设备在/proc/devices 中显示的主设

文档评论(0)

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

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

1亿VIP精品文档

相关文档