android平台USB相关

一,usb composite device driver的编写过程

usb gadget三个层次的整合
probe()函数就是将上层的驱动赋值给底一层的驱动,而bind()函数则是从底层依次给上层的函数分配资源。
linux usb gadget体系结构,从下层到上层的三个层次分别为:UDC Driver,Linux Gadget Framework,composite driver。


二,抓取USB数据包的相关工具

BUS Hound(软件抓取数据包)

专业的USB数据包抓取仪器


三,android平台usb底层驱动和上层的交互

usb上层主要是依靠Usbdevicemanager.java类,Usbdevicemanager.java是在UsbService.java中启动的。
Android.c中的android_work()函数负责向上层上报消息,主要是通过kobject_uevent_env()函数,上层UEventObserver Class的主要作用是监听底层kernel发来的消息,kobject_uevent_env()
usbdevicemanager()函数:在该函数中会创建一个HandlerThread的线程,然后调用UsbHandler(thread.getLooper函数,该函数会调用UsbHandler(Looper looper)函数
上层界面对usb function的设置主要是在usbSettings.java文件里。


四,USB枚举的过程

枚举的含义:枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。主机通过获取设备描述符(主要是VID,PID,SN)来加载合适的驱动程序。
所有的传输都由主机发起,任何时刻整个USB体系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据包USB 采用“令牌包”-“数据包”-“握手包”的传输机制
1 获取设备描述符
2 复位
3 设置地址
4 再次获取设备描述符
5 获取配置描述符
6 获取接口、端点描述符
7 获取字符串描述符
8 选择设备配置


五,USB眼图

眼图是用余辉方式累积叠加显示采集到的串行信号的比特位的结果,叠加后的图形形状看起来和眼睛很像,故名眼图。分析信号质量优劣;眼图测试又称“信号质量测试”
“眼”张开的大小表示了失真的程度,反映了码间串扰的强弱。在无码间串扰和噪声的理想情况下,波形无失真,每个码元将重叠在一起,最终在示波器上看到的是迹线又细又清晰的“眼睛”,“眼”开启得最大。当有码间串扰时,波形失真,码元不完全重合,眼图的迹线就会不清晰,引起“眼”部分闭合。若再加上噪声的影响,则使眼图的线条变得模糊,“眼”开启得小了.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值