Linux2.6内核的USB鼠标驱动开发

所需积分/C币:15 2012-07-24 22:18:46 239KB PDF
16
收藏 收藏
举报

Linux2.6内核的USB鼠标驱动开发; 用于linux2.6内核下USB鼠标驱动开发.
·96 微处理机 2008年 struct urb使用usb_ alloc urb函数来分配。该 当USB被卸载时调用usb_ deregister来完成数有两个参数,第一个参数在不创建同步ub时 struct usb driver从内核注销的工作。 设置为0。第二个参数用于从内核分配内存,可以 usb_deregister( &mouse_driver) 使用 GFP KERNEL等标志。 4.2探测和断开 鼠标使用中断端口,用 usb fill int_ur函数初 在 struct usb driver结构体中有两个重要的字始化。这与在以前版本中的初始化方法不同。该函 段,即上面提到的pobe和 disconnect,分别指定了数的原形如下,参数对应于ub的相关字段,这在第 USB核心要调用的探测和断开函数。当USB核心三部分的USB通信中作过介绍。 认为一个被安装的设备应该使用该驱动程序处理 usb_fill int_urb(struct urb urb, struct usb_de 时,调用探测函数,检查设备信息,确定驱动程序是vice*dev, unsigned int pipe,void* transfer buffer, 否适合该设备;当驱动程序不再控制设备时,调用断 int buffer_length, usb_complete_t complete,vid* 开函数来做一些清理工作。 context. Int interval 探测和断开函数的原型 complete为结束当前urb后调用的处理函数指 int(* probe)( struct usb interface*intf, const针,在本文的鼠标驱动中回调函数为 mouse_irg,保 truct usb_device_id id 存 context指向的数据块以便在结束例程中进行查 如果USB驱动程序确认传递指针,则应恰当的找。 初始化设备然后返回0,否则返回错误值。 相关代码如下: void( disconnect)(struct usb_interface intf) urb usb_alloc_urb(O, GFP_KERNEL) USB驱动程序应该在探测回调函数中初始化可 usb fill int urb(urb,dev->udev,pipe,dev-> 能用于控制USB设备的局部结构体。通常需要探data,maxp, mouse_irgl, 测设备的端口地址和缓冲区大小,因为需要它们才 dev,endpoint-> iNterval); 能和设备通信。对于鼠标驱动程序来说,首先要访 2)提交和结束 问端口查看端口的方向,类型这是通过查看sut使用 usb submit urb函数将ub提交到USB核 usb_endpoint_descriptor的 bEndpointAddres和hmAt心,以传输到设备。 butes的值是否匹配来完成的。相关代码如下 if(usb_submit_urb( urb, GFP_ KERNEL)) dev->udev usb_get_dev(interface_to_usbdev (interface )); kfree( dev) dev ->interface interface goto error; iface_desc interface ->cur_altsetting if(iface _desc-> desc bNum Endpoints!=1) 成功后USB核心调用u回调函数 mouse_irq return - ENOMEM 回调函数要检査urtb的状态,以确定传输是否真的 point =&iface_ desc->endpoint[ o ]. desc if(! (endpoint-> bEndpointAddress &0x80)) 成功。如果状态值为0,即成功,最后,使用内核输 retum -ENOMEM 人函数报告鼠标状态。 if((endpoint-> bmAttributes &3)!= 3) 5总结 retum -ENOMEM pipe usb_rcvintpipe( dev ->udev, endpoint-> Iiux的发展非常迅速,本文通过一个USB鼠 bEndpoint Address 标来说明基于26内核的USB设备驱动程序的写 sb_maxpacket dev ->udev, pipe, usb 法和应用,并使用 printk函数进行调试使用gpm命 wipeout( pipe )) 令配置鼠标和测试程序。本文的编写希望对 if( maxp>8)maxp =8; inux2.6内核其他相关USB设备的开发有所启示。 de ev一>maxp naxp 在断开函数中设置 struct usb_ interface结构体中参考文献: 的数据指针为NUL [l] Alessandro rubini. Linux Device driver[M].北京:中 国电力出版社,2005 usb_set_intfdata( interface, nULL) [2] Don Anderson, Dave Dzatko USB体系结构[M].北京 4.3使用utb通信 中国电力出版社,2003 1)ur的创建和初始化 Linux2.6内核的USB鼠标驱动开发 旧 WANFANG DATA文献链接 作者: 杨春霞,王自强, YANG Chun-xia, WANG Zi- qiang 作者单位: 南京大学电子工程系,南京,210093 刊名: 微处理机sT 英文刊名: MICROPROCESSORS 年,卷(期) 2008,29( 被引用次数 1次 参考文献(2条) Don anderson; Dave dzatko usb体系结构2003 2. Alessandro rubini linux Device drivers 2005 引证文献(1条) 1.唐六华.王瑛嵌入式 Linux下USB主机设备驱动开发[期刊论文]计算机技术与发展2009(9 本文链接http://d.g.wanfangdata.comcn/periodiCalwc1j200805032.aspx

...展开详情
试读 4P Linux2.6内核的USB鼠标驱动开发
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
Linux2.6内核的USB鼠标驱动开发 15积分/C币 立即下载
1/4
Linux2.6内核的USB鼠标驱动开发第1页

试读结束, 可继续读1页

15积分/C币 立即下载