USB驱动相关知识
来源:互联网 发布:淘宝什么周几流量大 编辑:程序博客网 时间:2024/05/20 06:50
static struct usb_device_id id_table[]={
{ USB_DEVICE(VENDOR_ID,PRODUCT) },
{},
};
MODULE_ID_TABLE(usb,id_table);
当usb核心检测到设备属性与某个驱动程序的id_table信息一致时,就会执行驱动程序的probe函数,拔出设备是就会执行disconnect函数。
要注意usb请求块即struct urb结果类似于网络驱动程序的sk_buff结构
数据流向的载体。
urb处理流程:
1 分配urb
struct urb* usb_alloc_urb(int iso_packets,int mem_flags);
iso_packets:等时数据包数目
iso_packets=0 表示不创建等时数据包
mem_flags:与kmalloc函数参数一致,分配方式
如GFP_KERNEL等
对立函数是:
void usb_free_urb(struct urb * urb);
2 初始化urb
(1)对于中断类型:
void usb_fill_int_urb(struct urb*urb,struct usb_device*dev,
uint pipe,void * transfer_buffer,int buffer_length,
usb_complete_t complete,void * context,
int interval);
urb:要初始化的urb指针 dev:urb发送到的usb设备
pipe:要发送到usb设备的特定端点(管道)
由usb_sndintpipe()或者usb_rcvintpipe函数创建
transfer_buffer :发送或者接收的缓冲区指针 ,不能是静态缓冲区
buffer_length:数据长度
complete:urb发送完成的完成处理函数
context:完成处理函数的参数
interval: 时间间隔
(2)对于批量urb:
void usb_fill_bulk_urb(struct urb * urb,struct usb_device * dev,uint pipe,
void *transfer_buffer,int length,
usb_complete_t complete,void * context);
参数意思同上;
pipe:有usb_sndbulkpipe()或者usb_rcvbulkpipe()函数创建
(3)对于控制urb:
void usb_fill_control_urb(struct urb * urb,struct usb_device *dev,uint pipe,
uchar * set_packet, void *transfer_buffer,int buffer_length,
usb_complete_t complete ,void * context);
set_packet:指向即将发送到端点的设置数据包
pipe:usb_sndctrlpipe()或者usb_rcvctrlpipe()函数创建
3 提交urb:
int usb_submit_urb(struct urb * urb,int mem_flags);
- USB驱动相关知识
- Linux USB驱动相关细节知识
- Linux USB驱动相关细节知识
- Linux USB驱动相关细节知识
- usb驱动开发知识
- USB相关知识
- USB相关知识
- USB相关知识
- Linux USB驱动相关
- 相关USB驱动总结
- android usb相关知识总结
- usb debug上层相关知识
- USB设备驱动开发-USB协议相关
- linux usb驱动相关文档
- windows驱动开发相关知识
- linux驱动相关知识整理
- linux驱动开发相关知识
- USB 设备相关驱动模块(2.6内核)
- partial修饰符修饰的类叫部分类
- 对java synchronized 关键字的理解二
- debian下各种垃圾问题
- 形成自己的学习方法
- 2014年新sdk更新,引发的旧eclipse无法使用的问题
- USB驱动相关知识
- 关于同步、异步、阻塞与非阻塞的知识点
- POJ3122 - Sum of Different Primes - 动态规划
- 关于Android 的内存泄露及分析
- Java研究之学习设计模式-多例模式详解
- windows server 报错 帐户名与安全标识间无任何映射完成
- 线程与进程,以及两者的联系与区别。
- Linux环境下段错误的产生原因
- oracle数据库impdp报错处理ORA-39083、ORA-00959、ORA-39171、ORA-01653