2024年3月12日发(作者:)

Android USB 驱动分析

一、USB驱动代码架构和使用

1、代码简介

USB驱动代码在/drivers/usb/gadget下,有三个文件:android.c,f_adb.c,

f_mass_storage.c;g_ 是由这三个文件编译而来,其中android.c 依

赖于

f_adb.c 和 f_mass_storage.c(这两个文件之间无依赖关系)。

可在android.c中看到:

static int __init android_bind_config(struct usb_configuration *c)

{

struct android_dev *dev = _android_dev;

int ret;

printk(KERN_DEBUG "android_bind_confign");

ret = mass_storage_function_add(dev->cdev, c, dev->nluns);

if (ret)

return ret;

return adb_function_add(dev->cdev, c);

}

2、驱动使用

要使USB mass storage连接到主机:

打开/sys/devices/platform/usb_mass_storage/lun0/file文件,向file文件写入

一个存储

设备的路径,例如/dev/block/vold/179:0 (major:minor)路径;

这里的usb_mass_storage根据实际应用可以改的,由platform_device_register

函数的参数决

定。

例如:

static struct platform_device fsg_platform_device =