分类: 嵌入式
2013-07-25 22:00:44
HCD层主要用于HC的管理控制,并为USBD层提供了统一的函数控制接口。
从硬件结构来数,HC是一种PCI设备,类似于PCI网卡。与PCI网卡相比,除了USB接口与网线的区别之外,还存在一个区别:PCI网卡的硬件接口都随着生产商的不同而不同,而HC设备的生产商生产的产品都必须严格遵照OHCI或者UHCI规范,因此从软件上来说只需要提供了OHCI和UHCI规范的软件接口,就可以为所有的HC提供驱动。本章将以OHCI为例对HCD层详细加以分析。
因此HCD主要包括以下几个部分:PCI配置部分、OHCI实现部分以及为USBD层提供的标准接口部分。
PCI接口的配置主要有函数库usrUsbHcdOhciInit来完成,函数库usrUsbHcdOhciInit中只有一个函数usrUsbHcdOhciAttach,这个函数库比较简单:首先在所有以经探测到的PCI设备中检查有没有OHCI类型的设备(OHCI_CLASS、OHCI_SUBCLASS、OHCI_PGMIF),一旦找到符合的设备就会调用usbPciConfigHeaderGet函数读取该设备的配置头以获取该设备的内存映射等信息,并调用函数usbdHcdAttach加载HC层的驱动。