极限首页 业界焦点 软件工程师之路 系统工程师之路 网络工程师之路 软件下载 技术社区
 Linux操作系统的内核编译内
 Linux下设备完全驱动之二
 Linux下设备完全驱动之三
 Linux下设备完全驱动之一
 Linux内核如何从2.4升级到
 开源世界的虚拟机 QEMU
 Linux下软件RAID的实现
 RHEL4内建LVM工具入门
 linux SSH 的一些安全小技
 Cron服务配置详解
 Linux操作系统的内核编译内
 Linux下设备完全驱动之二
 Linux下设备完全驱动之三
 Linux下设备完全驱动之一
 Linux内核如何从2.4升级到
 开源世界的虚拟机 QEMU
 Linux下软件RAID的实现
 RHEL4内建LVM工具入门
 linux SSH 的一些安全小技
 Cron服务配置详解

Shell 中文手册

Python 2.3 中文手册

Python 2.4 中文手册

Mysql 4.x 中文手册

PHP 4.x 中文手册

Apache 2.x 中文手册
更多手册

站内搜索:
当前位置:首页>>系统工程师之路>>管理进阶>>正文
Linux下设备完全驱动之四(1)
时间:2005-09-25 作者:郄晓烨 来源:赛迪比如,scanner.o模块对应的就是USB扫描仪的驱动;

  尽管各种数码设备越来越多,但是Linux在对它们的配置上还没有做到像Windows一样方便,很多人正是因为心爱的数码相机无法在Linux下使用,而不得不保留一个Windows系统。所以,掌握如优盘、移动硬盘、数码相机等设备在Linux下的驱动方法,对于熟练使用Linux而言是必备的技能。

这一讲将会介绍常见USB、IEEE1394、PCMCIA等移动设备的驱动概念和安装技巧,为读者更好地配置和使用这些设备提供帮助。

USB设备驱动概述

USB是通用串行总线(Universal Serial Bus),是在1994年由Intel、NEC、微软和IBM等公司共同提出的。USB的目的在于将众多的接口(串口、并口、PS2口等),改为通用的标准。它仅仅使用一个4针插头作为标准插头,并通过这个标准接头连接各种外设,如鼠标、键盘、游戏手柄、打印机、数码相机等。USB接口的特点是支持热插拔,支持单接口上接多个设备等。

USB的优点此处不再赘述,我们主要来看一看Linux对USB的支持。USB采用串行方式传输数据,USB 1.1最大数据传输率为12Mbps,Linux内核为2.4以上版本都可以支持。

USB 2.0规范是由USB 1.1规范演变而来的,它理论上速度较1.1提高了40倍,达到了480Mb/s,但目前常见的USB 2.0设备只能达到理论值的一半。 Linux内核2.4.19版本开始对USB 2.0进行支持。

除了内核的版本要对USB接口进行支持之外,还要确定目前的系统是否编译了USB的驱动模块。如果让Linux系统支持USB设备,还需要一些驱动模块。我们都知道内置的驱动程序一般都在 /lib/modules/2.4XXX/kernel/drivers目录中。这个目录中会有usb及几个子目录,可以从中找到以下的几个USB关键基础模块:

usbcore.o 所有USB设备都需要的基本驱动模块;

host/ehci-hcd.o USB 2.0设备支持;

host/usb-uhci.o Intel VIA等芯片组USB部分的驱动;

host/usb-ohci.o iMac、SiS、Ali等非Intel芯片组USB部分的驱动;

storage/usb-storage.o USB接口的存储设备,如移动硬盘、U盘等都会用到;

hid.o USB接口的键盘、鼠标等人机交互设备的基础支持。

在该目录下还有一些具体设备的驱动程序,分别驱动不同设备:

# ls -p /lib/modules/2.4.21-4.EL/kernel/drivers/usb/
            acm.o      CDCEther.o  hpusbscsi.o  microtek.o   rtl8150.o  usbcore.o   wacom.o
            audio.o    dabusb.o    kaweth.o     pegasus.o    scanner.o  usb-midi.o
            brlvger.o  hid.o       kbtab.o      powermate.o  serial/    usbnet.o
            catc.o     host/       mdc800.o     printer.o    storage/   uss720.o

usb-storage.o USB对与存储部分的驱动模块;

scsi_mod.o 对SCSI设备的支持;

sd_mod.o 对SCSI硬盘支持模块,针对USB硬盘;

sr_mod.o 对SCSI光盘支持模块,针对USB光驱;

sg.o SCSI序列的通用支持模块;

ide-scsi.o 该模块可以把IDE设备模拟成SCSI接口。

通过查看/lib/modules/2.XXX/modules.dep文件,可以查看上述这些模块是否存在。一般情况下这些模块已经被编译,否则需要重新编译内核模块。

在正确地装载了驱动以后,可以通过访问/dev/sd?设备来访问优盘或移动硬盘。通常情况下,通过访问sda1来访问移动硬盘或优盘的第一个分区。在USB基本驱动存在的情况下插入优盘,就可以看到如下信息:

usb.c: USB device 7 (vend/prod 0xea0/0x6803) is not claimed by any active driver.
            Starting timer : 0 0
            Vendor: Netac     Model: OnlyDisk     Rev: 1.11
            Type:   Direct-Access     ANSI SCSI revision: 02
            Starting timer : 0 0
            Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
            SCSI device sda: 32256 512-byte hdwr sectors (17 MB)
            sda: Write Protect is off


上面这一段是usb-storage.o和SCSI驱动在起作用,我们可以看到优盘被认成是sda,要使用它可以先查看分区表:

# fdisk -l /dev/sda
            Disk /dev/sda: 16 MB, 16515072 bytes
            2 heads, 32 sectors/track, 504 cylinders
            Units = cylinders of 64 * 512 = 32768 bytes
            Device Boot    Start       End    Blocks   Id  System
            /dev/sda1   *         1       503     16080    1  FAT12
            # mkdir /mnt/usb
            # mount -t msdos /dev/sda1 /mnt/usb    该优盘得类型为FAT12


之后就可以通过访问/mnt/usb来访问优盘了。注意,如果要拔掉优盘或移动存储设备,请先umount然后再拔出,这样可以保证数据全部被写入,否则系统会出错,数据可能不完整。

# umount /mnt/usb

USB数码相机的驱动

数码相机类型繁多,但是在Linux下使用数码相机有比较简便的方法。我们知道USB接口是数码相机的主要接口,在Linux中访问数码相机,通常可以通过下面两种方法。

1.使用专门软件

Red Hat Linux中自带的gtkam软件是一个提供了数码照相机图形化界面的程序,它支持100多种数码相机。gtkam可以直接与数码照相机相连,允许直接打开、查看、并删除图像。在Red Hat 9.0的光盘中,有gtkam的RPM包:

# ls gtkam*
            gtkam-XXXX.i386.rpm  gtkam-gimp-XXXX.i386.rpm
            # rpm -ivh --aid gtkam*
            # rpm -ivh --aid --force gphoto2-XXXX.i386.rpm


gtkam基于gphoto,有时无法使用gtkam的原因是因为gphoto没有安装或模块被覆盖,所以需要重新安装gphoto。安装完毕后,在X-Window中运行gtkam就可以看到如图1所示界面。

# gtkam

图1 gtkam界面



在图1中,单击gtkam的“camera”→“Add Camera”可以添加数码相机,然后在弹出的窗体中单击“Detect”,测试数码相机的连接类型。最后单击“OK”,就可以看到数码相机中的照片了。

图2所示使用gtkam连接Kodak DX6340相机,看到存储卡中的照片。选择照片,单击保存就可以把照片保存到硬盘上。

我们也可以从http://sourceforge.net/project/showfiles.php?group_id=8874&release_id=209817获得gtkam的最新版本及源代码,下载后可以使用其中的install.sh来进行安装。

2.把数码相机当做是USB存储设备还有一种方式就是把数码相机当做是USB存储设备,如优盘、读卡器等,这样就可以像访问优盘那样来访问数码相机:

# mount -t vfat /dev/sda1 /mnt/usb



但是,采用这种方式极有可能遇到不能支持的数码相机,比如笔者使用的Kodak DX6340数码相机,插入USB口之后出现以下信息:

usb.c: USB device 2 (vend/prod 0x40a/0x570)
            is not claimed by any active driver.



对这种问题的解决办法不只是可以驱动不支持的数码相机,像不支持的存储设备也都可以使用,比如优盘、读卡器等。

(1)使用lsmod确定USB基本驱动模块已经装载,如果没有使用以上的命令装载:

# modprobe ehci-hcd; modprobe usb-uhci;
            modprobe usb-storage
            # modprobe  ide-scsi; modprobe scsi_mod;
            modprobe sd_mod



(2)使用cat /proc/bus/usb/devices得到当前系统USB总线上的设备信息,尤其注意Vendor、ProdID、Product等信息:

C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
            I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
            E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
            T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
            D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
            P:  Vendor=040a ProdID=0570 Rev= 1.00
            S:  Manufacturer=Eastman Kodak Company
            S:  Product=KODAK EasyShare DX6340 Zoom Digital Camera
            S:  SerialNumber=KCKCJ33400274



  共3页: 1 [2] [3] 下一页   
推荐】【 】【关闭


关于极限 | 站内地图 | 意见反馈 | 广告服务 | 数据服务 | 联系我们
本站所刊登的文章,技术资料,软件均整理于网络资源或本站原创,转载请务必联系原作者或本站。
Copyright ? 2001-2004 UPLinux.com All Rights Reserved.
本站唯一联系信箱:
京ICP备05010519