原帖地址:http://blog.csdn.net/zkami/article/details/2508136

Linux USB "On-The-Go"(OTG) on OMAP H2 软件架构分析(一)

本文参考David rownell的文章http://www.linux-usb.org/gadget/h2-otg.html。介绍了linux2.6中关于usb-otg的软件体系结构。在刚结束的基于本公司usb-otg chip的solution也主要参考了omap的构架。如需引用请注明出处:http://blog.csdn.net/zkami 作者:ZhengKui

OMAP H2 Platform简介

  • <!--[if !supportLists]--><!--[endif]-->集成了3个USB控制器:OHCI host, USB Device Controller(UDC), OTG controller. 都支持full speed (12Mbit/s)
  • 在H2的板子上应该有Mini-AB的插口。根据OTG spec规定所有双角色(doul-role)设备都应有Mini-AB接口。
  • <!--[endif]-->外部的USB OTG收发器(USB OTG transceiver) --- Philips ISP1301。通过I2C总线控制。
  • <!--[endif]-->通过TI(TPS65010)电源控制器进行电源管理,通过I2C总线控制TPS65010。这样当H2作为B-role设备时,A-role可以给他供电500mA。当H2作为A-role设备时自身可以提供8mA电流。

OTG简介

USB技术的发展,使得PC和周边设备能够通过简单方式、适度的制造成本将各种数据传输速度的设备连接在一起,上述我们提到应用,都可以通过USB总线, 作为PC的周边,在PC的控制下进行数据交换。但这种方便的交换方式,一旦离开了PC,各设备间无法利用USB口进行操作,因为没有一个从设备能够充当 PC一样的Host。     On-The-Go,即OTG技术就是实现在没有Host的情况下,实现从设备间的数据传送。例如数码相机直接连接到打印机上,通过OTG技术,连接两台 设备见的USB口,将拍出的相片立即打印出来;也可以将数码照相机中的数据,通过OTG发送到USB接口的移动硬盘上,野外操作就没有必要携带价格昂贵的 存储卡,或者背一个便携电脑。     USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG)。OTG两用 设备完全符合USB2.0标准,并可提供一定的主机检测能力,支持主机通令协议(HNP)和对话请求协议(SRP)。在OTG中,初始主机设备称为A设 备,外设称为B设备。可用电缆的连接方式来决定初始角色。图2所示是用第5个ID脚确定默认主机的示意图,两用设备使用新型mini-AB插座,从而使 mini-A插头、mini-B插头和mini-AB插座增添了第五个引脚(ID),以用于识别不同的电缆端点。mini-A插头中的ID引脚接地, mini-B插头中的ID引脚浮空。当OTG设备检测到接地的ID引脚时,表 示默认的是A设备(主机),而检测到ID引脚浮这的设备则认为是B设备(外设)。系统一旦连接后,OTG的角色还可以更换。主机与外设采用新的HNP,A 设备作为默认主机半提供VBUS电源,并在检测到有设备连接时复位总线、枚举并配置B设备。OTG标准为USB增添的第二个新协议称为对话请求协议 (SRP)。SRP允许B设备请求A设备打开VBUS电源并启动一次对话。一次OTG对话可通过A设备提供VBUS电源的时间来确定(注:A设备总是为 VBUS供电,即使作为外设)。也可通过A设备关闭VBUS电源来结束一闪会话以节省功耗,这在电池供电产品中是非常重要的。例如,在两台蜂窝电话通过连 接互相交换信息时,一台连接在电费的mini-A端,是A设备,默认为主机。另一台是B设备,默认为外设。当在不需要USB通信时,A设备可以关闭 VBUS线,此时B设备就会检测到该状态并进入功低耗模式。

<!--[if !vml]--><!--[endif]-->

Linux2.6 USB-OTG软件结构

OHCI Host Controller

Driver

Isp1301_omap Driverr

Device Controller Driverr

OHCI Host Controller

Isp1301 Driverr

Device Controller

USB Core

USB Device Class Driver(Mass storage...)

USB Device Class Driver(Mass storage...)

Gadget Driverr

<!--[if !vml]--><!--[endif]-->

相对于原来的USB Module, 当前的kernel做了以下更新来支持OTG功能:

<!--[if !supportLists]-->接口的更新:

  1. <!--[if !supportLists]--><!--[endif]-->USB Device Controller Driver导出一些新的接口
  2. USB Gadget Driver 有一些新的功能。
  3. <!--[endif]-->在主机端 “usbcore”模块需要一些新的OTG相关的能力,来负责对设备枚举。这个枚举的过程对设备端是不可见的。同时,主机端还需要一些挂起(suspend), 唤醒(resume), 远程唤醒(remote wakeup)的能力来支持HNP协议。这就涉及到Linux电源管理的接口。
  4. <!--[endif]-->主机端还要定义一个OTG “Targeted Peripheral List”。毕竟作为一个嵌入式设备不用支持每一种设备。而只需支持自己定义的“Targeted Peripheral List”中的设备。

USB 控制器驱动程序的更新:

  1. 对OTG核心协议的支持封装在了otg_transceiver object中。对于H2来说, isp1301_omap driver控制了收发器(transceiver)和OMAP OTG controller, 并且通过usb_bus和usb_gadget 接口与OHCI和UDC drivers(设备端控制器驱动程序)通信。如下图所示:
  2. 在”USB Gadget”框架中,需要omap_udc driver对上层标准gadget drivers提供良好的支持。这些gadget drivers都基于gadget接口,包括Ethernet/RNDIS, Mass Storage, serial/ACM等等。在gadget driver中需要定义好设备的各项属性包括端点数,DMA, ISO传输等。类似于写设备的firmware。
  3. 在linux2.6中已经可以支持OHCI host controller, 通过ohci_hcd可以访问大量的并正在增长的usb device driver。

    OHCI driver

    Isp1301_omap driver

    UDC driver

    OHCI host controller

    Usb device controller

    Isp1301

    OMAP OTG controller

    Usb

    bus

    gadget

    <!--[if !vml]-->

<!--[endif]-->     以下会针对每一部份分别进行分析。(未完待续)<!--[endif]-->

Linux USB On-The-Go(OTG) on OMAP H2 软件架构分析(一)相关推荐

  1. Linux USB On-The-Go(OTG) on OMAP H2 软件架构分析(二)

    原帖地址:http://blog.csdn.net/zkami/article/details/2586831 编程接口的变化 为了支持OTG特性,编程接口上作了尽可能小的改动.这些改动并不会改变已有 ...

  2. linux 电源管理源码分析,Linux 3.8.1 电源管理之OMAP Voltage Domain分析

    本系列文章将分析Linux对于OMAP的电源管理功能,以AM33XX作为实例(目前的硬件平台先主要关注AM335xStarterKit开发板),在必要时穿插其他相关内容. 在linux-3.8.1/a ...

  3. linux usb驱动——OTG数据线与普通数据线区别

    OTG - On the go OTG设备--设备即支持host功能又支持device功能,最常见的设备是手机: 手机连接PC,使用手机的usb host功能: 手机连接u盘,使用手机的usb dev ...

  4. linux usb系统

    1.   简述: USB 出自豪门,一问世便有 IBM,Microsoft,compaq 等前呼后拥,不红实在是没有道理,以致于连三岁小毛孩都知道买游戏手柄要买 USB 的. USB 名气这么大,但 ...

  5. linux usb ehci 系统

    1.   简述: USB 出自豪门,一问世便有 IBM,Microsoft,compaq 等前呼后拥,不红实在是没有道理,以致于连三岁小毛孩都知道买游戏手柄要买 USB 的. USB 名气这么大,但 ...

  6. linux usb系统【全面】

    转自:http://blog.csdn.net/ljzcom/article/details/8574411 1.   简述: USB 出自豪门,一问世便有 IBM,Microsoft,compaq ...

  7. 转载 linux usb

    本篇为转自他人博客,因找不到出处,若有侵权,请留言告知,会即刻删除. 1.   简述: USB 出自豪门,一问世便有 IBM,Microsoft,compaq 等前呼后拥,不红实在是没有道理,以致于连 ...

  8. linux usb host复位,Linux USB Host-Controller的初始化代码框架分析

    Linux USB Host-Controller的初始化代码框架分析 http://blog.csdn.net/zkami usb_hcd_omap_probe (const struct hc_d ...

  9. 【正点原子Linux连载】第六十七章 Linux USB驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

最新文章

  1. 盘点开发中那些常用的MySQL优化
  2. 111.二叉树的最小深度
  3. lintcode-easy-Insertion Sort List
  4. poj2065 SETI
  5. CLASS ALV Event
  6. 百练OJ:2746:约瑟夫问题
  7. vuex 对象嵌套属性的修改 mutations set 很方便的写法
  8. 空间注意力机制sam_Attention注意力机制介绍
  9. 新手赛(2) 第五题 因素和问题
  10. 2020中国数字化转型优秀案例征集
  11. 嵌入式-第一季-第4课
  12. 华为游戏帧率测试的软件,华为手机怎么在游戏内显示帧率 | 手游网游页游攻略大全...
  13. 齿轮传动设计分析软件 KISSsoft 03-2018 中英文版 带安装视频
  14. VMware 中Fedora系统连接网络问题!
  15. rasp 系统_一类PHP RASP实现
  16. 小米笔记本如何开启VT虚拟化
  17. WebForm:毒药还是利器?
  18. 大数据中心显示大屏幕用液晶拼接屏还是led显示屏?
  19. 1024 发福利,送你一份珍藏依旧的 Java,大数据礼包,确定不收藏 ?拒绝白嫖 !
  20. windchill安全标签客制化

热门文章

  1. Docker全命令详解
  2. 数学专业考研学计算机,科学网—数学专业考研的那些事 - 苏先锋的博文
  3. 第八届省赛题 引水工程
  4. 外卖跑腿app同城配送系统功能
  5. 2022, GECCO,Taylor Genetic Programming for Symbolic Regression
  6. 循证护理教育中的移动辅助同伴评估方法
  7. Pytorch教程入门系列3
  8. MYSQL函数 group_concat巨坑!!!
  9. [软件] NSS2.2一款用于知识图谱与网络科学服务的软件
  10. rename 批量修改文件名