Android手机的USB

Android手机的USB
Android的手机很少使用USB Host功能,不过很多平板上倒是有,其实Android USB Host功能比较简单,就是驱动USB Controller和Port的驱动程序而已。我们主要讨论USB Slave功能,这是每一个USB手机上没都有的。
我们一般如何使用USB呢?基本上有如下几个功能。
1,充电
2,连接到电脑,当作大硬盘使用
3,连接到电脑,出现MTP或者PTP
4,连接到电脑,支持adb命令
5,连接到电脑,支持各个厂商自己的协议,例如三星Kies 华为的HSuite LG的LG套件
6,连接到电脑,实现USB网卡的功能,也就是所谓的USB捆绑

其实Android的OS是基于linux的,所以,Android的USB支持,就是linux的USB支持。要了解Android的USB支持,必须懂一个gadget的概念。Linux-USB Gadget 驱动框架实现了 USB 协议定义的设备端的软件功能。
一个UDC(usb设备控制器)上面要挂一个usb_gadget_driver,usb_composite_dev挂到UDC的gadget上,usb_composite_driver挂到usb_composite_dev上,然后在usb_composite_dev上挂上一个usb_configuration配置,然后在usb_configuration的function链表中挂一个function,并且把function写入对应的config 的interface数组中。这就是整个流程。
所以,USB实现不同的功能,就是建立起系统不同的function,然后按照协议制定方式,给其提供相应的数据。
在android里面,有一个重要的prop设置,persist.sys.usb.config我们可以通过这个配置,设置支持不同的功能
例如adb shell setprop persist.sys.usb.config mtp,adb,acm
mtp就是支持媒体传输协议(Media Transfer Protocol,MTP)
acm就是支持USB模拟串口的功能,是microsoft定义的一种标准设备,不需要另外安装主机端驱动,就可以驱动它。
adb就是google的调试桥了,主机端需要状态相应的驱动程序。
....


原文地址:https://www.cnblogs.com/javawebsoa/p/3005893.html