[转载]Linux 那些事儿之我是U 盘
转载此文没有别的意思,只是为了让刚学编程的C初学者知道,C语言除了考二级和做谭老头的加减乘除题之外还有别的用处.
摘要
2005 年6 月,复旦大学微电子系本科毕业答辩上,老师问我:请你用一句话介绍一下usb 技
术.我回了一句:老师,你有病吧,要能用一句话介绍我还费这么大劲写这么长的文章干嘛?
关键词:Linux, Kernel, 2.6, bus, usb, device driver, mass storage, scsi,
urb, bulk, control, host, pipe, command, 林志玲
-------------------------------------------------------------------------------------------------
我不喜欢躺在床上听,而是喜欢一边听一边做
点别的事情,于是心血来潮的决定,写点文字吧,听着电波里别人分享心情,不妨也用文字来记
录自己的心情吧.
我首先想到的是写一些和Linux 相关的文字.事实上我并不喜欢Linux,学习Linux 完全是一
种无奈,工作中要用,迫于生计,不得不去学习,而学习Linux 的过程中唯一让我觉得还有些乐
趣的是当遇到问题的时候可以去网上问去网上查,很多人写了很多文档可以让我们这些菜鸟
们参考学习,这样才让我们在工作中走了很多弯路.挺感谢那些分享自己知识的人.碰巧最近
3
我也看了点冬冬,并且这些冬冬在网上的资料也比较少,所以我想我不妨也把自己那一夜的
收获写出来,或许以后也能给别人提供一些帮助,想想也是,整个Linux 社区不正是这样吗,像
陈奕迅唱的那样,”把一个人的温暖转移到另一个人的胸膛”.
我要写的是Linux 设备驱动程序相关的,主要分析的是Linux 中与U 盘相关的那部分代码.
过去也没有看过,但是今年4 月底的某一天,一个偶然的原因,我一时冲动就看了一遍.我们几
个同学在人大附近打麻将,打到夜深了,因为我们几人人住的位置都离得挺远的,各自回去都
得打车,于是决定不如去权金城开个房间,晚上就睡那得了.在权金城洗浴中心,和几个同学洗
浴过后,有人去按摩了,而我和另一个人则留在了房间里,无聊中,那位哥们见我带了电脑,说
他有部A 片,很不错,不是很大,所以他存在U 盘里的,他还挺逗的说这是2008 年北京奥运会
指定A 片,问我有没有兴趣,这还用问,当然有兴趣了,于是立马打开电脑,插入u 盘,然后不一
会我就傻了,因为我的电脑根本就不能识别U盘,首先我的电脑比较旧,装的是双系统,一个是
Win 98,这个没办法,没有U 盘驱动,另一个是Linux,2.6 的内核,按理应该是支持U 盘的,
问题是实际情况却是我没有看到U 盘,/dev/目录下面根本没有这么一个盘符,于是我没办法
了,一脸沮丧,而同学在旁边自然表示出了对Linux 很鄙视的神情.
过了一会,他去看电视了,正好有英超,我却没有心情看电视,想想就觉得奇怪,怎么会不能使
用U 盘呢,这不可能啊,一定是我自己对Linux 下面的一些冬冬没有弄清楚,于是我决定好好
看看问题到底出在哪,记得当时看了一下/var/log/messages 这个日志文件里边好像记录
了一些信息,感觉像是一些错误信息,但是看不明白它到底在说什么.同学开始劝我,算了算了,
改天再看吧,这话我可不愿意听,不是说Linux 内核源代码是公开的吗,大不了看看源代码,搞
清楚工作原理了还怕问题不能解决?无非就是一些C 代码而已,好歹哥们也是认真学过谭浩
强大哥那本C 程序设计的.而且当初那本书课后习题老师基本上都让我们做了,虽说是参考
了那本习题解答的书,可就算写代码不行,读代码还是没问题吧,语法什么的基本上还是很清
楚的,什么判断结构循环结构,包括goto 语句,还是记得的.
所以我就开始看了,正所谓梦想有多远,就能走多远.以前我只是玩CS 玩仙剑的时候能够整
晚整晚不睡,但那个晚上,为了告诉我同学,Linux 下也能看A 片,Linux 下遇到问题更适合自
己解决,我愣是从一点看到快天亮,终于把drivers/usb/storage/目录下面一万余行的代码
给看了一遍.当然没有看得太仔细,但是很显然把整个原理搞清楚了,问题也很快得以解决.
所以此刻,我整理了一下思路,决定把那晚看的冬冬用文字记录下来.也算为了纪念那个不寻
常的夜晚吧.不过我估计这个篇幅不会短,因为光那一万余行的代码贴出来就得占许许多多
页了,所以这件事情也许会占用我不少时间,然而,还好,每晚有北京不眠夜的陪伴,而且,也许
当我把心思投入到写这个故事的时候,能够把那些压力那些烦恼那种孤独那种郁闷以及那种
对生活的绝望给暂时忘记些许...............