USB设备无私布奉献的一生

USB从出生到死亡,其中会经历些什么,他对外界要求多吗?  对其中充满好奇心!

Usb的设备是非常复杂的,它由许多不同的逻辑单元组成,这些逻辑单元之间的关系可以简单地描述如下:

l 设备(usb_device)通常具有一个或者更多的配置(usb_host_config)

l 配置通常具有一个或者更多的接口(usb_interface)

l 接口通常具有一个或者更多的设置(usb_host_interface )

l 设置没有或者具有一个以上的端点(usb_host_endpoint)

 

 

1. USB设备的出生

当你将usb 设备连接在hub 的某个端口上,hub 检测到有设备连接了进来,于是精神头儿就上来了,就觉得有必要为设备做点什么。它会为设备分配一个struct usb_device 结构的对象并初始化,并调用设备模型提供的接口将设备添加到usb 总线的设备列表里,然后usb 总线会遍历驱动列表里的每个驱动,调用自己的match 函数看它们和你的设备或接口是否匹配。

 

hub 检测到自己的某个端口有设备连接了进来后,它会调用core 里的usb_alloc_dev 函数为struct usb_device 结构的对象申请内存,这个函数在usb.c 文件里定义:
struct usb_device * usb_alloc_dev(struct usb_device *parent, struct usb_bus *bus, unsigned port1)


usb_alloc_dev 函数就相当于usb 设备的构造函数,参数parent 是设备连接的那个hub,bus 是设备连接的那条总线,port1 就是设备连接在hub 上的那个端口。

 

2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值