使用命令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的图来说明吧。
咱们写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。
usb core负责实现一些核心的功能,为别的设备驱动程序提供服务,提供一个用于访问和控制USB硬件的接口,而不用去考虑系统当前存在哪种host controller。至于core、host controller和driver三者之间的关系,还是用ldd3的图来说明吧。
咱们写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部分,是要做很多的事为咱们分忧的,所以多点也是可以理解的。