免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5175 | 回复: 4

《Linux那些事儿之我是USB》 [复制链接]

论坛徽章:
0
发表于 2010-07-29 17:07 |显示全部楼层
本帖最后由 ilttv.cn 于 2010-07-29 17:09 编辑

关于《Linux那些事儿》,曾经有不少网友问我们什么时候能出纸质的,也曾经有若干出版社联系过出版,但都由于里面的一些内容过于的娱乐了而不了了之。本来在写的时候就没想着去出版,只是娱乐自己的同时娱乐娱乐大家而已,不过最终博文视点还是决定出了,在这里感谢孙编辑、王编辑。当然里面去掉了若干敏感的内容,但大家喜欢的精粹还在,风格也没变,呵呵。这本内容上是u盘、hub、uhci、core四个部分的合订本,增加了内容导读,内核版本统一更新到22内核,同时也添加了若干新货色。

博客:blog.csdn.net/fudan_abc
网上购买的链接有:china-pub

论坛徽章:
0
发表于 2010-07-29 20:08 |显示全部楼层
回复 1# ilttv.cn

前言

    1992年,那是一个春天。不过其实1991年又何尝不是一个春天呢,因为正是在那一年,Linux诞生了。又因为开放源代码的缘故,十几年来Linux是越来越火,熊熊火焰也烧到了华夏大地。诸多高校开始开设Linux相关的课程,诸多企业开始招聘Linux相关的人才。市面上关于Linux的书籍也层出不穷,而这其中大致分为两类,一类是应用方面的,比如介绍如何组建各种服务器啊,另一类是内核方面的,主要都是对内核源代码的进行分析,这方面的书籍则以《Linux设备驱动程序》和《深入理解Linux内核》为经典代表。而从眼下国内的人才市场来看,懂Linux内核的找工作肯定不用发愁。事实上,可以不夸张的说,当代大学生,如果能够看完以上这两本书,并且能够看懂,那么在北京在上海在深圳这些一线城市,很容易就能找到一份体面的技术类工作。

那么为什么我们还要另起炉灶再写一本Linux内核方面的书籍呢?因为Linux内核包含大量的代码,以上面两本书为代表的很多Linux内核的书籍涵盖的内容太广,大多数书籍都是把Linux内核中的各个部分逐一的进行介绍和分析,然而实际情况是没有任何一个人能够对Linux内核的各个部分都很精通,包括Linus Torvalds本人,一个对Linux开发感兴趣的人也不一定需要并且也没有足够的时间对Linux的每个部分都去深入理解,而另一方面来说,很多对Linux内核感兴趣的朋友常常被一个问题所困扰,那就是Linux内核那么庞大的代码量,对于初学者来说,应该从哪里学起呢?关于这一点,其实《Linux设备驱动程序》给出了很好的答案,学习驱动程序代码是最有效的入门方法。第一是因为在庞大的Linux内核源代码中,大约超过87.53%是各种驱动程序代码,其重要性可想而知,第二是因为相比较来说,驱动程序的代码其难度是比较低的,很少涉及复杂高深的算法,所以适合初学者研读。

然而网友永不堕落曾经问过我们,既然已经有了《Linux设备驱动程序》,为什么你们还要写一本Linux设备驱动程序相关的书呢?你们这样做是不是行为艺术呢?这里我们想说的是,虽然《Linux设备驱动程序》这本书很好很强大,把各种类型的设备驱动程序都给介绍了一番,可是当一些读者读完这本书之后,他们敢说自己会写Linux设备驱动程序了吗?他们敢说自己完全了解一个真实的Linux设备驱动程序是怎么写的吗?至少本书作者当年在看完这本书之后,虽然觉得获益匪浅,可是仍然不太清楚真实的Linux设备驱动程序是怎么写的,仍然不敢很傻很天真的以为自己就会写Linux设备驱动程序了。这才有了后来决定亲自选择一个子系统进行研究,并在研究好了之后把研究心得写出来,与大家进行分享。最终我们选择的是USB子系统,原因很简单,USB总线以及连接在USB总线上的各种USB设备已经广泛的出现在了当代计算机上,广大计算机用户,尤其是高校学生,接触得最多的设备也正是USB设备,所以研究和分析USB总线以及它上面的各种USB设备应该能让大家感到很亲切很真实并且具有相当的实用价值和怀旧意义。毕竟,子曾经曰过:USB总线就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤!

本书的编写得到了许多人的帮助,我们向他们致以诚挚的谢意。首先感谢孙学瑛编辑,没有她的努力,这本书的内容将会一直偏居网络一隅,将不可能被出版从而去帮助更多需要的人。然后要感谢很多在技术上给予我们指导与帮助的老师和朋友,特别是USB这边的maintaner之一,Alan Stem大侠对我们的问题的耐心解答与回复。

论坛徽章:
0
发表于 2010-07-29 21:40 |显示全部楼层
还以为是电子版,失望啊

论坛徽章:
0
发表于 2010-08-02 10:01 |显示全部楼层
我是U盘 之 小城故事

这个故事中使用的是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之后,心情明显好了许多。

论坛徽章:
0
发表于 2010-08-02 12:09 |显示全部楼层
不想买书他的blog好像也有~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP