2.跟我走吧,现在就出发

这里说的是USB中的Hub。在USB的世界里,Hub永远都只是绿叶,它不可能是红花,它的存在只是为了支持更多设备连接到USB总线上来,谁也不会为了使用Hub而购买Hub,买Hub的原因是为了要使用别的设备。

也许设计代码的人和我一样,希望大家能够更多地关注Hub,所以,关于Hub的代码在Core的目录下面。

在Linux内核代码目录中, 所有设备驱动程序有关的代码都在drivers/目录下面,在这个目录中的USB子目录包含了所有USB设备的驱动,而USB目录下面又有它自己的子目录。

注意到每一个目录下面都有一个Kconfig文件和一个Makefile,这很重要。再厉害的黑客如果不看Makefile,不看Kconfig,也别想搞清楚这里的结构。很多年轻人喜欢研究usb-skeleton.c,据说这个文件对他们很有启发,所以这里我也推荐这个文件。有时间有兴趣的话可以看一看,其实就是一个简单的USB设备驱动程序的框架。

执行命令lsmod,查看它的输出,找到了USBcore那一行吗?Core就是核心,你需要在你的电脑里用USB设备,那么两个模块是必需的,一个是usbcore,这就是核心模块;另一个是主机控制器的驱动程序,比如在usbcore那一行看到的ehci_hcd和uhci_hcd。

什么是EHCI? OHCI就是主机控制器的接口。从硬件上来说,USB设备要想工作,除了外设本身,必须还有一个USB主机控制器。一般来说,一个电脑里有一个USB主机控制器就可以了,它就可以控制很多个设备了,比如U盘,USB键盘,USB鼠标。所有的外设都把自己的请求提交给USB主机控制器。然后让USB主机控制器统一来调度。而设备怎么连到主机控制器上?这就是我们故事的主角--Hub,"乳名"叫做集线器。

关于Hub的代码,在drivers/usb/core/目录下面,有一个叫做hub.c的文件。这个文件可不简单。

 
  1. localhost:/usr/src/linux-2.6.22/drivers/usb/core # wc -l hub.c
  2. 3122 hub.c

Hub竟然有三千多行代码,真要是按行计费,写代码的那些家伙还不发财了?事实还好不是那样。

三千多行就三千多行吧,总不能见困难就退吧。跟我走吧,现在就出发。

2.跟我走吧,现在就出发相关推荐

  1. Linux那些事儿之我是Hub(1)跟我走吧,现在就出发

    最早知道hub是在大学里,复旦的4人间宿舍,条件真好,每个人一张书桌,书桌下面一个网口,但是有时候网口坏了,那可急死人了,要知道当初我们买电脑初衷虽说是为了学习C语言,可是买了之后,C倒是没学,先学了 ...

  2. 大话Linux之 跟我走吧,现在就出发[0]引子

    各位看官,大家好: 小生,这厢有礼了.迫于生计,不得已开始了跟Linux这个洋妞的亲密接触.刚刚开始,对其还不甚了解,又是泊来品,大部分对于她的介绍都是鹰文,偶又不善鸟语,因此只能看翻译成我堂堂中华文 ...

  3. 大话Linux之 跟我走吧,现在就出发[2]Linux我想和你在一起(2)Vim,vim,I love you!有图有真相!

    各位看官好: 这回,我们专门将vim这个家伙,说起vim,很多大牛们跟他可谓是最熟悉不过了.他可是仅次于emacs大哥的.vim下最最好用的编辑工具,当然这个看个人爱好.反正我是比较喜欢用,所以呢,今 ...

  4. Linux系统USB驱动目录,Linux那些事儿之我是USB 目录

    目录 第1篇  Linux那些事儿之我是USB Core 1.引子 2 2.它从哪里来 2 3.PK 3 4.漫漫辛酸路 3 5.我型我秀 4 6.我是一棵树 5 7.我是谁 9 8.好戏开始了 11 ...

  5. 编译原理什么是移进规约冲突_编译原理复习题

    可以微信扫码观看 河南城建 <编译原理>复习题丨杨海振整理丨20150521 一.单项选择题 1.构造编译程序应掌握   .D a. 源程序                         ...

  6. POJ1067 取石子游戏 跪跪跪,很好的博弈论

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29951   Accepted: 9814 Descriptio ...

  7. 从复杂指令系统到精简指令系统

    指令系统的发展有两种截然不同的方向, 一种是增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化: 另一种是减少指令种类和简化指令功能,提高指令的执行速度.前者称为复杂指令系统,后者称为精简指令 ...

  8. 五边形顶点坐标_足球顶点坐标的计算

    &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 预备知识 解三棱锥顶角,空间旋转矩阵 图 1:足球透视图 足 ...

  9. 跳棋最少移动次数 java,跳棋

    电脑智能升级难度更大, 采用隔空跳的规则,这样变化更多一些,可玩性更好, 是一个eclipse的工程, 现在是最新版本: 1.修改电脑的智力,难度更高,要战胜电脑?你有10%的机会 2.现在支持多个玩 ...

最新文章

  1. 微信服务号 微信支付开发
  2. TP5与TP3.X对比
  3. 要想能安心,必须先死心。
  4. eclipse 插件打包发布
  5. [转]MPlayer快捷键参数设置--系统开销最少的影音播放器
  6. 图书管理系统详细设计说明书_书城管理系统不同模块在图书管理中体现不同作用...
  7. 如何找回系统盘丢失的空间
  8. 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题
  9. 博客生活的另一种境界![博友话题]
  10. Ubuntu之查看依赖软件
  11. 1.PHP7内核剖析 --- PHP 基础架构
  12. java.lang.NoClassDefFoundError: com.mobclick.android.MobclickAgent
  13. 数学建模美赛该如何准备?
  14. Java写的答题助手项目分析与总结(二)
  15. 规划风险应对-规划过程组
  16. Android苹方圆三合一字体,橘色主题-圆形图标 内置苹方+googlesans字体 透明文件夹...
  17. 12.利用API抓取数据
  18. linux_ohs安装_weblogic进行管理
  19. Paxos太难懂?五张图读懂Paxos协议
  20. OPENDATASOURCE 打开excel、access、qsl

热门文章

  1. 一加手机可以刷鸿蒙系统吗,朋友想把1+手机安装鸿蒙系统,老板收费350,大家千万别被骗了!...
  2. 远程连接linux虚拟机和破解虚拟机密码
  3. 导出word单元格间隔空白问题
  4. INSERT INTO… ON DUPLICATE KEY UPDATE用法
  5. matlab抢占时隙算法,RFID动态帧时隙防冲撞改进算法研究
  6. 数据迁移——技术选型
  7. 利用更快的r-cnn深度学习进行目标检测
  8. 唐诗分析 今析古言项目测试 -2
  9. Python - 随机生成英文字母
  10. C51 - DS18B20