概述
一个接口对应一个驱动,一个驱动往往可以支持多个接口!
蒲 松 龄 曰 , 每 个 男 人 的 心 中 都 有 一 个 狐 狸 精 , 每 个 写 usb 驱 动 的 人 心 中 都 有 一 个
usb_driver。一般来说,我们平时所谓的编写usb驱动指的也就是写usb接口的驱动,需要
以一个struct usb_driver结构的对象为中心,以设备的接口提供的功能为基础,开展usb
驱动的建设。
834 行,name,驱动程序的名字,对应了在/sys/bus/usb/drivers/下面的子目录名称。
和我们每个人一样, 它只是彼此区别的一个代号, 不同的是我们可以有很多人叫张三或者李
四,但这里的名字在所有的 usb 驱动中必须是唯一的。
836 行,probe,用来看看这个 usb 驱动是否愿意接受某个接口的函数。每个驱动自诞生
起,它的另一半就已经确定了,这个函数就是来判断哪个才是她苦苦等待的那个他。当然,
这个他应该是他们,因为一个驱动往往可以支持多个接口。
839 行,disconnect,当接口失去联系,或使用rmmod卸载驱动将它和接口强行分开时
这个函数就会被调用。
841 行,ioctl,当你的驱动有通过usbfs和用户空间交流的需要的话,就使用它吧。
844 行,suspend,845 行,resume,分别在设备被挂起和唤醒时使用。
847 行,pre_reset,848 行,post_reset,分别在设备将要复位(reset)和已经复位后
使用。
850 行,id_table,驱动支持的所有设备的花名册,所有的三宫六院要想受到宠幸都要在
这里登记。驱动就靠这张表儿来识别是不是支持哪个设备接口的,如果不属于这张表,那就
躲一边儿去吧。
852 行,dynids,支持动态 id 的。什么是动态 id?本来前面刚说每个驱动诞生时她的另一
半在 id_table 里就已经确定了,可是谁规定了女同胞就一定要从一而终了,那是封建旧思
想要打到的,听听她们内心的呼声“谁说我白,瘦,漂亮~我就跟他做好朋友” ,Greg 大侠
显然也听到了,于是在一年多前的一个寒风萧萧的日子里平地一声吼,加入了动态 id 的机
73
也可以添加新的 id 给她, 只要新 id 代表的设备存在,
制。即使驱动已经加载了, 对她说“你
又白又瘦又漂亮” ,她就会和他绑定起来。
怎么添加新的 id?到驱动所在的地方瞅瞅,也就是/sys/bus/usb/drivers 目录下边儿,那
里列出的每个目录就代表了一个 usb 驱动,随便选一个进去,能够看到一个 new_id 文件
吧,使用 echo 将厂商和产品 id 写进去就可以了。看看 Greg 举的一个例子
echo 0557 2008 > /sys/bus/usb/drivers/foo_driver/new_id
就可以将 16 进制值 0557 和 2008 写到 foo_driver 驱动的设备 id 表里取。
最后
以上就是专一苗条为你收集整理的我是USB -学习笔记 的全部内容,希望文章能够帮你解决我是USB -学习笔记 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复