Linux那些事儿 之 戏说USB(7)不一样的core

使用命令lsmod,看看它的输出,然后找这么个模块usbcore,不要说你找不到,我不会相信的。它是什么?它就是咱们这里要说的usb系统的核心,如果要在linux里使用usb,这个模块是必不可少的,另外,你应该在usbcore那一行的后面看到ehci_hcd或uhci_hcd这样的东东,它们就是前面说的usb host controller的驱动模块,你的usb设备要工作,合适的usb host controller模块也是必不可少的。不过,咱们这里的主角还是usbcore。
usb core负责实现一些核心的功能,为别的设备驱动程序提供服务,提供一个用于访问和控制USB硬件的接口,而不用去考虑系统当前存在哪种host controller。至于core、host controller和driver三者之间的关系,还是用ldd3的图来说明吧。


driver和host controller像不像core的两个保镖?没办法,这可是core啊。协议里也说了,host controller的驱动(HCD)必须位于USB软件的最下一层。HCD提供host controller硬件的抽象,隐藏硬件的细节,在host controller之下是物理的USB及所有与之连接的USB设备。而HCD只有一个客户,对一个人负责,就是咱们的USB core,USB core将用户的请求映射到相关的HCD,用户不能直接访问HCD。

咱们写USB驱动的时候,只能调用core的接口,core会将咱们的请求发送给相应的HCD,用得着咱们操心的只有这么一亩三分地,core为咱们完成了大部分的工作,linux的哲学是不是和咱们生活中不太一样那?

走到drivers/usb/core里去,使用ls瞧一瞧看一看,

buffer.c  devices.c  driver.c    file.c     hcd.c      hub.c  Kconfig   message.c  otg_whitelist.h  quirks.c  urb.c       usb.c
config.c  devio.c    endpoint.c  generic.c  hcd-pci.c  hub.h  Makefile  notify.c   port.c           sysfs.c   usb-acpi.c  usb.h

使用wc –l命令统计一下,将近两万行的代码,core不愧是core,为大家默默的做这么多事,人民的好公仆鞠躬尽瘁,我会用一颗感恩的心去深刻理解你的内心回报你的付出的。Linux背后的哲学是不是又和我们生活中不一样?

看看Makefile。

#
# Makefile for USB Core files and filesystem
#

usbcore-y := usb.o hub.o hcd.o urb.o message.o driver.o
usbcore-y += config.o file.o buffer.o sysfs.o endpoint.o
usbcore-y += devio.o notify.o generic.o quirks.o devices.o
usbcore-y += port.o

usbcore-$(CONFIG_PCI)		+= hcd-pci.o
usbcore-$(CONFIG_ACPI)		+= usb-acpi.o

obj-$(CONFIG_USB)		+= usbcore.o
Makefile可比Kconfig简略多了,所以看起来也更亲切点,咱们总是拿的money越多越好,看的代码越少越好。这里之所以会出现CONFIG_PCI,是因为通常USB的root hub包含在一个PCI设备中,前面也已经聊过了。hcd-pci 和 hcd 顾名而思义就知道是说host controller的,它们实现了host controller公共部分,按协议里的说法它们就是HCDI(HCD的公共接口),host目录下则实现了各种不同的host controller,咱们这里不怎么会聊到具体host controller的实现。

这么看来,好像大都需要关注的样子,没有减轻多少压力,不过这里本身就是usb core部分,是要做很多的事为咱们分忧的,所以多点也是可以理解的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值