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)
还没有任何评论哟~
