网站大量收购独家精品文档,联系QQ:2885784924

《OTG相关协议.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《OTG相关协议

?OTG 相关协议 AttachDetection Protocol (ADT) ? ? ADT协议用来检测设备的连接和断开(在没有总线供电的情况下),原理为设备连接或断开后线路的阻抗发生变化,发起ADT探测的设备用一电流源给Vbus升到一定电压的时间会不同。 SessionRequest Protocol (SRP) ? ? SRP用来请求A设备给Vbus进行供电。由于一般的移动电子设备对功耗要求比较高,因此OTG标准允许A设备平常关闭对总线的供电,而B设备就可以使用SRP 请求A设备打开Vbus,建立一个有效的连接。 Host Negotiation Protocol (HNP) ? ? 对于之前提到过的dual-roledevice,即可以做A设备又可以做B设备。默认情况下是根据USB OTG线的连接情况确定A设备,而HNP可以让dual-role device互联时,在不调换USB OTG线的情况下,通过协商实现A设备、B设备的角色更换。 2.3 ?OTG软件架构 ? ? 根据USB OTG的电气和机械标准,USBOTG Controler需要支持一系列的OTG协议;而Controler Driver理所当然的就需要和这个Controler进行交互,读取状态、发起操作等;当完成了OTG的检测连接、建立连接的工作后,最终需要去让相应USB设备的Host Controler或者Device Controler去进行数据传输,OTG Driver Core则负责这个工作。 图8 OTG软件架构 3 ?Android下USB驱动开发 ? ? 根据之前的介绍,进行USB传输的驱动开发在从设备端需要进行Gadget Driver的开发;在设备端需要进行Host Device Driver的开发。而之前介绍的相应Controler的驱动由于是直接和相关硬件控制器交互,一般由芯片厂商或者平台端完成。由于USB设备的普及应用,USB标准对一些通用的设备:键盘、鼠标、U盘等做了规范,即不同的设备类(USBClass)。对于这些通用设备,由于设备端按照标准进行设计、固件程序由厂商按照标准实现;主机端有对应的标准驱动程序,因此只要安装相应驱动即可。对于自定义的设备或是功能来说: 3.1 ?Host端驱动开发 ? ? 由于HostControler Driver做的工作以及Host Core Driver提供的完善接口,这里的Host端驱动开发相对来说已经是比较简单了。 ? ? 当设备的连接探测、设备信息获取等一系列操作完成后,会遍历注册到核心的Host Device Driver为连接到Host端的设备寻找一个控制驱动,因此在编写驱动时需要写好自己的匹配规则;当编写的驱动注册到后,核心会创建一个字符设备,用户空间一般就通过这个字符设备来读写USB设备,因此驱动中实现读写等其他设备操作接口是最重要的一部分内容。 图9 Host端驱动开发步骤 对于USB设备的读写,之前有提到过在从设备端有多个EndPoint(可寻址的FIFO),所以读写接口的实现就是对这些EndPoint进行操作。USB设备中的端点除了0号端点是双向的(用来初始获取设备信息使用),其他端点都是单向的。读/写接口需要和IN/OUT端点交互,调用核心提供的接口从IN端点中读或者向OUT端点中写。 图10 Host和端点进行数据传输 对于数据传输的方式,USB标准规范了四种传输方式:控制传输(Control Transfers)、中断传输(InterruptTransfers)、同步传输(Isochronous Transfers)、块传输(Bulk Transfers)。USB主机通过控制传输向USB设备读取信息、配置;中断传输具有固定速率、数据量少的数据传输;同步传输适合实时流传输,但是不保证数据正确性;块传输适合大量数据传输,提供错误检测和重传机制。在实际程序中,选定不同的传输方式,只需要使用不同的内核接口即可,而具体的协议过程会由硬件控制器及其驱动来完成。 ? ? 对应于具体函数,可以参考内核中的usb-skeleton.c对应进行了解。对于主要的接口和基本的编写过程下面提供一个简单的草图: 图11 Host端驱动具体函数草图 3.2 ? Device端驱动开发 ? ? 对于Android设备来说,属于USB复合设备(设备上有多个通过USB管理控制的功能)。为了方便用户使用,Android将每种功能对应的gadgetdriver做了重新组织并和应用层交互: 图12 Android下USBdevice端驱动组织 在这样的架构下,USB gadget driver做的事情就是描述自己属于何种类型的设备,USB Host可以访问的端点有哪些、端点的性质,读

文档评论(0)

yingrong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档