2.3 基于OHCI的USB主机 —— 寄存器(传输)

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

启动控制传输

进行控制传输之前,需要设置好相应的ED和TD参数(参见下一章),启动传输时需要设置OHCI寄存器中的控制传输ED头指针寄存器和控制传输的当前ED指针寄存器,然后设置控制寄存器允许处理控制传输列表,控制状态寄存器有控制传输列表数据需要传输,代码如下:
/**
 通过Control端口传输数据
 * @param *ed 需要进行数据收发的ED指针
 * @return 0 - 成功
 */
short ohciCtrlXfer(AT91S_UHP_ED *ed)
{
    // Programming the CHED
    pUhp->UHP_HcControlHeadED = (unsigned int) ed;
 
    // Programming the CCED
    pUhp->UHP_HcControlCurrentED = (unsigned int) ed;
 
    // UHP: UHP is now operational and control list processing is enabled
    pUhp->UHP_HcControl = 0x90;
   
    // UHP: Notify the Hc that the Control list is filled
    pUhp->UHP_HcCommandStatus = OHCI_HC_COMMAND_STATUS_CLF;
   
    return 0;
}
 

启动批量传输

启动批量传输的流程与控制传输类似,只不过相应寄存器换为批量传输的寄存器了:
/**
 通过Bulk端口传输数据
 * @param *ed 需要进行数据收发的ED指针
 * @return 0 - 成功
 */
short ohciBulkXfer(AT91S_UHP_ED *ed)
{
    // 禁止ED
    pUhp->UHP_HcControl = 0x180;
    pUhp->UHP_HcCommandStatus = 0x00;
   
    // Programming the BHED
    pUhp->UHP_HcBulkHeadED = (unsigned int) ed;
 
    // Programming the BCED
    pUhp->UHP_HcBulkCurrentED = (unsigned int) ed;
 
    // UHP: UHP is now operational and control list processing is enabled
    pUhp->UHP_HcControl = 0x0A0;
   
    // UHP: Notify the Hc that the Bulk list is filled
    pUhp->UHP_HcCommandStatus = OHCI_HC_COMMAND_STATUS_BLF;
   
    return 0;
}
 

3.2 基于OHCI的USB主机 —— OHCI(传输描述符)

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

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

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

3.16 基于OHCI的USB主机 —— 中断向量处理

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

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

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

基于OHCI的USB主机 —— 目录

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

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

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

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

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

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

在我们的系统中,USB主机就是用来对U盘进行读写操作,因此在设计和构架上就完全围绕这个目的而进行。整个系统所涉及到的内容比较多,按照嵌入式系统开发的一般原则,采用层次化的体系结构,将系统按照功能划分为...
  • zzobin
  • zzobin
  • 2013年02月01日 11:08
  • 375

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

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

USB驱动程序(一)————USB主机控制器驱动——OHCI分析

本文以 2440-ohci 驱动为例,简单分析 USB 主机控制器驱动 根 Hub 的注册过程,以及 USB设备的枚举过程,并不涉及USB协议,单纯分析驱动框架流程。无论是hub还是普通的usb设备,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2.3 基于OHCI的USB主机 —— 寄存器(传输)
举报原因:
原因补充:

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