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

這個故事中使用的是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之後,心情明顯好了許多。

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

發佈了7 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章