现在的位置: 首页 > 综合 > 正文

usb学习有感

2013年10月28日 ⁄ 综合 ⁄ 共 2560字 ⁄ 字号 评论关闭
1,usb技术成功的几个因素
1.1 易用性优势以及强的可扩展性
  1), hotplug & plug and play
 
  2), 提供电源
 
  3),几乎支持各类应用(四种传输类型几乎可满足各类应用要求)
   本质上usb技术只是给出了一种近距离有线方式的主从通信手段,usb协议
规定了4种通信类型:control,bulk,interrupt和isochronous, 其中control和
bulk类型为异步传输类型, interrupt和isochronous类型为同步传输类型. 同步
传输适用于对传输的响应时间要求较高的场合,interrupt类型一般数据量小些(
比如usb HID class), isochronous类型一般数据量很大,适合支持av stream 传输(
像usb video class and usb audio class等典型使用场合); 异步传输对传输的响
应时间没有要求,control 类型一般传输数据量小一些,适合实现对设备的控制和状态
查询,  bulk 类型传输数据量大,像usb mass storage class.
  
   usb 将四种类型的transfer分为transaction, 每个transfer可对应1个或多个
transaction. 在时间上,usb 基于frame 或者 uframe安排transaction的调度,并在每
个frame或者uframe优先调度同步传输对应的transaction,usb1.1和usb2.0对同步传输
分别可最大使用90%的frame 和 80%的uFrame,以这种机制保证同步传输的响应时间,同步
传输完成后的剩余时间安排给异步传输对应的transaction.
  
   当然,对于每一种具体usb 设备,可以支持多种传输类型,实际上usb device 中的
endpoint具体负责和host的通信,每个endpoint只能属于四种类型的一种,除过默认的
endpoint 0(control in/out)外,其他endpoint的传输方向也要么为in,要么为out.一
般的usb device controller支持endpoint的可配置,但某个时刻只能属于一个类型和
传输方向. 像一些usb ethernet interface和usb uart会组合interrupt endpoint和
bulk endpoint来实现对应的应用.
  
   一般来说,合理组合四种类型的endpoint,可以做出相对应的usb device, usb host
通信软件驱动不需要任何修改,只需要添加对应的function driver就可以支持新的usb
设备.         

1.2 成本优势(复杂软件, 简单连接方式以及简单ic实现的策略)
   从IC成本角度看一下. 分析controller ic的成本,主要看这个ic
做了哪些事情即可,ic做了什么事情,可以从ic的driver和ic间的接口来看出.  
  
   1),先看看host controller ic做了哪些事情:
     1.1给出了host 会按照4种传输类型来做schdule(也就是说,host侧的类型体现在
调度方式上),实际上这部分工作都由软件完成,以uhci/ehci为例,软件(hcd)需要在内
存种组织好数据结构,排列好同步传输和异步传输,然后把相应的地址告诉HC,HC就会和
usb device来通信了. transfer会划分为一系列的transaction,transaction包括以
下几种packet:
       token(setup/in/out、sof)
       data(data0/data1/data2/mdata)
       handshake(ack/nak/stall/nyet)
       special(PRE/ERR/SPLIT/PING/Reserved)  
     一般来说,一个transaction是几种类型的packet的组合,比如in token+data0+ack
就对应了一个transaction. hcd调度transaction时候已经通过transaction descriptor
给出了排列.也就是说HC需要根据transaction descriptor生成对应packet以及发送出去,
包括SIE以及真正从phy上发送出去,同时需要从线上译码出接收的packet,并组织成和cpu间
互相认识的格式,同时将数据内容传输给transaction指定的地址(DMA方式). 这几个功能
(packet构造以及串行化, phy功能, dma)应该是hc ic最基本的功能。
     其次,hc 需要生成sof帧;
     另外,hc ic需要支持root hub和port相关功能。

  2),device controller ic
     同样,也需要packet 构造以及串行化,phy功能。

  从以上来看,hcd软件做了相当多的事情,hc实现的功能可以较少(uhci spec说大概10000
gates左右可以实现uhci),成本也就低了.

1.3 开发优势
1), 与ethernet的相似之处基于广播技术
   通过抓包软件可以监控总线的数据包通信情况,这样易于开发和调试.

2),4线连接
   硬件连接简单,硬件调试非常简单.

3),一些通用实现规范的提出
   ohci/uhci/ehci统一的接口定义,利于usb hcd的重用. 当然,也有一些专有接口的
嵌入式hc的推出.  

2,一些实现中问题(侧重host 实现)

2.1 hcd和hc间的接口比较复杂
    如果使用标准的实现(ohci/uhci/ehci),那么还有现成linux driver可供使用.
如果是其他的实现,那么这个层面的接口定义需要较深的功底才可以定义的很好.   

2.2 usb host性能
    .中断频率的控制
     许多专有的实现以transaction完成来中断cpu,会导致中断非常频繁,对系统性能影响较大;
     (尤其是支持usb2.0,问题会更严重)
     ehci/uhci中支持以transfer结束来中断cpu,会降低中断频率.
     
    .智能的DMA controller
     ehci/uhci肯定实现了一个智能的DMA,将usb packet的构造发送/接收和dma传输结合起来.

抱歉!评论已关闭.