下面的表显示了每个接口是如何被设置的调用流程。调用流程只显示了串行接口是如何被使能的,但是所有的一些功能
驱动都是以一种相似的方式被使能的。这一连串的操作序列是在一个1被写入到使能系统文件中后被唤醒的。
USB接口调用流程
8.1 安卓USB composition 框架
从Linux内核3.0开始,主要的变化包括USB composition 是如何被定义的和使能的。在更早些时候,USB composition 信息,例如, PID/VID ,功能列表,等被定义在内核空间。在Linux内核3.0以后,这些都是通过执行用户空间的命令来完成的。因此,定义是在用户空间的文件中被处理的。
下面是一个从<apps root>/system/core/rootdir/etc/init.qcom.usb.rc文件中捕获的片段
on
property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor 05C6
write /sys/class/android_usb/android0/idProduct 9025
write /sys/class/android_usb/android0/f_diag/clients diag
write /sys/class/android_usb/android0/f_serial/transports smd,tty
write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
Init.qcom.usb.rc 包含每个USB composition 的声明。当setprop