《Linux那些事儿之我是USB》我是U盘(1)小城故事

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 23:04 点击:

 

这个故事中使用的是2.6.22的内核代码。在Linux内核代码目录中,所有与设备驱动程序有关的代码都在drivers/目录下面,在这个目录中用ls命令可以看到很多子目录:

 

lfg1:/usr/src/linux-2.6.22/drivers # ls

 

Kconfig   acpi   atm   block    char   cpufreq   dma   fc4       hid    ide

 

input   leds     md    mfd   mtd   oprofile   pci   ps3   s390   serial   spi

 

usb    zorro  Makefile  amba  auxdisplay  bluetooth  clocksource  crypto

 

edac  firewire  hwmon  ieee1394    isdn   macintosh  media    misc  net

 

parisc    pcmcia  rapidio  sbus  sh      tc         video  acorn     ata

 

base        cdrom      connector    dio      eisa  firmware  i2c    infiniband

 

kvm    mca        message  mmc   nubus  parport   pnp     rtc      scsi  sn

 

telephony  w1

 

其中usb目录包含了所有USB设备的驱动,而usb目录下面又有它自己的子目录,进去看一下,

 

lfg1:/usr/src/linux-2.6.22/drivers # cd usb/

 

lfg1:/usr/src/linux-2.6.22/drivers/usb # ls

 

Kconfig  Makefile  README  atm  class  core  gadget  host  image  misc  mon

 

serial  storage  usb-skeleton.c

 

注意到每一个目录下面都有一个Kconfig文件和Makefile,这很重要。稍后会有介绍。

 

而我们的故事其实是围绕着drivers/usb/storage这个目录来展开的。实际上这里边的代码清清楚楚地展示了我们日常频繁接触的U盘是如何工作的,是如何被驱动起来的。但是这个目录里边的代码并不是生活在世外桃源,它们总是和外面的世界有着千丝万缕的瓜葛。可以继续进来看一下:

 

lfg1:/usr/src/linux-2.6.22/drivers/usb # cd storage/

 

lfg1:/usr/src/linux-2.6.22/drivers/usb/storage # ls

 

Kconfig   alauda.h   debug.c  dpcm.h     initializers.c  isd200.h    karma.c

 

onetouch.c  protocol.h  sddr09.c  sddr55.h         transport.c     usb.c

 

Makefile  datafab.c  debug.h  freecom.c  initializers.h  jumpshot.c

 

karma.h     onetouch.h  scsiglue.c  sddr09.h  shuttle_usbat.c  transport.h

 

usb.h    alauda.c  datafab.h  dpcm.c   freecom.h  isd200.c        jumpshot.h

 

libusual.c  protocol.c  scsiglue.h  sddr55.c  shuttle_usbat.h

 

unusual_devs.h

 

乍一看,着实吓了一跳,用`wc -l *`这个命令统计一下,15455行!但是,也许,生活中总是充满了跌宕起伏。

 

认真看了一下Makefile和Kconfig之后,心情明显好了许多。

 

 

 

********************************************

 

原文摘自《Linux那些事儿之我是USB》

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • /etc/fstab 详解
    • nginx主主集群
    •  LVS-NAT和LVS-DR模式的实现详解
    •  RHCE考试之磁盘配额
    • 学习笔记:ACL详解
    • suse linux双网卡双网关配置
    •  LVM逻辑卷管理器
    •  Nginx主主负载均衡架构
    • ubuntu学习Mysql

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1