嵌入式linux学习笔记20160923-USB设备驱动
时间:10-02
整理:3721RD
点击:
硬件基础:一个带USB的系统含有USB主机控制器和USB设备(从机),当USB插上时,D+或D-被USB设备内拉高,主机控制器会检测到USB设备被插入,进行软件的操作。
USB主机驱动:由linux系统完成,仅作为了解;USB设备驱动(鼠标作为按键输入):
分配和注册USB_driver结构体:里面包含probe,disconnect函数和id_table;
probe函数:
a.分配一个输入设备input_dev;
b.设置输入设备能产生哪些事件,即鼠标输入对于linux系统的含义;
c.注册输入设备;
d.硬件操作:
1.USB设备驱动程序和USB主机驱动之间是用URB进行通信的,URB相当于快递员,要发送一个快递,得有目的地址,发送地址,快递大小重量(好分配车子),URB同样需要这3要素(源,目的,大小),和发快递一样的步骤,首先从快递那边拿到一个包装盒(分配一个usb_alloc_urb),然后将3要素打包进包装盒(usb_fill_int_urb),最后提交给快递公司(usb_submit_urb).
2.与我们日常生活中发送快递不同的是,源的内容可能不停的在变化,USB主机控制器需要不停地查询源的内容,当检测到内容发生变化时,USB主机控制器会产生中断,再次提交URB.
disconnect函数
释放urb,释放缓冲区,释放输入设备,卸载usb_driver