LINUX内核USB子系统学习笔记之初识USB

上传人:ji****72 文档编号:46514462 上传时间:2018-06-27 格式:PDF 页数:8 大小:982.35KB
返回 下载 相关 举报
LINUX内核USB子系统学习笔记之初识USB_第1页
第1页 / 共8页
LINUX内核USB子系统学习笔记之初识USB_第2页
第2页 / 共8页
LINUX内核USB子系统学习笔记之初识USB_第3页
第3页 / 共8页
LINUX内核USB子系统学习笔记之初识USB_第4页
第4页 / 共8页
LINUX内核USB子系统学习笔记之初识USB_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《LINUX内核USB子系统学习笔记之初识USB》由会员分享,可在线阅读,更多相关《LINUX内核USB子系统学习笔记之初识USB(8页珍藏版)》请在金锄头文库上搜索。

1、k kernel hacker 修炼之道李万鹏ernel hacker 修炼之道李万鹏 男儿立志出乡关, 学不成名死不还。 埋骨何须桑梓地, 人生无处不青男儿立志出乡关, 学不成名死不还。 埋骨何须桑梓地, 人生无处不青 山。 西乡隆盛诗山。 西乡隆盛诗 L LINUX内核USB子系统学习笔记之初识USB INUX内核USB子系统学习笔记之初识USB 分类: linux驱动编程 2011-04-25 21:19 1375人阅读 评论(4) 收藏 举报 努力成为linux kernel hacker的人李万鹏原创作品,转载请标明出处 http:/ 这个是USB系统的拓扑图,4个部分构成:USB主

2、机控制器,根集线器,集线器,设备。其中Root Hub与USB主机控 制器是绑定在一起的。 再了解一下USB驱动框架: 1USB通信都是由host端发起的。USB设备驱动程序分配并初始化一个URB发给USB Core,USB Core改一改,发给USB 主机控制器驱动,USB主机控制器驱动把它解析成包,在总线上进行传送。USB Core是由内核实现的,其实也就是 把host control driver里的功能更集中的向上抽象了一层,它是用来对最上层的USB设备驱动屏蔽掉host control的不 同。 USB设备的构成包括了配置,接口和端点。 21. 设备通常具有一个或者更多个配置 2.

3、配置经常具有一个或者更多个接口 3. 接口通常具有一个或者更多个设置 4. 接口没有或者具有一个以上的端点 需要注意的是,驱动是绑定到USB接口上,而不是整个设备。 USB通信最基本的形式是通过一个名为端点(endpoint)的东西。它是真实存在的。端点只能往一个方向传送数据 (端点0除外,端点0使用message管道,它既可以IN又可以OUT),或者IN,或者OUT。除了端点0,低速设备只能 有2个端点,高速设备也只能有15个IN端点和15个OUT端点。主机和端点之间的数据传输是通过管道。端点只有在 device上才有,协议说端点代表在主机和设备端点之间移动数据的能力。 端点有4中不同的类型

4、:控制,批量,等时,中断。 对应USB的4种不同的传输类型: 1. 控制传输:适用于小量的,对传输时间和速率没有要求的设备。如USB设备配置信息。 32. 批量传输:适用于类似打印机,扫描仪等传输量大,但对传输时间和速度无要求的设备。 3. 等时传输:适用于大量的,速率恒定,具有周期性的数据,对实时性有要求的,比如音视频。 4. 中断传输:适用于非大量,但具有周期性的数据,比如鼠标键盘。 这4大类由4个transaction组成: 1. IN transaction IN事务为host输入服务,当host需要从设备获得数据的时候,就需要IN事务。 2. OUT transaction OUT事

5、务为host输出服务,当host需要输出数据到设备的时候,就需要OUT事务。 3. SETUP transaction SETUP事务为host控制服务,当host希望传输一些USB规范的默认操作的时候就需要使用setup事务。 4. SOF transaction 这个用于帧同步。 然后这4种transaction又由3类包组成,每类又分几种: 1. in包 in包用于指明当前的事务为in类型的。 2. out包 out包用于指明当前事务为out类型的。 3. setup包 setup包指明当前事务为setup类型的。 4. sof包 sof包指明当前事务为setup类型的。 41. dat

6、a0包 该数据包的类型为0。 2. data1包 该数据包的类型为1。 1. ack包 ack握手包指明当前的事务的数据包传输是成功的。 2. nak包 nak握手包指明当前设备忙,不能处理数据包,请主机稍后再次发送。 3. stall包 stall握手包指明当前设备不能接受或者传输数据,表示一个严重的错误。 下图是一个USB鼠标插入Linux系统时完整的枚举过程,一共发生了11次传输,每次传输包括几个事务,每个事务又 包括几个包,每个包包括几个域。 56这里有一个概念需要注意,这里的中断传输与硬件中断那个中断是不一样的,这个中断传输实际是靠USB host control轮询usb devi

7、ce来实现的,而USB host control对于CPU则是基于中断的机制。拿USB鼠标为例,USB host control对USB鼠标不断请求,这个请求的间隔是很短的,在USB spec Table 9-13端点描述符中的bInterval域中指定 的,当鼠标发生过了事件之后,鼠标会发送数据回host,这时USB host control中断通知CPU,于是usb_mouse_irq被 调用,在usb_mouse_irq里,就可以读取鼠标发回来的数据,当读完之后,驱动再次调用usb_submit_urb发出请求,就 这么一直重复下去,一个usb鼠标的驱动也就完成了。下面是USB鼠标中断传输图,可以看到USB host control向usb device发送了IN包,没有数据的时候device回复的是NAK,有数据的时候才向host control发送DATA包。 78

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号