mini2440 usb host device controller驱动分析(一)---host controller

本文介绍了USB Host端驱动的复杂性,特别是mini2440上的ochi-mini2440.c,它是Host Controller Driver,负责配置硬件寄存器。USB Core包括USB Host Driver、Hub Driver、电源管理和设备管理。USB Root Hub是每个Host Controller的一部分,用于检测设备插拔。s3c2440的Host Controller遵循OHCI标准,其驱动通用。文章还讨论了OHCI、EHCI、UCHI标准以及USB通信中的地址分配,并解析了关键的结构体和驱动程序函数。
摘要由CSDN通过智能技术生成

这里接着开始分析usb host端的驱动。

对于USB来讲,host端的驱动比我们之前分析的gadget端的驱动要复杂的多。但是有个好处就是驱动的主体部分已经实现得很完善了,我们写自己的驱动时候需要完成的部分并不多。

下面是host端驱动的结构图。

其中,host controller driver对应于mini2440就是ochi-mini2440.c,host controller driver与硬件关系最密切,负责配置寄存器等等。hcd interface 就是hcd 提供的标准接口,使得usb core中的其他部分可以屏蔽掉 host controller driver的不同。usb core 中实现的部分是usb host驱动的主体,包括了 usb host driver , usb hub driver、 power management 和 device management。再往上层是usmon 和 usb class drivers。其中 usb class drivers 是负责实现具体的功能的,像usb-skeleton.c 就是一个usb class drivers. usb class drivers 在host端负责具体的功能实现,同时向上层提供相应的文件的接口。  与device 部分的驱动类似,像zero.c就是一个device上的class driver,负责实现具体的功能。因为USB提供给我们的只是一个通信的接口,具体我们用usb来实现的功能是要通过host端和device端的class driver来实现的。usbmon是用于调试的,可以抓包。

 

这里,我们先把几个概念说清楚。

1.关于usb root hub。在每个usb host controller上面都集成了一个usb root hub。可以说它是属于usb host controller的一部分。usb root hub 的功能是负责检测 设备的插拔,获取设备的descriptor等。在core中有专门的root hub的驱动。root hub 也被看成了一个 usb device。

2. 关于s3c2440中的usb host controller。在s3c2440的数据手册中 并没有详细的介绍host controller相关的寄存器,s3c2440的host controller可以实现的是OHCI通信标准。这里之所以没有介绍 host controller相关的寄存器,是因为host controller的设计就是符合OHCI标准的,所以,在数据手册中有这样一句话:The S3C2440A USB host controller complies with OHCI Rev 1.0. Refer to Open Host Controller Interface Rev 1.0
specification for detailed information.

所以,对于OHCI标准的实现,在host/ohci-*中,这些软件实现都是通用的,就是因为硬件设计也是通用的。我们看到对于s3c2440还单独实现了s3c2410-ohci.c这个文件,对于这个文件,我们之后可以看到其实并没有完成什么实质性的功能,都是调用ohci的通用函数实现的。在s3c2410-ohci.c中仅仅是进行了封装。

3. 关于OHCI EHCI  UCHI这几个标准。这几个通信标准 反应到软件上其实就是 hcd的驱动,也就是对应图中的usb host controller driver。 而为了屏蔽这三种驱动的不同,所以才提供了HCD interface这一层。

4. 关于usb通信中的地址。usb是一种树状的总线,也需要有地址用来标识数据包发给哪个节

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值