基于OHCI协议的S3C2440 USB Host Driver之协议介绍(二)

<一>HCD的职责:

1.HCD负责HC的操作。

HCD可以直接与HC的可操作寄存器通信,且在HCCA中建立中断ED表头指针。HCD维护HC的状态,表处理指针,表处理使能,中断使能。

2.带宽分配。

HCD负责对USB访问进行调度。HCD给每一个周期端点分配一定可用的带宽。如果没有足够的带宽可用,一个新连接的周期端点不允许访问总线。

一部分带宽分给非周期传输。这会确保在每帧里一定量的批量和控制传输会发生。每帧是1ms。


每帧的开始,HC发起SOF给USB总线。HC紧接着服务非周期列表。然后服务周期列表。还有剩余时间的话,再次服务非周期列表。

3列表管理。

USB传输机制以通过连接ED表上的TD。HCD建立这些结构,HC会处理。HCD负责ED的入表和出表。出表时,HCD需要禁止HC处理正在要被删除的ED的所属的整个表,以确保HC不访问该ED。

HCD也负责TD的入表。正常完成的话,HC负责TD的出表。但是,来自客户软件或者特定错误的请求导致TD正在被取消,HCD负责对TD的出表。

4Root Hub

HC集成了Root Hub。根集线器的寄存器是可以被HCD访问的。HCD负责用USB Driver和合适的Root Hub的协议提供给合适的Hub-class协议。


<二>HC的职责

1.USB的状态

2.帧的管理

HC追踪当前帧计数以及帧周期。每帧开始,HC产生一个SOF且在系统内存中更新帧计数值。HC也决定在帧中是否有足够多得时间发起下一个数据包。

3.表处理

HC在ED上操作,且HCD负责TD的入表。

对于中断和同步传输,HC在当前帧开始于中断ED头指针。该表持续遍历,直到调度来自第一个TD上的一个数据包进行传输尝试。

对于控制和批量,HC分别在各自的表开始。当HC到达表尾,它载入头指针的值接着从头开始。HCD设置控制批量传输比n,HC处理n个控制传输才处理1个批量传输。

当一个TD完成,成功或者产生错误,HC将其移到完成队列中。将最近完成的TD加入到队列的头中。通过HCCA,完成队列周期性地从HC传输到HCD中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值