平台:mini2440
内核:linux 2.6.32.2
USB设备插入时,内核会读取设备信息,接着就把id_table里的信息与读取到的信息做比较,看是否匹配,如果匹配,就调用probe函数。USB设备拔出时会调用disconnect函数。URB在USB设备驱动程序中用来描述与USB设备通信时用到的基本载体和核心数据结构。
URB(usb request block)处理流程:
①USB设备驱动程序创建并初始化一个访问特定USB设备特定端点的urb并提交给USB core。
②USB core把这个urb提交到USB主控制器驱动程序。
③USB主控制器驱动程序根据该urb描述的信息来访问usb设备。
④当设备访问结束后,USB主控制器驱动程序通知USB设备驱动程序。
USB鼠标数据格式:
①bit0 ->左键,1->按下,0->松开
②bit1 ->右键,1->按下,0->松开
③bit2 ->中键,1->按下,0->松开
驱动代码清单:
usb_mouse_input_test.c:
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/usb/input.h>
#include <linux/hid.h>
stat