linux下的usb硬件驱动开发

linux下的usb硬件驱动开发

ID:6032016

大小:133.50 KB

页数:20页

时间:2017-12-31

linux下的usb硬件驱动开发_第1页
linux下的usb硬件驱动开发_第2页
linux下的usb硬件驱动开发_第3页
linux下的usb硬件驱动开发_第4页
linux下的usb硬件驱动开发_第5页
资源描述:

《linux下的usb硬件驱动开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux下的硬件驱动——USB设备(上)相关技术基础模块(驱动程序)模块(module)是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能独立运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。模块最主要的用处就是用来实现设备驱动程序。Linux下对于一个硬件的驱动,可以有两种方式:直接加载到内核代码中,启动内核时就会驱动此硬件设备。另一种就是以模块方式,编译生成一个.o文件。当应用程序需要时再加载进内核空间运行。所以我们所说的一个硬件的驱动程序,通常指的就是一个驱动模块。设备文件对于一个设备,它可以在/de

2、v下面存在一个对应的逻辑设备节点,这个节点以文件的形式存在,但它不是普通意义上的文件,它是设备文件,更确切的说,它是设备节点。这个节点是通过mknod命令建立的,其中指定了主设备号和次设备号。主设备号表明了某一类设备,一般对应着确定的驱动程序;次设备号一般是区分不同属性,例如不同的使用方法,不同的位置,不同的操作。这个设备号是从/proc/devices文件中获得的,所以一般是先有驱动程序在内核中,才有设备节点在目录中。这个设备号(特指主设备号)的主要作用,就是声明设备所使用的驱动程序。驱动程序和设备号是一一对应的,当你打开一个设备文件时,操作系统

3、就已经知道这个设备所对应的驱动程序。SCSI设备SCSI是有别于IDE的一个计算机标准接口。现在大部分平板式扫描仪、CD-R刻录机、MO光磁盘机等渐渐趋向使用SCSI接口,加之SCSI又能提供一个高速传送通道,所以,接触到SCSI设备的用户会越来越多。Linux支持很多种的SCSI设备,例如:SCSI硬盘、SCSI光驱、SCSI磁带机。更重要的是,Linux提供了IDE设备对SCSI的模拟(ide-scsi.o模块),我们通常会就把IDE光驱模拟为SCSI光驱进行访问。因为在Linux中很多软件都只能操作SCSI光驱。例如大多数刻录软件、一些媒体播

4、放软件。通常我们的USB存储设备,也模拟为SCSI硬盘而进行访问。Linux硬件驱动架构对于一个硬件,Linux是这样来进行驱动的:首先,我们必须提供一个.o的驱动模块文件(这里我们只说明模块方式,其实内核方式是类似的)。我们要使用这个驱动程序,首先要加载运行它(insmod*.o)。这样驱动就会根据自己的类型(字符设备类型或块设备类型,例如鼠标就是字符设备而硬盘就是块设备)向系统注册,注册成功系统会反馈一个主设备号,这个主设备号就是系统对它的唯一标识(例如硬盘块设备在/proc/devices中显示的主设备号为3,我们用ls-l/dev/had看

5、到的主设备就肯定是3)。驱动就是根据此主设备号来创建一个一般放置在/dev目录下的设备文件(mknod命令用来创建它,它必须用主设备号这个参数)。在我们要访问此硬件时,就可以对设备文件通过open、read、write等命令进行。而驱动就会接收到相应的read、write操作而根据自己的模块中的相应函数进行了。其中还有几个比较有关系的东西:一个是/lib/modules/2.4.XX目录,它下面就是针对当前内核版本的模块。只要你的模块依赖关系正确(可以通过depmod设置),你就可以通过modprobe命令加载而不需要知道具体模块文件位置。另一个是

6、/etc/modules.conf文件,它定义了一些常用设备的别名。系统就可以在需要此设备支持时,正确寻找驱动模块。例如aliaseth0e100,就代表第一块网卡的驱动模块为e100.o。他们的关系图如下:配置USB设备内核中配置.要启用LinuxUSB支持,首先进入"USBsupport"节并启用"SupportforUSB"选项(对应模块为usbcore.o)。尽管这个步骤相当直观明了,但接下来的LinuxUSB设置步骤则会让人感到糊涂。特别地,现在需要选择用于系统的正确USB主控制器驱动程序。选项是"EHCI"(对应模块为ehci-hcd.

7、o)、"UHCI"(对应模块为usb-uhci.o)、"UHCI(alternatedriver)"和"OHCI"(对应模块为usb-ohci.o)。这是许多人对Linux的USB开始感到困惑的地方。要理解"EHCI"及其同类是什么,首先要知道每块支持插入USB设备的主板或PCI卡都需要有USB主控制器芯片组。这个特别的芯片组与插入系统的USB设备进行相互操作,并负责处理允许USB设备与系统其它部分通信所必需的所有低层次细节。LinuxUSB驱动程序有三种不同的USB主控制器选项是因为在主板和PCI卡上有三种不同类型的USB芯片。"EHCI"驱动程

8、序设计成为实现新的高速USB2.0协议的芯片提供支持。"OHCI"驱动程序用来为非PC系统上的(以及带有SiS和ALi芯片

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。