Android设备间USB传输(OTG)

admin 2019-3-17 138

1. USB概括     为了同一电脑战核心装备的交心尺度,便利用户利用和端心扩大,Intel战USB-IF构造于1994年开端开辟一个通用总线尺度-- USB(Universal Serial Bus),并正在1995年宣布USB1.0尺度、2000年成长到USB2.0尺度、今朝曾经革新到了USB3.0尺度;别的,USB构造也正在2004年提出了Wireless USB (无线USB)尺度,以顺应无线数据传输的趋向。USB尺度次要从板滞、电气、传输和谈、零碎装备构成和硬件布局等圆里干了标准战描绘。 1.1 USB板滞尺度     USB尺度中对于USB传输线的组成(PVC庇护层、镀锡铜编织、抗扰线等);USB插头、插心的分类,和各自的详细尺寸,借有任务情况温度等停止了具体标准。别的,为了知足数码、挪动装备的任务场景,USB插心、插头借有USB-Mini战USB-Mirco标准(次要是对于交心的尺寸停止了从头界说)。
图1 USB板滞标准概览图 1.2  USB电气尺度     正在电气圆里:USB正在分歧速率下(Low-speed、Full-speed、High-speed)输出、输入启动电路的阻抗请求,线路的旌旗灯号传输延缓,装备电压迟钝度,旌旗灯号衰加,旌旗灯号编解码方法(NRZI),旌旗灯号无效规模等电气参数,USB尺度皆干了标准。     正在电源分派圆里,因为毗连到USB零碎中的器件,毗连线城市形成必定的压落,USB尺度请求给下止端心的最矮电压供应要戴到4.35V,对中交电源的Hub、总线供电的Hub、中界电源的装备、总线供电的装备借有其余分歧的的标准请求。别的,USB尺度规则一切毗连装备皆必需可以加入戚眠,默许形态下戚眠电流为500µ A,假如是撑持叫醒或者是high power端心,戚眠电流为2.5mA。     别的,USB尺度规则,对分歧速率的装备辨别须要硬件上分歧的毗连(如图2):矮速装备须要正在D-交上推电阻、齐速装备须要正在D+交上推电阻、而USB对下速装备规则须要有一个电流启动器(经过电流启动器灌到D+/D-上发生压落)。当分歧速度的装备毗连时,USB主设规矩是经过D-/D+上的电压变更去辨认辨别的。
图2  USB分歧速率装备硬件毗连 1.3  USB零碎构成     USB尺度中将USB零碎描绘为三个部份:USB主设、USB从设、装备间联通。一个USB主设须要按照和谈对于数据的传输添加响应的和谈疑息和和谈的剖析(Protocol Engine);须要对于传输的数据停止串止化及解串止化(SIE-Serial Interface Engine);须要对于数据传输的错误停止检测、处置(ErrorHandling)等:
图3 USB Host Controler架构 而硬件层上须要对于USB主设停止节制,读守信息等任务(Host Controler Driver);共时须要有一部份硬件对于毗连到USB主设上的从装备停止办理、节制(USB Device Driver);因为对于特定从装备的办理、节制的数据终极仍是须要颠末USB主设实践收收,是以正在HCD战UDD之间有一其中间层(Host Core Driver)。     USB从设也须要一个和谈引擎去依照USB和谈尺度收收、接纳旌旗灯号;别的USB从设有很多可觅址的FIFO慢冲区,USB主设详细上便是战那些FIFO停止数据接互。一样,正在硬件架构上,USB从设也有战USB从节制器接互的Device Controler Driver和战从设上的详细装备停止接互的USBGadget Driver,两头层则是Device Core Driver。
图4 USB Device Controler架构     正在USB零碎中除以上先容的USB主设战USB从设中,借有一个装备不妨对于USB端心停止无效的扩大战办理—USBHub。USB Hub实践上正在USB零碎中是一个非凡的USB从装备,它有着特定的装备描绘符和相干组件去完毕它正在USB零碎中的功效。
图5 USB Hub框图 USB Hub普通会有多个端心用去战其余USB从装备停止毗连(USBDownstream)和一个战USB主装备毗连的端心(USB Upstream);USB Hub动作一个从装备的身份也须要战USB主装备停止数据接互(Hub Controler);而USB Hub动作毗连USB主装备战USB从装备的两头装备,须要对于下行端心战下止端心的数据传输停止办理(Hub Repeater);别的,对毗连到Hub上的分歧速率的装备,须要一个组件(Transaction Translator)把一个速率的数据变换到另外一个速率停止传输。USBHub最主要的一个功效是将毗连到Hub上的从装备上报给USB主装备,USB Hub中有一个非凡的Endpoint FIFO博门去保管Hub端心上的形态。     USB零碎便是由以上的装备战传输和谈和其余标准去构成USB零碎。主设端有Host装备节制器,战Host装备节制器间接毗连的根Hub,背下再毗连其余从装备或者其余Hub,构成一个级联的零碎。
图6 USB零碎拓扑图 2  USB OTG 2.1  OTG概括     USB OTG(On The Go)动作USB2.0的弥补和谈,于2001年由USB-IF提出。它提出的布景是挪动花费类电子产物的缓慢添加,而之前USB和谈的主从和谈尺度让那些电子产物正在分开PC电脑时的数据传输变得艰巨,OTG技巧恰是为懂得决那一成绩的尺度。
图7  经过OTG技巧完成装备间端到端互联     OTG和谈规则毗连时默许环境动作Host的装备为A装备,A装备担任为总线供电;默许动作Device的装备为B装备(USB OTG尺度正在完整兼容USB2.0尺度的根本上,添加了一个ID pin;ID推矮为默许A装备);而有些装备因为散成了Host节制器战Device节制器,既不妨做A装备又不妨干B装备,称为dura-role device。 2.2  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不妨拜访的端面有哪些、端面的本质,读与端面、弥补端面的详细方法。     USB从装备操纵描绘符(Descriptor)去标明装备的属性,USB尺度规则了各类分歧的描绘符,和描绘符的详细实质,USB主装备经过取得那些描绘符的疑息去断定毗连装备的典型、功效等一系列疑息。普通来讲,USB gadget driver中须要关怀的描绘符有:装备描绘符、交心描绘符、端面描绘符、设置装备摆设描绘符,那外面端面描绘符描绘EndPoint的标的目的、年夜小、地点等疑息;装备描绘符描绘装备的出产商疑息、装备类、遵守和谈等疑息;其余描绘符不妨以为是逻辑上的(一个交心对于应一个功效,它对于应着一个启动)。
图13 USB从装备描绘符及逻辑闭系     正在Android对于数据布局的构造战composite框架下,假如须要新减一个USBgadget driver只须要弥补佳Android供给的一个函数指针布局体,正在一个bind_config交心中来把完成佳的composite框架规则的交心参加composite框架中来,详细的端面操纵不妨正在一些可选的交心中保护本人的读写交心(普通正在init中备案装备)。具体可拜见f_adb.c文献。
图14 Android下新减功效须要存眷


严字当头!许家印颁27条恒大军规:九必须、九不准、九开除
编辑:梁静茹
最新回复 (0)
返回
发新帖