android usb 分析笔记

本文主要介绍了Android系统的USB驱动工作原理,从drivers/usb/gadget/android.c出发,详细讲解了init()函数如何创建虚拟设备和设备节点,以及如何利用usb composite driver framework进行设备侦测。还提到了android_work()回调函数在连接和断开时的角色,以及android_usb_ubind()和android_disconnect()的功能。此外,文章还探讨了android_setup()函数中对不同USB功能的初始化过程,特别是对RNDIS功能的处理。
摘要由CSDN通过智能技术生成

virtual device: android_usb

首先来看 drivers/usb/gadget/android.c。

init() 创建了虚拟设备   /sys/devices/virtual/android_usb/.

static int __init init(void)
{
	struct android_dev *dev;
	int err;

	android_class = class_create(THIS_MODULE, "android_usb");
	if (IS_ERR(android_class))
		return PTR_ERR(android_class);

}

其中,指定了 Google usb 的缺省信息:

static const char longname[] = "Gadget Android";

/* Default vendor and product IDs, overridden by userspace */
#define VENDOR_ID		0x18D1
#define PRODUCT_ID		0x0001

定义了一个非常重要的 android_usb_function 数据结构。

struct android_usb_function {
	char *name;
	void *config;

	struct device *dev;
	char *dev_name;
	struct device_attribute **attributes;

	/* for android_dev.enabled_functions */
	struct list_head enable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值