`
helloyesyes
  • 浏览: 1272696 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

usb学习有感

阅读更多

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传输结合起来.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics