.步骤如下:
首先先定义全局变量:usb_driver结构体,input_dev指针结构体 ,虚拟地址缓存区,DMA地址缓存区
3.1在入口函数中
1)通过usb_register()函数注册usb_driver结构体
3.2在usb_driver的probe函数中
1)分配一个input_dev结构体
2)设置input_dev支持L、S、回车、3个按键事件
3)注册input_dev结构体
4)设置USB数据传输:
->4.1)通过usb_rcvintpipe()创建一个接收中断类型的端点管道,用来端点和数据缓冲区之间的连接
->4.2)通过usb_buffer_alloc()申请USB缓冲区
->4.3)申请并初始化urb结构体,urb:用来传输数据
->4.4) 因为我们2440支持DMA,所以要告诉urb结构体,使用DMA缓冲区地址
->4.5)使用usb_submit_urb()提交urb
3.3在鼠标中断函数中
1)判断缓存区数据是否改变,若改变则上传鼠标事件
2)使用usb_submit_urb()提交urb
3.4.在usb_driver的disconnect函数中
1)通过usb_kill_urb()杀掉提交到内核中的urb
2)释放urb
3)释放USB缓存区
4)注销input_device,释放input_device
3.5在出口函数中
1)通过usb_deregister ()函数注销usb_driver结构体