Chinaunix首页 | 论坛 | 博客
  • 博客访问: 430593
  • 博文数量: 56
  • 博客积分: 2262
  • 博客等级: 大尉
  • 技术积分: 711
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-08 20:04
文章分类

全部博文(56)

文章存档

2013年(1)

2012年(9)

2011年(10)

2010年(7)

2009年(7)

2008年(22)

我的朋友

分类: WINDOWS

2008-07-22 22:16:30

USB
端点是USB 中一个独特的概念,它是一个可以与USB Host 交换数据的硬件单元。USB
Host USB 设备之间都是通过端点来传输数据的,端点是桥梁和纽带,不同的端点其传输
数据的能力不同,适于不同的应用场合。每一个与USB 交换数据的硬件就叫做一个端点(endpoint)。因此,接口是端点的集合。USB 的设备类别定义(USB Device Class Definitions)定义特定类或子类中的设备需要提供的缺省配置、接口和端点。
USB的数据传送的方式下,有四种的传输方式:控制(Control)同步(isochronous)中断(interrupt)大量(bulk)。如果你是从硬件开始来设计整个的系统,你还要正确选择传送的方式,而作为一个驱动程序的书写者,就只需要弄清楚他是采用的什么工作方式就行了。
通常所有的传送方式下的主动权都在PC,也就是host边。
控制(Control)方式传送:控制传送是双向传送,数据量通常较小。USB系统软件用来主要进行查询、配置和给USB设备发送通用的命令。控制传送方式可以包括8163264字节的数据,这依赖于设备和传输速度。控制传输典型地用在主计算机和USB外设之间的端点(Endpoint)0之间的传输,但是指定供应商的控制传输可能用到其它的端点。
同步(isochronous)方式传送:同步传输提供了确定的带宽和间隔时间(latency)。它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传送率的即时应用中。例如执行即时通话的网络电话应用时,使用同步传输模式是很好的选择。同步数据要求确定的带宽值和确定的最大传送次数。对于同步传送来说,即时的数据传递比完美的精度和数据的完整性更重要一些。
中断(interrupt)方式传送:中断方式传输主要用于定时查询设备是否有中断数据要传送。设备的端点模式器的结构决定了它的查询频率,1255ms之间。这种传输方式典型的应用在少量的分散的、不可预测数据的传输。键盘、操纵杆和鼠标就属于这一类型。中断方式传送是单向的并且对于host来说只有输入的方式。
大量(bulk)传送:主要应用在数据大量传送传送和接受数据上,同时又没有带宽和间隔时间要求的情况下,要求保证传输。打印机和扫描仪属于这种类型。这种类型的设备适合于传输非常慢和大量被延迟的传输,可以等到所有其它类型的数据的传送完成之后再传送和接收数据。
USB将其有效的带宽分成各个不同的桢(frame),每桢通常是1ms时间长。每个设备每桢只能传送一个同步的传送包。在完成了系统的配置信息和连接之后,USBhost就会对不同的传送点和传送方式做一个统筹安排,用来适应整个的USB的带宽。通常情况下,同步方式和中断方式的传送会占据整个带宽的90%,剩下的就安排给控制方式传送数据。
USB如果是简单收发其实很简单,主要是EP0的编程,而EP0只要记住3个阶段:设置/数据/状态。每个阶段三个包:令牌/数据/握手。当然数据阶段可以没有,或者数据阶段可以包含N个数据包。对比具体芯片的手册很容易看出程序的可能用武之地。
以下内容摘抄自s3c2410   USER 'S   MANUAL   13章   USB   DEVICE   CONTROLLER   [第325页]
————————————————————————————————————
FUNC_ADDR_REG     Bit           MCU               USB                 Description
ADDR_UPDATE         [7]         R/SET         R/CLEAR             Set   by   the   MCU   whenever   it  
                                                                                        updates   the   FUNCTION_ADDR  
                                                                                        field   in   this   register.   This
                                                                                        bit   will   be   cleared   by   USB
                                                                                        when   DATA_END   bit   in   EP0_CSR  
                                                                                        register.
FUNCTION_ADDR   [6:0]         R/W                   R                 The   MCU   write   the   unique  
                                                                                        address,   assigned   by   host,  
                                                                                        to   this   field.
————————————————————————————————————
这章里面的寄存器都有   MCU   跟   USB   两个栏目,我对这里的MCU跟USB指代的对象有些不太肯定,请教下是否是这样理解?
MCU:指代s3c2410本身
USB:指代USB   Host   如PC
 
PDIUSBD12 :一个16字节FIFO,双向控制端口(EP0
              464字节FIFO,双向大端口(EP1EP2EP3EP4
     命令字:(三种)初始化命令字、数据流命令字、通用命令字
   USB接口数据的传输依靠3个部分:设备固件、上位机驱动程序、上位机应用程序
 在这里我们使用DNW及其驱动作为上位机驱动及软件部分,因此我们需要关心的只是2410上的固件部分,即BootLoader中的USB下载功能。
   下面详细解释固件软件设计:
       固件的主要功能是完成对USB接口的配置,USB数据传输的读写。
USB设备的配置包括:设备描述符,配置描述符,接口描述符,端点描述符(EndPoint),字符描述符(可选)等。配置过程在USB插入上位机(PC)是完成。通过EP0PC交换信息来配置USB从设备(2410),通过EP2来传输数据(也可以使用其他端点)。
阅读(2915) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~