Linux USB驱动架构与实现详解
1. Linux USB HCD概述
1.1 HCD关键接口函数
在Linux USB主机驱动中,HCD(Host Controller Driver)有两个关键接口函数:
-usb_hcd_link_urb_to_ep:HCD入队函数调用此函数将URB(USB Request Block)添加到端点队列。成功时返回0,失败时返回负值表示失败原因。
int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb)usb_hcd_unlink_urb_from_ep:此接口函数用于从端点队列中移除URB。成功时返回0,失败时返回负值表示失败原因。
void usb_hcd_unlink_urb_from_ep(struct usb_hcd *hcd, struct urb *urb)1.2 Linux USB HCD功能与架构
Linux USB HCD是USB主机框架的最底层,与USB主机控制器硬件交互。USB主机驱动实现控制器硬件支持的USB主机规范,其位于drivers/usb/host/文件夹,通过/drivers/usb/core/hcd.c与usbcore