从usb_vendors.c文件中,可以知道vendor信息是被"固化"adbs里面。linux bin文件怎么安装(那是否就可以解释为啥linux不需要adb驱动呢)

adbs_init_vendors
usb_linux.c文件的函数列表

adbs_usb_linux_functions
里面读取函数,主要封装linux usb 通用的访问device的方式。
5. adbd 访问的device文件
adb shell su (root权限) lsof > /sdcard/lsof.data adb pull /sdcard/lsof.data less lsof.data

adbd_access_file
6. adbd源代码分析
调用栈
main(adb.c)main_adb(adb.c)usb_init(usb_linux_client.c)usb_adb_init(usb_linux_client.c)
usb_adb_init的内容, 可以确定adbd确实访问了/dev/android_adb文件(设备结点)

usb_linux_client.c文件定义读取函数,从实现上看它主要通过/dev/android_adb文件与外界通信。

adbd_usb_linux_client_function
7. 串联adbs和adbd(android kernel)
init(android.c)usb_composite_register[&android_usb_driver](android.c)android_bind(android.c)usb_add_config[cdev, &android_config_driver](android.c)android_bind_config(android.c)adb_function_add(f_adb.c)misc_deregister[&adb_device](f_adb.c)static struct miscdevice adb_device = {.minor = MISC_DYNAMIC_MINOR,.name = shortname,.fops = &adb_fops,};static const char shortname[] = "android_adb";
android.c和f_adb.c代码所在路径是/drivers/usb/gadget/ 注意:这里的代码是kernel的源代码,不是Android的源代码(aosp)。如果你也下载了linux kernel, 会发现没有这两个文件的。返回搜狐,查看更多
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-88243-2.html
台湾已被大陆牢牢控制