Chinaunix首页 | 论坛 | 博客
  • 博客访问: 866069
  • 博文数量: 189
  • 博客积分: 4310
  • 博客等级: 上校
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-27 08:56
文章分类

全部博文(189)

文章存档

2015年(1)

2013年(2)

2012年(1)

2011年(39)

2010年(98)

2009年(48)

分类: 嵌入式

2010-02-23 13:56:05

  usb驱动相对i2c复杂了一些,主要表现在要获取usb的设备描述符等。主从设备的通讯方式跟i2c差不多。
学习linux驱动的步骤:
(1)了解usb的结构,主机的检查方法。
(2)了解usb通讯协议的基本术语。
(3)了解usb的初始化的过程。
(4)了解usb的主从机之间的握手协议。
以上的内容在我的前几遍转载别人的博文中有详细介绍(谢谢这些作者)。
了解的usb的通讯协议对你驱动的学习将提高很大的帮助。
下面我大概阐述鼠标驱动的执行过程
(1)注册驱动usb_register(&usb_mouse_driver)
(2)驱动的探测,这阶段完成设备描述符等的填充。初始化urb,input等,在input_dev->open = usb_mouse_open;用户空间会调用usb_mouse_open,这边执行 if (usb_submit_urb(mouse->irq, GFP_KERNEL)),即完成了把urb传递给usb core。从而完成数据的传送。
看了usb通讯协议后再ldd3的usb那章再配合mouse driver的代码看,你就可以较快地理解。
下面我吧ldd3的usb这章传上来,中文版的。  
文件: LDD3-13.pdf
大小: 380KB
下载: 下载
 
 
阅读(1342) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~