usb驱动开发8——配置描述符

本文介绍了USB驱动开发中的配置描述符,包括配置描述符的结构、接口数组、缓存机制以及GET_DESCRIPTOR请求。重点讲解了配置描述符的bConfigurationValue、bmAttributes和bMaxPower字段,同时提及了非标准速度配置描述符USB_DT_OTHER_SPEED_CONFIG。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面分析了usb的四大描述符之端点描述符,接口描述符(每一个接口对应一个功能,与之配备相应驱动),下面是看配置描述符还是看设备描述符呢??我们知道,设备大于配置,配置大于接口,接口可以有多种设置。
我们还是按照从小到大的顺序,继续看配置结构体吧!

struct usb_host_config {
   

struct usb_config_descriptor desc;

char *string; /* iConfiguration string, if present */

/* the interfaces associated with this configuration,

* stored in no particular order */

struct usb_interface *interface[USB_MAXINTERFACES];

/* Interface information available even when this is not the

* active configuration */

struct usb_interface_cache *intf_cache[USB_MAXINTERFACES];

unsigned char *extra; /* Extra descriptors */

int extralen;

};

和前面分析一下,我们先略过usb_config_descriptor结构体的分析,大餐总是喜欢最后吃。

string,这个字符串保存了配置描述符iConfiguration字段对应的字符串描述符信息。

interface[USB_MAXINTERFACES],配置所包含的接口。注释里说的很明确,这个数组的顺序未必是按照配置里接口号的顺序,所以你要想得到某个接口号对应的struct usb_interface结构对象,就必须使用drivers/usb/usb.c里定义的usb_ifnum_to_if函数。

struct usb_interface *usb_ifnum_to_if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kcyuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值