3.9 基于OHCI的USB主机 —— OHCI(设计思路)

转载 2012年03月22日 10:01:09
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/243412
在OHCI层,主要完成如下功能:
l  通过控制端口读写数据(包含SETUP、DATA、STATUS等3个TD);
l  通过控制端口发送设置命令(没有DATA的TD);
l  通过批量端口读数据;
l  通过批量端口写数据;
l  中断处理程序;
 
本层将OHCI的ED和TD作为自己内部的对象进行包装,上层对象通过调用本层接口完成所需要的功能,而不必关心ED和TD的细节。
 
通过OHCI接口进行数据收发,最主要的工作就是确定ED和TD队列。在网上广为流传的周立功公司的相关资料以及该公司出版的《ARM嵌入式系统软件开发实例》(一)、(二)中,关于ED和TD的处理非常复杂,甚至为此建立了一个管理机制,包括队列的建立、插入、删除、释放等一系列操作。
 
其实对于一般的嵌入式系统来说,没有必要把ED和TD搞得这么复杂。在我们的系统中,ED和TD的管理非常简单:把待处理的命令构建为ED和TD队列,然后执行,等到执行完毕再根据上层代码的需要构建新的队列。也就是说只有等到上一个命令全部执行完毕后,才可以执行下一个命令。这样的处理机制完全可以适应绝大多数的嵌入式系统了。
 
基本上来说,每个端点使用一个ED,譬如对于控制端口的命令,使用一个ED即可,而对于批量端口,则会使用到两个ED,分别对应批量出和批量入端口。
 
对于端点来说,代码中需要注意的参数有如下几个:
l  ED的ToggleCarry
用来确定ED使用哪个数据区收发收据,对于控制端点来说,根据USB规范,每个控制命令总是从Data0开始的,后面再进行切换。因此控制端点的ToggleCarry字段随便设置,而批量端点的该字段需要得到上一次传送完毕后的ToggleCarry的值。
l  TD的DataToggle
用来确定TD使用哪个数据区收发数据。该字段有2个比特,高位=0表示使用ED的ToggleCarry字段的值作为要使用的数据区,=1表示自己控制使用哪一个数据区。根据USB规范,对于控制端点收发数据来说,需要TD自己控制使用哪一个数据区。而对于批量端点,不需要TD自己控制,交由ED进行控制。

相关文章推荐

USB主机控制器驱动——OHCI分析

首先,整个驱动框架的开始,是基于 platform 平台总线的。 struct platform_device s3c_device_usb = { .name = "s3c2410-ohci...

基于OHCI的USB主机 —— 目录

我的《基于OHCI的USB主机》系列文章已经完毕了,我觉得需要建立一个目录,以便需要的人可以迅速找到所需要的文章。本文档的目标就是建立一个该系列文章的目录,可能还会对每个部分进行简单介绍。 第一...

1.3 基于OHCI的USB主机 —— 总体构架

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/228153 ...

1.1基于OHCI的USB主机 —— 前言

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/328233 ...

1.2基于OHCI的USB主机 —— 背景介绍

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/226133 ...

3.17 基于OHCI的USB主机 —— 中断处理程序

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/261181 ...

4.3 基于OHCI的USB主机 —— USB标准请求

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/269441 ...

基于OHCI的USB主机 HCCA

  • 2013年06月22日 20:20
  • 177KB
  • 下载

基于OHCI的USB主机

  • 2013年06月23日 22:17
  • 177KB
  • 下载

s3c2410 usb主机驱动解析ohci-s3c2410.c

以下是平台设备源码#include #include #include #include #include #include #include #include ...
  • eqwewr
  • eqwewr
  • 2011年05月19日 18:46
  • 2184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:3.9 基于OHCI的USB主机 —— OHCI(设计思路)
举报原因:
原因补充:

(最多只允许输入30个字)