adb offline

/dev/usb-ffs/adb
ep0
ep1
ep2

配置目录
/sys/kernel/config/usb_gadget/g1
/sys/kernel/config/usb_gadget/g1/configs/c.1
/sys/kernel/config/usb_gadget/g1/functions/ffs.adb

在 Linux-3.8 以后,Android 的内核分支,便去掉了 f_adb,改使用 USB function FS,在用户空间实现 USB adb 功能。

configfs on /sys/kernel/config type configfs (rw,relatime)
mount none cfg -t configfs


adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb

在adbd的初始化流程中,我们在adbd_main()函数中看到有调用usb_init()函数,usb_init()函数就是usb初始化的入口。我们先看看usb_init()函数是如何被调用的:

bool is_usb = false;
if (access(USB_FFS_ADB_EP0, F_OK) == 0) {
    // Listen on USB.
    usb_init();
    is_usb = true;
}


void usb_init() {
    dummy_fd = adb_open("/dev/null", O_WRONLY);
    CHECK_NE(dummy_fd, -1);
    usb_ffs_init();
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注