Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183059
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 374
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-30 10:46
文章分类

全部博文(34)

文章存档

2018年(5)

2015年(13)

2014年(13)

2013年(3)

我的朋友

分类: 嵌入式

2015-06-12 15:36:27


usb core
负责实现一些核心的功能:为别的设备驱动程序提供服务,提供一个用于访问和控制USB硬件的接口,而不用去考虑系统当前存在哪种host controller

corehost controllerdriver之间的关系如下:
                  USser
  --------------------------------------------------------------------------------------

   vfs layer | block layer | net layer | char layer | TTY layer    
  ---------------------------------------------------------------------
             USB device driver
  ---------------------------------------------------------------------         kernel 
             USB core

  ---------------------------------------------------------------------  
             USB HOST controlers (host controller的驱动)
  ----------------------------------------------------------------------------------------        
              hardware  (物理usb及相连的usb设备

USB device driver 驱动编写的时候,只能调用core的接口
USB core将用户的请求映射到相关的HCD
HCD提供host controller硬件的抽象,隐藏硬件的细节

因此咱们写usb设备驱动程序的时候只需关注:调用core的接口

查看 usb core目录:
ls drivers/usb/core
-rw-rw-r-- 1 lxl lxl   3573 May 17 09:55 buffer.c
-rw-rw-r-- 1 lxl lxl  24823 May 17 09:55 config.c
-rw-rw-r-- 1 lxl lxl  19280 May 17 09:55 devices.c
-rw-rw-r-- 1 lxl lxl  61021 May 17 09:55 devio.c
-rw-rw-r-- 1 lxl lxl  55564 May 17 09:55 driver.c
-rw-rw-r-- 1 lxl lxl   4990 May 17 09:55 endpoint.c
-rw-rw-r-- 1 lxl lxl   6194 May 17 09:55 file.c
-rw-rw-r-- 1 lxl lxl   7117 May 17 09:55 generic.c
-rw-rw-r-- 1 lxl lxl  86447 May 17 09:55 hcd.c
-rw-rw-r-- 1 lxl lxl  17649 May 17 09:55 hcd-pci.c
-rw-rw-r-- 1 lxl lxl 165625 May 17 09:55 hub.c
-rw-rw-r-- 1 lxl lxl   4823 May 17 09:55 hub.h
-rw-rw-r-- 1 lxl lxl   3006 May 17 09:55 Kconfig
-rw-rw-r-- 1 lxl lxl    350 May 17 09:55 Makefile
-rw-rw-r-- 1 lxl lxl  61292 May 17 09:55 message.c
-rw-rw-r-- 1 lxl lxl   1801 May 17 09:55 notify.c
-rw-rw-r-- 1 lxl lxl   3383 May 17 09:55 otg_whitelist.h
-rw-rw-r-- 1 lxl lxl  12952 May 17 09:55 port.c
-rw-rw-r-- 1 lxl lxl   9363 May 17 09:55 quirks.c
-rw-rw-r-- 1 lxl lxl  25244 May 17 09:55 sysfs.c
-rw-rw-r-- 1 lxl lxl  32360 May 17 09:55 urb.c
-rw-rw-r-- 1 lxl lxl   6010 May 17 09:55 usb-acpi.c
-rw-rw-r-- 1 lxl lxl  32023 May 17 09:55 usb.c
-rw-rw-r-- 1 lxl lxl   6266 May 17 09:55 usb.h

同样关注阅读 kconfig makefile文件:
kconfig文件内容可自行查看。
我们看看makefile:
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

注意到其中的 CONFIG_PCI ----- 出现 PCI 接口配置选项,主要是因为USBroot hub包含在一个PCI设备中;
hcd hcd-pci : 顾名思义 就是 host controller driver。core中的连个文件 hcd.c hcd-pci.c 完成了 host controller 驱动的公共部分。
driver/host 目录中则实现了各种不同的host controller







 
阅读(2115) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~