慢慢学Linux驱动开发,第四篇,USB工作原理简单分析

1.简单概念

学习U盘驱动,不仅仅是去关注drivers/usb/storage目录下那相关的3000行代码。
毕竟,作为U盘,她需要与usb core打交道,需要与scsi core打交道,需要与内存管理单元打交道,还有内核中许多其它模块打交道。
什么是usb core?她负责实现一些核心的功能,为别的设备驱动程序提供服务,比如申请内存,比如实现一些所以的设备都会需要的一些公函数。

还有就是host controller和root hub的概念,现实中经常是让一个usb控制器和一个hub绑定在一起,专业一点说是集成,而这个hub被称为root hub,换言之,和usb控制器绑定在一起的hub就是系统最根本的hub,其他的hub可以连接到她这里,然后可以延伸出去,当然也可以让usb设备直接连接到usb控制器上。

通过使用集线器(Hub)扩展可外接多达127个外设。USB的电缆有四根线,一个电源,一个地,二个数据线。功率不大的外围设备可以直接通过USB总线供电,而不必外接电源。USB总线最大可以提供5V 500mA电流,并支持节约能源的挂机和唤醒模式。


至于usb控制器,要知道cpu并不是直接和usb设备打交道的,它们之间需要一个代理,而usb控制器就充当了这个角色,这个概念可以延伸到几乎所以的设备上。

2.传输方式

USB提供了四种传输方式,以适应各种设备的需要。这四种传输方式分别是:


     控制传输方式:控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给USB设备发送通用的命令。控制传输主要用在主计算机和USB外设中端点0之间。

     等时传输方式:等时传输提供了确定的带宽和间隔时间。它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传送率的即时应用中。例如进行语音业务传输时,使用等时传输方式是很好的选择。

     中断传输方式:中断方式传送是单向的并且对于主机来说只有输入的方式。中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量的、分散的、不可预测的数据传输。键盘、游戏杆和鼠标就属于这一类型。

     大量传输方式:主要应用在没有带宽和间隔时间要求的大量数据的传送和接收,它要求保证传输。打印机和扫描仪属于这种类型。

     在开发USB设备时通过设置接口芯片中相应的寄存器使端点处于不同的工作方式。

 

其它的再复杂一点的usb原理先不理解,以后再说。。。。

------------------------------------------------------------------------------------------------------------------

作者:庞辉

出处:http://www.cnblogs.com/pang123hui/

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名庞辉(包含链接).

原文地址:https://www.cnblogs.com/pang123hui/p/2309907.html