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

来源:互联网 发布:石家庄编程培训 编辑:程序博客网 时间:2024/04/26 16:32

什么是OHCI

USB协议规定为四种传输类型--中断传输、控制传输、同步传输、批量传输。这里分为2种,周期传输和非周期传输。周期传输包括中断传输和同步传输,这是因为周期传输是要在1帧里的一段时间里必须进行的;非周期传输包括批量和控制传输,它们只要带宽空闲就可以传输。

在HC与HCD之间有2条通信渠道:第一条是在HC里的可操作寄存器;第二条是HCCA。

数据结构有2种:ED和TD

HCD负责分配ED和删除ED。HCD负责创建TD,HC负责删除TD。

ED包括HC与端点通信的必要信息,如MPS、端点地址,端点速度,数据流方向。ED链接成一个表。

一列TD链接在某个ED上,以ED作为锚点。TD包含了必要信息,描述了需要传输的数据包。信息有数据奇偶位,共享内存地址,完成状态代码。每一个TD描述了一个或多个数据包。每一个TD所描述的数据缓存可以从0到8192字节,是一个可以跨越页界限的物理页。


HC中的头指针指向批量和控制ED列表。HCD先初始化这些头指针,然后HC才可以访问。HCD需要先禁止HC处理指定的表,然后更新这些指针,再次使能HC。

HCCA中有指向中断ED表的头指针。第一个同步ED链接在最后一个中断ED上。有32个中断头指针。某一帧里,通过使用Frame Counter的低5位作为HCCA里的32个中断ED表的入口索引。


上图是一种情况,越接近于根,遍历的机会就越多,轮询率就越高。比如在根的一个ED。32个表都可以索引到,索引每帧都可以访问到。

原创粉丝点击