Advertisement

linux usb设备驱动版本二

阅读量:

urb概念界定与定义解析

USB设备驱动代码通过urb与所有USB设备进行通信。urb使用struct urb结构体进行描述(include/linux/usb.h)。urb以异步方式与特定USB设备的指定端点进行数据的发送或接收。根据驱动需求,一个USB设备驱动可以为一个端点分配多个urb,或者将单个urb重复用于多个不同的端点。每个端点在设备内部都维护着一个urb队列,因此在队列被清空之前,多个urb可以被发送至同一端点。

一个urb的典型生命周期包括以下步骤:
(1)创建;
(2)分配给特定USB设备的指定端点;
(3)提交给USB核心;
(4)由USB核心提交至特定设备对应的USB主机控制器驱动;
(5)由USB主机控制器驱动处理并传输至目标设备;
(6)上述操作完成后,USB主机控制器驱动会向USB设备驱动发出通知。

此外,提交urb的驱动可以在任意时刻取消该操作;若设备被移除, Urb也可由USB核心自动取消。 Urb是动态生成的,并包含内部引用计数机制,确保在最后一个用户释放它时能够自动销毁。 struct urb :

复制代码
    struct urb {
    /* private: usb core and host controller only fields in the urb */
    struct k

全部评论 (0)

还没有任何评论哟~