Android usb流程分析

Android usb流程分析

ID:42614226

大小:2.01 MB

页数:19页

时间:2019-09-18

Android usb流程分析_第1页
Android usb流程分析_第2页
Android usb流程分析_第3页
Android usb流程分析_第4页
Android usb流程分析_第5页
资源描述:

《Android usb流程分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Androidusb流程分析文档以UMS(usbmassstorage)为例来分析流程,主要按照图中红线来分析(即从插入USB开始到状态栏弹框,然后又从选择UMS功能开始往下的流程)。以前没有看过USB相关代码,网上也很少有分析usbFRAMEWORK相关的东西,文档中可能存在错误,如果发现欢迎指正。总体框图1.KernelUSB流程LINUXKERNELGADGET架构LinuxUSBGadget分三层架构,层次关系从上到下一层:USBGadget功能层。BSP/Driver开发者通常是要实现这一层,从而实现一个具体的设备驱动,如Anddroid在此层实现了adb,mt

2、p,mass_storage等。浏览参考关注此层代码时,会发现“composite”是此层的关键字,此层中关键的数据结构是:struct usb_composite_driver。这一层的驱动文件一般为:driver/usb/gadget/android.c(android实现的)或driver/usb/gadget/serial.c(传统Linux实现的USB转串口)。二层:USB设备层(usbcore)。这一层是Linux内核开发维护者实现的,与我们没太大关系,不用我们操心,我们只关心其的一些接口就行。浏览参考关注此层时,会发现“gadget”是此层的关键字,此层的关

3、键数据结构是:usb_gadget_driver,usb_composite_dev。这层主要的一个驱动文件为:driver/usb/gadget/composite.c三层:USB设备控制器驱动层。这一层主要是与CPU、CPUUSB控制器有关,与硬件紧密相关,主要它和USB控制器牵扯在一起,涉及有寄存器、时钟、DMA等等。但是这一层往往是由芯片厂商去实现。我们一般仅需在板级文件中处理好所需要的USB接口即可。这层的关键字就是“UDC”,主要驱动文件命名含“udc”关键字,一般与CPU或芯片厂商有关,如MTKUDC驱动在kernel/mediatek/platform/m

4、t6592/kernel/drivers/usb20/目录下。USBGadget的三层架构的关系可以用一句简单的话去概括三层的关系:USBGadget功能层调用USB设备层的接口,USB设备层调用USB设备控制器驱动层的接口,然后USB设备控制器驱动层回调USB设备层,USB设备层回调USBGadget功能层。USB设备驱动层:USBDEVICE注册Mt_devs.cDriver:Usb20.c(doov6592kkkernelmediatekplatformmt6592kerneldriversusb20):Probe:重新注册了一个"musb-hdrc"

5、设备,然后在kernel/drivers/usb/musb/musb_core.c加载musb-hdrc驱动,执行PROBE,这里才是真正的加载驱动,内存,中断,DMA等资源申请,并初始化USB.musb_probeàmusb_init_controlleràmusb_gadget_setupàusb_add_gadget_udc加入了LINUXUSB框架了。Android.c注册的android_usb_function:在SYS下创建一系列文件,对应接口XX_show/store充电器插入中断检测电路USB插入中断流程:USB插入中断àWAKEUPPMICTHERAD

6、àif((((int_status_val_0)&(0x0400))>>10)==1){chrdet_int_handler();}àdo_chrdet_int_taskàmt_battery_charger_detect_checkàmt_usb_connectàmusb_start(mtk_musb);*ProgramtheHDRCtostart(enableinterrupts,dma,etc.).à开始USB枚举àandroid.candroid_setupàandroid_workàkobject_uevent_envàUSBserviceueventobser

7、ver收到UEVENT事件。。。。PMIC中断,检测到充电器中断Battery里判断chargertype,然后会使能USB,等待主机发枚举包。收到主机发来的枚举包,会调用到android_setup完成枚举,android_setup会调用android_work发uevent事件。2.UsbService相关/***UsbServicemanagesallUSBrelatedstate,includingbothhostanddevicesupport.*Hostrelatedeventsandcallsaredelega

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。