您好,欢迎访问三七文档
USB设备驱动开发知识点知识点}}USBUSB总线介绍总线介绍}USB拓扑结构}USB设备探测}USB描述符}USB请求格式}USB编程总线诞生背景总线诞生背景}传统的硬件设配器每次插拔时都不得不重复执行关闭机器、插入板卡、启动机器、安装驱动等繁杂步骤}有没有一种简单易行的接口既能最大限度的节省计算机的软硬件资源,又能方便使用呢?答案是肯定的,那就是今天我们要讨论的USB接口总线局限性总线局限性}带宽的限制}USB最高通讯速率为480Mbit/s,但在处理实时数据时还是显得力不从心。实际带宽300M,而传输普通的640*480*24(bit)*30(Fram/s)时需要的带宽约为220Mbit/s。而IEEE-1394.b可以达到3.2Gbit/s。}点对点通讯}USB设备之间不能传输数据,而IEEE-1394允许直接通讯}距离的限制}小于5m总线规范总线规范}1994年,一个由四个行业伙伴(Compaq、Intel、Microsoft和NEC)组成的联盟开始制定USB协议。该协议最初的目的是将PC与电话相连并提供容易扩展和重新配置的I/O接口。}1996年1月,发表了USB规范的第一个版本,1998年9月发表了后续版本(版本1.1)。这个规范允许127台设备同时连接到一起,总的通信带宽限制为12Mbps。}后来,又有三个成员(Hewlett-Packard、Lucent和Philips)加入了这个联盟。}2000年4月,发表了USB规范的2.0版本,它支持高达480Mbps的传输率。规范}USB1.1规范支持低速(1.5Mb/s)和全速(12Mb/s)两种不同速率的数据传输和4种不同类型的数据传输方式:}控制传输(CONTROLTRANSFER)}中断传输(INTERRUPTTRANSFER)}批量传输(BULKTRANSFER)}等时传输(ISOCHRONOUSTRANSFER)规范}USB2.0在兼容USB1.1低速(1.5Mb/s)和全速(12Mb/s)数据传输基础上,支持高速(480Mb/s)数据传输。}对于USB2.0规范,同样支持控制传输、中断传输、批量传输和等时传输4种类型的数据传输方式。}在物理结构和拓扑结构上,USB2.0与USB1.1也是完全相同的。规范}USBOTG规范是作为对USB2.0规范的补充而出现的,其目的是为了满足便携式设备对USB接口性能的需求。}根据USBOTG规范,一个USB接口可同时具有USB主机和USB设备两种功能,根据与其连接的其他设备属性,USBOTG接口会自动转换成为适合USB总线需求的接口类型。设备类(CLASS)规范}USB-IF(USB应用厂商论坛)将可能的物理设备划分成不同的类型,每种类型的设备具有相类似的通信方式。}针对不同类型的设备,USB-IF发布了相关的USB设备类规范,比如:}USB人机交互类(HIDCLASS)规范}USB通信类(CDCCLASS)规范}USB大容量存储类(MASSSTORAGECLASS)规范规范}关于USBHOST接口,在符合USB规范的基础上,不同的厂商开发的USBHOST器件可能有着不同的结构特性。当前流行的USBHOST规范有:}OHCI(OPENHOSTCONTROLINTERFACE)}UHCI(UNIVERSALHOSTCONTROLINTERFACE)}EHCI(ENHANCEDHOSTCONTROLINTERFACE)}ehci-hcd模块支持的是USB2.0控制器的高速模式,它本身并不支持全速或低速模式}ohci-hcd或uhci-hcd模块提供对USB1.1设备的支持}如果我们只配置了EHCI,就没有办法使用usb的鼠标键盘知识点知识点}USB总线介绍}}USBUSB拓扑结构拓扑结构}USB设备探测}USB描述符}USB请求格式}USB编程主机控制器介绍}在和外围设备通讯时主机控制器始终占主动地位,其主要作用有:}检测设备}管理数据流}错误检查}提供电源功能介绍}USBHUB主要功能有:}管理主机与设备的连接}电源管理}设备接入与断开检测}总线错误的检测与恢复}对高速、全速、低速设备的支持设备基本概念}USB规范中规定的标准概念由LinusUSBcore来实现处理}端点endpoints}端点是USB总线传输最基本的概念,一个端点可以单方向传输数据。可以把端点看作是一个单方向的管道。端点有4种类型}接口interfaces}若干端点可以捆绑起来,成为一个端口。端口可以作为完整的逻辑设备连接,例如鼠标设备、键盘设备。}需要指出的是,一个硬件设备可能包含多个逻辑设备}接口可以有多个预设值,用来指定不同的参数}配置configurations}接口捆绑起来成为配置。一个USB设备可以在不同的配置之间切换,一次只能激活一个配置端点分类}USB总线中的通信可以使用下面四种数据传输类型中的任意一种:}控制传输:这些是一些短的数据包,用于设备控制和配置,特别是在设备附加到主机上时。}批量传输:这些是数量相对大的数据包。像扫描仪或者SCSI适配器这样的设备使用这种传输类型。}中断传输:这些是定期轮询的数据包。主控器会以特定的间隔自动发出一个中断。}等时传输:这些是实时的数据流,它们对带宽的要求高于可靠性要求。音频和视频设备一般使用这种传输类型。知识点知识点}USB总线介绍}USB拓扑结构}}USBUSB设备探测设备探测}USB描述符}USB请求格式}USB编程对端口监测}USB协议规定}低速外设在D-端并联一个1.5K的接地电阻}全速外设在D+端并联一个1.5K的接地电阻}当USB设备插入某一个HUB端口时,硬件检测D+和D-信号线的电平就可以很容易判断器件的种类知识点知识点}USB总线介绍}USB拓扑结构}USB设备探测}}USBUSB描述符描述符}USB请求格式}USB编程USB描述符介绍vUSB描述符记录了关于设备的各种信息,USB设备使用这些描述符来向主机报告它的属性。描述符具有一定的数据结构。在主机使用控制传输请求时,设备就会将这些信息以标准格式发送给主机,从而使主机控制器获取诸如设备及供应商ID,设备通讯能力等重要信息。USB描述符类型描述符类型数值设备(Device)0x01配置(Configuration)0x02字符串(String)0x03接口(Interface)0x04端点(Endpoint)0x05类(Class)描述符形态数值人机接口设备(HID)0x21报告(Report)0x22实体(Physical)0x23知识点知识点}USB总线介绍}USB拓扑结构}USB设备探测}USB描述符}}USBUSB请求格式请求格式}USB编程设备请求的概念}在USB通讯中,主机有绝对的主控权,主机和设备之间的通讯遵循某种特定的命令格式,以达到通讯的目的,而这个命令的格式就是“设备请求”。设备请求存在于控制传输的setup阶段。它是一个8个字节的数据封装包(08H)00100000000BGet_Descriptor(06H)描述符类型0描述符长度00000000BGet_Interface(0AH)0接口000000000BSet_Address(05H)新的设备地址0200000000BSet_Configuration(09H)设定值0000000000BSet_Descriptor(07H)描述符类型0描述符长度00000000BSet_Interface(0BH)切换的设定接口0设备请求举例}使用Get_Descriptor请求“设备描述符”,请求码?}第1个字节:BmRequestType=80}第2个字节:Request=06}第3、4个字节:00、01(设备描述符)}第5、6个字节:00、00}第7、8个字节:00、12(18个字节)知识点知识点}USB总线介绍}USB拓扑结构}USB设备探测}USB描述符}USB请求格式}}USBUSB编程编程编程开发要点}主机控制器驱动}HUB驱动}设备控制器编程}主机端设备驱动}设备端固件程序编写驱动高级研修班介绍(1)}1.LINUX下USB驱动开发基础1.1USB规范介绍1.2USB主机控制器1.3USBHUB1.4USB设备状态1.5USB描述符1.6USB请求1.7USB通讯数据格式1.8S3C2410USBdevice控制器1.9编写usbtransfer固件程序驱动高级研修班介绍(2)}2.LINUX下USB驱动高级开发2.1LinuxUSB驱动层次2.2LinuxUSB主机控制器驱动介绍2.3LinuxUSBHUB驱动介绍2.4LinuxUSB设备驱动程序2.5编写usbtransfer设备驱动程序2.6编写usbtransfer设备应用程序有什么问题吗?有什么问题吗?
本文标题:USB设备驱动开发
链接地址:https://www.777doc.com/doc-1307695 .html